fix: convert OpenAI tool result images for Claude - #6261
Conversation
WalkthroughTool-result content conversion now resolves OpenAI ChangesTool result media conversion
Estimated code review effort: 3 (Moderate) | ~20 minutes Sequence Diagram(s)sequenceDiagram
participant OpenAIRequest
participant ClaudeConverter
participant MediaResolver
participant ClaudeToolResult
OpenAIRequest->>ClaudeConverter: provide tool-result image_url content
ClaudeConverter->>MediaResolver: resolve source and MIME type
MediaResolver-->>ClaudeConverter: return base64 data
ClaudeConverter->>ClaudeToolResult: set image or document media content
Possibly related issues
Suggested reviewers: Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
86e2743 to
411d663
Compare
51fdfc5 to
2b6f1df
Compare
Important
Note
This change was AI-assisted. The scope, root cause, generated payload, and test results were reviewed during preparation; the PR has been reviewed by the submitter and marked ready for review.
📝 变更描述 / Description
OpenAI Chat Completions 的普通消息在转换到 Claude Messages 时,会将
image_url解析为 Claude 原生的image/source。但role: tool分支此前直接把message.Content写入tool_result.content,导致工具返回的图片仍以 OpenAIimage_url结构发送给 Claude 兼容上游并触发参数校验错误。本修改仅转换工具结果内容中的
image_url:沿用现有媒体解析逻辑读取 URL 或 Base64 数据,并输出 Claudeimage(PDF 输出为document)内容块。文本、已经是 Claude 格式的图片块及未知内容保持原样。🚀 变更类型 / Type of change
🔗 关联任务 / Related Issue
✅ 提交前检查项 / Checklist
Bug fix,我已提交或关联对应 Issue,且不会将设计取舍、预期不一致或理解偏差直接归类为 bug。📸 运行证明 / Proof of Work
新增回归测试验证:
tool_result.content中的 OpenAIimage_url会序列化为 Claudeimage/source,最终请求不再包含image_url。Summary by CodeRabbit
New Features
Bug Fixes