• sakurawztlt's avatar
    fix: Anthropic 非流式路径在上游终态事件 output 为空时从 delta 事件重建响应内容 · 777820c1
    sakurawztlt authored and 陈曦's avatar 陈曦 committed
    b2e379cf 引入的 BufferedResponseAccumulator 已修复了 chat_completions
    非流式路径和 responses OAuth 非流式路径,但遗漏了 Anthropic /v1/messages
    非流式路径 (handleAnthropicBufferedStreamingResponse)。
    
    当客户端请求 stream=false 且模型开启思考时,上游 response.completed
    终态事件的 output 字段可能为空,实际 message 内容通过
    response.output_text.delta 增量事件下发。旧代码只读终态事件的 Response,
    导致客户端收到的 content 字段为空 ([{"type":"text"}])。
    
    本 commit 将 b2e379cf 的相同修复模式镜像到 Anthropic 路径:在 SSE 扫描
    过程中用 BufferedResponseAccumulator 累积 delta 内容,终态 output 为空
    时通过 SupplementResponseOutput 补充重建。
    
    同时修复 handleAnthropicBufferedStreamingResponse 遗漏 response.done
    事件类型的问题,与 chat completions 路径保持一致,避免上游发送
    response.done 时 handler 认不出终态事件、最终返回 502 的潜在问题。
    
    BufferedResponseAccumulator 已在 chatcompletions_responses_test.go 有
    完整单元测试覆盖(TextOnly/ToolCalls/Reasoning/Mixed/SupplementEmpty/
    NoSupplementWhenOutputExists/EmptyDeltas/IgnoresNonFunctionCallItems),
    本次复用相同累加器无需新增测试。
    777820c1
openai_gateway_messages.go 18.5 KB