diff --git a/dto/openai_request.go b/dto/openai_request.go index f33b2c1e..7337004f 100644 --- a/dto/openai_request.go +++ b/dto/openai_request.go @@ -29,6 +29,7 @@ type GeneralOpenAIRequest struct { MaxTokens uint `json:"max_tokens,omitempty"` MaxCompletionTokens uint `json:"max_completion_tokens,omitempty"` ReasoningEffort string `json:"reasoning_effort,omitempty"` + Verbosity json.RawMessage `json:"verbosity,omitempty"` // gpt-5 Temperature *float64 `json:"temperature,omitempty"` TopP float64 `json:"top_p,omitempty"` TopK int `json:"top_k,omitempty"` diff --git a/relay/channel/aws/relay-aws.go b/relay/channel/aws/relay-aws.go index 04427ab8..5822e363 100644 --- a/relay/channel/aws/relay-aws.go +++ b/relay/channel/aws/relay-aws.go @@ -1,7 +1,6 @@ package aws import ( - "encoding/json" "fmt" "net/http" "one-api/common" @@ -113,14 +112,14 @@ func awsHandler(c *gin.Context, info *relaycommon.RelayInfo, requestMode int) (* } claudeReq := claudeReq_.(*dto.ClaudeRequest) awsClaudeReq := copyRequest(claudeReq) - awsReq.Body, err = json.Marshal(awsClaudeReq) + awsReq.Body, err = common.Marshal(awsClaudeReq) if err != nil { return types.NewError(errors.Wrap(err, "marshal request"), types.ErrorCodeBadResponseBody), nil } awsResp, err := awsCli.InvokeModel(c.Request.Context(), awsReq) if err != nil { - return types.NewError(errors.Wrap(err, "InvokeModel"), types.ErrorCodeChannelAwsClientError), nil + return types.NewOpenAIError(errors.Wrap(err, "InvokeModel"), types.ErrorCodeAwsInvokeError, http.StatusInternalServerError), nil } claudeInfo := &claude.ClaudeResponseInfo{ @@ -165,14 +164,14 @@ func awsStreamHandler(c *gin.Context, resp *http.Response, info *relaycommon.Rel claudeReq := claudeReq_.(*dto.ClaudeRequest) awsClaudeReq := copyRequest(claudeReq) - awsReq.Body, err = json.Marshal(awsClaudeReq) + awsReq.Body, err = common.Marshal(awsClaudeReq) if err != nil { return types.NewError(errors.Wrap(err, "marshal request"), types.ErrorCodeBadResponseBody), nil } awsResp, err := awsCli.InvokeModelWithResponseStream(c.Request.Context(), awsReq) if err != nil { - return types.NewError(errors.Wrap(err, "InvokeModelWithResponseStream"), types.ErrorCodeChannelAwsClientError), nil + return types.NewOpenAIError(errors.Wrap(err, "InvokeModelWithResponseStream"), types.ErrorCodeAwsInvokeError, http.StatusInternalServerError), nil } stream := awsResp.GetStream() defer stream.Close() diff --git a/types/error.go b/types/error.go index d3dd29e1..5a143612 100644 --- a/types/error.go +++ b/types/error.go @@ -65,6 +65,7 @@ const ( ErrorCodeBadResponse ErrorCode = "bad_response" ErrorCodeBadResponseBody ErrorCode = "bad_response_body" ErrorCodeEmptyResponse ErrorCode = "empty_response" + ErrorCodeAwsInvokeError ErrorCode = "aws_invoke_error" // sql error ErrorCodeQueryDataError ErrorCode = "query_data_error"