From dfe9f4edf912db27dfe73c4978668589276978fd Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Tue, 6 Feb 2024 16:27:11 -0700 Subject: [PATCH 1/2] Make temperature a pointer to allow sending 0 --- chat.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chat.go b/chat.go index efb14fd4c..f8dea74b0 100644 --- a/chat.go +++ b/chat.go @@ -187,7 +187,7 @@ type ChatCompletionRequest struct { Model string `json:"model"` Messages []ChatCompletionMessage `json:"messages"` MaxTokens int `json:"max_tokens,omitempty"` - Temperature float32 `json:"temperature,omitempty"` + Temperature *float32 `json:"temperature,omitempty"` TopP float32 `json:"top_p,omitempty"` N int `json:"n,omitempty"` Stream bool `json:"stream,omitempty"` From d33320ca826f7a7aadcb6a7446766e690c12d8e5 Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Fri, 29 Mar 2024 23:47:00 -0700 Subject: [PATCH 2/2] Ensure the message is always set in error --- client.go | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/client.go b/client.go index 7b1a313a8..7fed54300 100644 --- a/client.go +++ b/client.go @@ -2,8 +2,10 @@ package openai import ( "bufio" + "bytes" "context" "encoding/json" + "errors" "fmt" "io" "net/http" @@ -242,21 +244,18 @@ func (c *Client) fullURL(suffix string, args ...any) string { } func (c *Client) handleErrorResp(resp *http.Response) error { + data, _ := io.ReadAll(resp.Body) var errRes ErrorResponse - err := json.NewDecoder(resp.Body).Decode(&errRes) - if err != nil || errRes.Error == nil { - reqErr := &RequestError{ - HTTPStatusCode: resp.StatusCode, - Err: err, - } - if errRes.Error != nil { - reqErr.Err = errRes.Error - } - return reqErr + err := json.NewDecoder(bytes.NewBuffer(data)).Decode(&errRes) + if err == nil && errRes.Error != nil && errRes.Error.Message != "" { + errRes.Error.HTTPStatusCode = resp.StatusCode + return errRes.Error } - errRes.Error.HTTPStatusCode = resp.StatusCode - return errRes.Error + return &RequestError{ + HTTPStatusCode: resp.StatusCode, + Err: errors.New(string(data)), + } } func containsSubstr(s []string, e string) bool {