refactor: Update ClaudeResponse error handling to use pointer for ClaudeError and improve nil checks in response processing

This commit is contained in:
1808837298@qq.com
2025-03-16 23:14:45 +08:00
parent 962e803d8a
commit 8c7c39550c
2 changed files with 3 additions and 3 deletions

View File

@@ -183,7 +183,7 @@ type ClaudeResponse struct {
Completion string `json:"completion,omitempty"` Completion string `json:"completion,omitempty"`
StopReason string `json:"stop_reason,omitempty"` StopReason string `json:"stop_reason,omitempty"`
Model string `json:"model,omitempty"` Model string `json:"model,omitempty"`
Error ClaudeError `json:"error,omitempty"` Error *ClaudeError `json:"error,omitempty"`
Usage *ClaudeUsage `json:"usage,omitempty"` Usage *ClaudeUsage `json:"usage,omitempty"`
Index *int `json:"index,omitempty"` Index *int `json:"index,omitempty"`
ContentBlock *ClaudeMediaMessage `json:"content_block,omitempty"` ContentBlock *ClaudeMediaMessage `json:"content_block,omitempty"`

View File

@@ -485,7 +485,7 @@ func HandleStreamResponseData(c *gin.Context, info *relaycommon.RelayInfo, claud
common.SysError("error unmarshalling stream response: " + err.Error()) common.SysError("error unmarshalling stream response: " + err.Error())
return service.OpenAIErrorWrapper(err, "stream_response_error", http.StatusInternalServerError) return service.OpenAIErrorWrapper(err, "stream_response_error", http.StatusInternalServerError)
} }
if claudeResponse.Error.Type != "" { if claudeResponse.Error != nil && claudeResponse.Error.Type != "" {
return &dto.OpenAIErrorWithStatusCode{ return &dto.OpenAIErrorWithStatusCode{
Error: dto.OpenAIError{ Error: dto.OpenAIError{
Code: "stream_response_error", Code: "stream_response_error",
@@ -598,7 +598,7 @@ func HandleClaudeResponseData(c *gin.Context, info *relaycommon.RelayInfo, claud
if err != nil { if err != nil {
return service.OpenAIErrorWrapper(err, "unmarshal_claude_response_failed", http.StatusInternalServerError) return service.OpenAIErrorWrapper(err, "unmarshal_claude_response_failed", http.StatusInternalServerError)
} }
if claudeResponse.Error.Type != "" { if claudeResponse.Error != nil && claudeResponse.Error.Type != "" {
return &dto.OpenAIErrorWithStatusCode{ return &dto.OpenAIErrorWithStatusCode{
Error: dto.OpenAIError{ Error: dto.OpenAIError{
Message: claudeResponse.Error.Message, Message: claudeResponse.Error.Message,