some fixes and new features
This commit is contained in:
@@ -3,6 +3,7 @@ package ai
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"kurumibot/laniakea"
|
||||
@@ -100,6 +101,7 @@ type CreateCompletionReq struct {
|
||||
}
|
||||
|
||||
var MaxRetriesErr = fmt.Errorf("max retries exceeded")
|
||||
var BadResponseErr = fmt.Errorf("bad_response_status_code")
|
||||
|
||||
func (o *OpenAIAPI) DoRequest(url string, params any, retries int) ([]byte, error) {
|
||||
responseBody := make([]byte, 0)
|
||||
@@ -134,6 +136,27 @@ func (o *OpenAIAPI) DoRequest(url string, params any, retries int) ([]byte, erro
|
||||
if err != nil {
|
||||
return responseBody, err
|
||||
}
|
||||
|
||||
tempData := make(map[string]any)
|
||||
err = json.Unmarshal(responseBody, &tempData)
|
||||
if err != nil {
|
||||
return responseBody, err
|
||||
}
|
||||
// {"error":{"message":"openai_error","type":"bad_response_status_code","param":"","code":"bad_response_status_code"}}
|
||||
if errorData, ok := tempData["error"]; ok {
|
||||
o.Logger.Error(errorData)
|
||||
errorPayload := errorData.(map[string]interface{})
|
||||
code := errorPayload["code"].(string)
|
||||
if code == "bad_response_status_code" {
|
||||
if retries >= 3 {
|
||||
return responseBody, BadResponseErr
|
||||
}
|
||||
o.Logger.Debug("Retrying because of bad response status code")
|
||||
return o.DoRequest(url, params, retries+1)
|
||||
}
|
||||
return nil, errors.New(code)
|
||||
}
|
||||
|
||||
return responseBody, err
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user