作用:在 LLM 调用前,自动将已加载的图片注入到对话消息中
1 检查最后一条 AI 消息 — 是否包含 view_image 工具调用(_has_view_image_tool)
2 验证工具已全部完成 — 所有 view_image 调用是否都有对应的 ToolMessage 返回(_all_tools_completed)
3 防重复注入 — 检查是否已经注入过图片消息,避免重复(_should_inject_image_message)
4 构造 HumanMessage — 将 state.viewed_images 中的图片转为多模态消息(_create_image_details_message):
文本描述:文件名 + MIME 类型
图片数据:data:{mime_type};base64,{base64} 格式的 data URL
5 注入到消息流 — 返回 {“messages”: [human_msg]} 状态更新
解决的问题:当 LLM 调用 view_image 工具加载图片后,工具返回的结果可能只是元数据(路径、MIME 等),LLM 本身无法”看到”图片内容。此中间件在下一轮 LLM 调用前,自动把 base64 图片数据作为 HumanMessage 注入,使 LLM 能直接分析图片。
效果:LLLM 无需用户额外提示即可自动接收并理解图片内容,实现了视觉模型的无缝图片输入。