Skip to content

fix(agent): allow tool responses to pass image content to next-round vision input - #7913

Closed
lirenjie95 wants to merge 1 commit into
labring:mainfrom
lirenjie95:fix/agent-image-input-7827
Closed

lirenjie95 wants to merge 1 commit into
labring:mainfrom
lirenjie95:fix/agent-image-input-7827

Conversation

@lirenjie95

@lirenjie95 lirenjie95 commented Oct 6, 2026 •

Copy link
Copy Markdown

Fixes #7827

背景

Agent 工具(如沙盒 get_file_url、workflow 工具节点)返回图片后,下一轮模型请求无法把图片作为视觉输入,只能拿到文本链接。

改动内容

对齐 OpenAI chat completions 的 tool message content 规范,允许工具消息返回 text / image_url content parts,并让整条工具链路支持主动产出图片:

  • 类型层:ChatCompletionToolMessageParamSchema.content 支持字符串或 ChatCompletionToolMessageContentPart[](text / image_url)
  • 工具执行链路:AgentLoopToolExecutionResult / AgentLoopCoreToolRunResult / sandbox 工具结果新增可选 content 字段,逐层透传
  • workflow 工具节点:输出形如 { content: [{ type: 'image_url', image_url: { url } }] } 时提取为 tool content;普通文本输出行为不变
  • 沙盒工具:get_file_url 对图片文件在文本链接之外额外返回 image_url parts(工具主动返回 content 的示例)
  • fastAgent:tool message 优先使用工具返回的 content parts;兜底规则——整串响应恰好是一个图片链接时转成 image_url part,其余保持纯文本(不在普通文本里猜测图片)
  • piAgent:tool content 转换为 pi 的 TextContent / ImageContent(图片取回 base64,失败降级为占位文本)
  • promptCall 压缩:tool content 为数组时先取文本部分

测试

  • packages/global:新增 isExactImageUrl / getToolResponseContent 单测
  • packages/service:新增 tool 消息数组 content 的加载测试(vision 开关、base64 归一化、空数组兜底 none)

兼容性

  • 工具未返回 content 时行为与之前一致(纯文本响应)
  • tool content 为数组时,对不支持 vision 的模型自动过滤图片、单文本折叠回字符串

@c121914yu

Copy link
Copy Markdown
Collaborator

需要修改 llm request 的 tool content 类型,同时修改所有 tool response,支持返回符合类型。参考 openai completions 接口文档。
这个后续单独支持,该 pr 未能完全修改,不做合并。

@c121914yu c121914yu closed this Oct 8, 2026
@lirenjie95 lirenjie95 changed the title fix(agent): use tool-returned image URLs as vision input in next round fix(agent): allow tool responses to pass image content to next-round vision input Oct 8, 2026
@lirenjie95

Copy link
Copy Markdown
Author

已按维护者意见完整实现:工具全链路支持主动返回 content parts(text / image_url),字符串响应仅在整串恰好为图片链接时兜底转图片。已重新提交为新 PR #7923,此 PR 保持关闭。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] Agent V2 工具取得圖片後,無法在下一輪模型請求中作為圖像輸入

2 participants