当你使用接受多模态输入和工具结果或返回多模态输出的大型语言模型时,Deep Agents 支持多模态工作流。你可以将图像和其他媒体附加到用户消息中,使用内置的 read_file 工具读取非文本文件,并从自定义工具返回多模态内容。 内置的上下文压缩主要面向文本。请相应地规划多模态工作负载:尽可能将大型媒体存储在后端,并传递引用。

多模态用户输入

在发送给智能体的 messages 中传递多模态内容,使用与 LangChain 聊天模型相同的标准内容块:
有关块类型、提供商特定要求及其他示例(PDF、音频、视频),请参阅多模态消息。

内置 read_file 工具

框架的 read_file 工具为支持的多模态文件返回标准内容块,而非纯文本。当所选模型支持相应模态时,智能体可以检查其文件系统中存储的图像、文档和媒体。请查阅你所使用模型的提供商文档,了解其支持的 MIME 类型。

自定义工具输出

自定义工具可以包含多模态文件,例如图像:
返回值将被转换为模型在下一轮次读取的 ToolMessage。可以通过结果消息的 content_blocks 访问其标准化表示。有关返回类型选项、序列化行为和 MCP 示例,请参阅工具返回值和多模态工具内容。
当工具生成图像或其他大型二进制数据时,请将产物保存到后端,并返回简洁的文本描述以及路径或 URL。这样可以保持消息历史记录更小,并能更好地配合上下文压缩工作。

上下文压缩与多模态内容

内置的卸载和摘要功能针对文本和消息历史记录进行了优化:
  • 卸载 仅衡量文本 token。非文本块(包括图像)在替换消息中被保留,而不是被压缩。仅包含图像的消息不会仅根据图像大小被卸载。
  • 摘要 将较旧的消息压缩为纯文本摘要。该范围内的图像、音频、视频和文件块不会被带入——模型只能看到摘要撰写者对它们的描述。低于保留阈值的近期消息保持不变。 当摘要运行时,较早轮次中的媒体块会从活动上下文中移除:
    原始对话仍以文本形式写入文件系统。有关触发条件、保留阈值和完整流程,请参阅摘要。
对于多模态密集型工作负载:
  • 将图像、屏幕截图和图表存储在文件系统后端或外部对象存储中,然后通过消息传递文件路径或 URL。
  • 在长期运行的对话中,优先使用引用而非 Base64 编码的图像块。
  • 使用子智能体进行图像密集型检查,以便主智能体获得紧凑的文本结果。
  • 当你的提供商对图像收取大量 token 时,可以调整摘要阈值或提供自定义 token 计数器。
有关卸载阈值、摘要触发器和自定义选项,请参阅上下文压缩。