some fixes and new features

This commit is contained in:
2026-01-23 15:14:21 +03:00
parent 336abd5517
commit 65e6dfabd7
9 changed files with 80 additions and 31 deletions

View File

@@ -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
}