Resolving event mismatch in OpenAI2Claude

add stricter validation for content_block_start corresponding to
tool call
and fix the crash issue when Claude Code is processing tool call
This commit is contained in:
Jerry 2025-12-24 14:52:39 +08:00
parent 8ee5c23b48
commit 2504e9ad04

View File

@ -389,25 +389,29 @@ func StreamResponseOpenAI2Claude(openAIResponse *dto.ChatCompletionsStreamRespon
} }
idx := blockIndex idx := blockIndex
claudeResponses = append(claudeResponses, &dto.ClaudeResponse{ if toolCall.Function.Name != "" {
Index: &idx, claudeResponses = append(claudeResponses, &dto.ClaudeResponse{
Type: "content_block_start", Index: &idx,
ContentBlock: &dto.ClaudeMediaMessage{ Type: "content_block_start",
Id: toolCall.ID, ContentBlock: &dto.ClaudeMediaMessage{
Type: "tool_use", Id: toolCall.ID,
Name: toolCall.Function.Name, Type: "tool_use",
Input: map[string]interface{}{}, Name: toolCall.Function.Name,
}, Input: map[string]interface{}{},
}) },
})
}
claudeResponses = append(claudeResponses, &dto.ClaudeResponse{ if len(toolCall.Function.Arguments) > 0 {
Index: &idx, claudeResponses = append(claudeResponses, &dto.ClaudeResponse{
Type: "content_block_delta", Index: &idx,
Delta: &dto.ClaudeMediaMessage{ Type: "content_block_delta",
Type: "input_json_delta", Delta: &dto.ClaudeMediaMessage{
PartialJson: &toolCall.Function.Arguments, Type: "input_json_delta",
}, PartialJson: &toolCall.Function.Arguments,
}) },
})
}
info.ClaudeConvertInfo.Index = blockIndex info.ClaudeConvertInfo.Index = blockIndex
} }