feat(relay-claude): mapping stop reason and send text delta on block start type
- convert claude stop reason "max_tokens" to openai "length" - send content_block_start content text delta
This commit is contained in:
@@ -32,7 +32,7 @@ func stopReasonClaude2OpenAI(reason string) string {
|
|||||||
case "end_turn":
|
case "end_turn":
|
||||||
return "stop"
|
return "stop"
|
||||||
case "max_tokens":
|
case "max_tokens":
|
||||||
return "max_tokens"
|
return "length"
|
||||||
case "tool_use":
|
case "tool_use":
|
||||||
return "tool_calls"
|
return "tool_calls"
|
||||||
default:
|
default:
|
||||||
@@ -426,7 +426,10 @@ func StreamResponseClaude2OpenAI(reqMode int, claudeResponse *dto.ClaudeResponse
|
|||||||
choice.Delta.Role = "assistant"
|
choice.Delta.Role = "assistant"
|
||||||
} else if claudeResponse.Type == "content_block_start" {
|
} else if claudeResponse.Type == "content_block_start" {
|
||||||
if claudeResponse.ContentBlock != nil {
|
if claudeResponse.ContentBlock != nil {
|
||||||
//choice.Delta.SetContentString(claudeResponse.ContentBlock.Text)
|
// 如果是文本块,尽可能发送首段文本(若存在)
|
||||||
|
if claudeResponse.ContentBlock.Type == "text" && claudeResponse.ContentBlock.Text != nil {
|
||||||
|
choice.Delta.SetContentString(*claudeResponse.ContentBlock.Text)
|
||||||
|
}
|
||||||
if claudeResponse.ContentBlock.Type == "tool_use" {
|
if claudeResponse.ContentBlock.Type == "tool_use" {
|
||||||
tools = append(tools, dto.ToolCallResponse{
|
tools = append(tools, dto.ToolCallResponse{
|
||||||
Index: common.GetPointer(fcIdx),
|
Index: common.GetPointer(fcIdx),
|
||||||
|
|||||||
Reference in New Issue
Block a user