7、Agent的高级用法3:结构化输出

结构化输出是Agent的核心功能之一,它允许Agent以特定、可预测的格式返回数据,而不是传统的自然语言响应。通过结构化输出,开发者可以直接获得Pydantic模型、JSON对象或数据类等结构化数据,这些数据能够被应用程序直接使用,无需复杂的解析过程。

7.1 模型 vs Agent的结构化输出对比

第06章已经介绍过结构化输出,当时的重点是与模型对象的绑定,这里与Agent的结构化输出做对比:

图片[1]-7、Agent的高级用法3:结构化输出-大赛人网

7.2 结构化输出的4种策略

LangChain的create_agent()函数自动处理结构化输出的全过程。用户只需通过“response_format”参数设置期望的输出模式(Schema)。
当模型生成结构化数据时,系统会自动捕获、验证并将结果存储在Agent状态的structured_response键中。

图片[2]-7、Agent的高级用法3:结构化输出-大赛人网

① ProviderStrategy
使用模型提供商的原生结构化输出功能实现结构化输出。

  • 这里所说的“原生结构化输出”指的是大语言模型(LLM)提供商通过其API直接提供的、在模型响应阶段就强制保证输出格式符合预定规范的能力,这种能力能够在模型生成内容的源头确保结构化准确性。
  • 适用于支持原生结构化输出的模型,比如OpenAI、Anthropic Claude或xAI Grok等。举例:

举例:

图片[3]-7、Agent的高级用法3:结构化输出-大赛人网
图片[4]-7、Agent的高级用法3:结构化输出-大赛人网

② ToolStrategy
对于不支持原生结构化输出的模型,LangChain采用“ToolStrategy”工具调用的方式实现结构化输出。
此策略兼容绝大多数支持工具调用的现代模型,其核心原理是动态创建一个” 虚拟工具”,该工具的输入参数对应着期望的数据结构。
当模型需要生成最终答案时,系统会引导模型”调用”这个虚拟工具,从而间接产生符合要求的结构化数据。
举例:

图片[5]-7、Agent的高级用法3:结构化输出-大赛人网
图片[6]-7、Agent的高级用法3:结构化输出-大赛人网

name=’John Doe’ email=’john@atguigu.com‘ phone='(1 010) 56253825’

③ type / AutoStrategy
官方没有在参数列表或官方文档列出这种策略,但阅读源码可以看到。

图片[7]-7、Agent的高级用法3:结构化输出-大赛人网

当我们直接传入一个定义类型时,LangChain会自动包装为AutoStrategy,触发自动选择策略:如果模型支持原生结构化输出(如OpenAI、Anthropic Claude或xAI Grok),则优先使用ProviderStrategy;否则使用ToolStrategy。
举例1:

图片[8]-7、Agent的高级用法3:结构化输出-大赛人网
图片[9]-7、Agent的高级用法3:结构化输出-大赛人网

输出

name=’John Doe’ email=’john@atguigu.com‘ phone='(1 010) 56253825’

特别注意:在LangChain 1.0及以上版本中,直接传递模式(如response_format=ContactInfo)不再支持,必须显式使用ToolStrategy或ProviderStrategy。(经过测试,目前LangChain 1.2版本还可使用)。
举例2:

图片[10]-7、Agent的高级用法3:结构化输出-大赛人网

name=’John Doe’ email=’john@atguigu.com‘ phone='(010) 56253825’

④ None
默认配置,表示不以结构化输出,以自然语言响应用户问题。
总结:
在实际大模型Agent开发场景中,如果使用到了结构化输出,推荐使用“ToolStrategy”策略,所以后续重点介绍这种策略方式结构化输出。

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发
头像-大赛人网
欢迎您留下宝贵的见解!
提交
头像-大赛人网

昵称

取消
昵称

    请登录后查看评论内容