diff --git a/pkg/adapter/cozecn_v3_openai.go b/pkg/adapter/cozecn_v3_openai.go index d347d16..287d3dd 100644 --- a/pkg/adapter/cozecn_v3_openai.go +++ b/pkg/adapter/cozecn_v3_openai.go @@ -136,12 +136,27 @@ func CozecnV3ReponseToOpenAIResponse(resp *chat_message_list.MessageListResponse func CozecnV3ReponseToOpenAIResponseStream(resp *streammode.EventData) *myopenai.OpenAIStreamResponse { var choices []myopenai.OpenAIStreamResponseChoice + role := resp.Role + if resp.Content == "" { + role = "assistant" + } + + // 构建 delta:content 保持不变,reasoning_content 独立字段 + delta := myopenai.ResponseDelta{ + Role: role, + Content: resp.Content, + } + + // 如果存在思考内容,添加到 ReasoningContent 字段 + if resp.ReasoningContent != "" { + delta.ReasoningContent = resp.ReasoningContent + } else if resp.Thinking != "" { + delta.ReasoningContent = resp.Thinking + } + choices = append(choices, myopenai.OpenAIStreamResponseChoice{ Index: 0, - Delta: myopenai.ResponseDelta{ - Role: resp.Role, - Content: resp.Content, - }, + Delta: delta, }) usage := myopenai.Usage{ PromptTokens: resp.Usage.InputCount, @@ -153,8 +168,7 @@ func CozecnV3ReponseToOpenAIResponseStream(resp *streammode.EventData) *myopenai Object: "chat.completion.chunk", Created: time.Now().Unix(), Choices: choices, - //Error: errorDetail, - Usage: &usage, + Usage: &usage, } return nil } diff --git a/pkg/llm/devplatform/cozecn_v3/streammode/response.go b/pkg/llm/devplatform/cozecn_v3/streammode/response.go index a5929b9..2abbd2c 100644 --- a/pkg/llm/devplatform/cozecn_v3/streammode/response.go +++ b/pkg/llm/devplatform/cozecn_v3/streammode/response.go @@ -20,4 +20,6 @@ type EventData struct { OutputCount int `json:"output_count"` InputCount int `json:"input_count"` } `json:"usage"` + ReasoningContent string `json:"reasoning_content,omitempty"` // 工作流模式的思考过程(Coze字段) + Thinking string `json:"thinking,omitempty"` // 兼容字段(某些版本可能使用) } diff --git a/pkg/openai/openai_response.go b/pkg/openai/openai_response.go index 53a8932..111eb90 100644 --- a/pkg/openai/openai_response.go +++ b/pkg/openai/openai_response.go @@ -49,9 +49,10 @@ type ResponseMessage struct { // ResponseDelta Delta 定义了对话中的消息结构 type ResponseDelta struct { - Role string `json:"role"` - Content string `json:"content"` - ToolCalls []ToolCall `json:"tool_calls,omitempty"` + Role string `json:"role"` + Content string `json:"content,omitempty"` + ReasoningContent string `json:"reasoning_content,omitempty"` // 思考内容(兼容Coze工作流) + ToolCalls []ToolCall `json:"tool_calls,omitempty"` } // Usage 定义了使用统计的结构