package openai import "net/http" func writeOpenAIError(w http.ResponseWriter, status int, message string) { writeOpenAIErrorWithCode(w, status, message, "") } func writeOpenAIErrorWithCode(w http.ResponseWriter, status int, message, code string) { if code == "" { code = openAIErrorCode(status) } writeJSON(w, status, map[string]any{ "error": map[string]any{ "message": message, "type": openAIErrorType(status), "code": code, "param": nil, }, }) } func openAIErrorType(status int) string { switch status { case http.StatusBadRequest: return "invalid_request_error" case http.StatusUnauthorized: return "authentication_error" case http.StatusForbidden: return "permission_error" case http.StatusTooManyRequests: return "rate_limit_error" case http.StatusServiceUnavailable: return "service_unavailable_error" default: if status >= 500 { return "api_error" } return "invalid_request_error" } } func openAIErrorCode(status int) string { switch status { case http.StatusBadRequest: return "invalid_request" case http.StatusUnauthorized: return "authentication_failed" case http.StatusForbidden: return "forbidden" case http.StatusTooManyRequests: return "rate_limit_exceeded" case http.StatusNotFound: return "not_found" case http.StatusServiceUnavailable: return "service_unavailable" default: if status >= 500 { return "internal_error" } return "invalid_request" } }