结构化输出允许智能体以特定、可预测的格式返回数据。无需解析自然语言响应,您可以直接获得类型化的结构化数据。
LangChain 预构建的 ReAct 智能体
结构化响应在智能体最终状态的
当您将模式类型直接传递给
提供商原生结构化输出提供高可靠性和严格验证,因为模型提供商会强制执行模式。在可用时使用它。
如果不使用
仅处理特定异常:
处理多种异常类型:
不处理错误:
createAgent
会自动处理结构化输出。用户设置所需的结构化输出模式,当模型生成结构化数据时,数据会被捕获、验证,并在智能体状态的
structuredResponse
键中返回。
响应格式
控制智能体如何返回结构化数据。您可以提供 Zod 对象或 JSON schema。默认情况下,智能体使用工具调用策略,通过额外的工具调用创建输出。某些模型支持原生结构化输出,这种情况下智能体将改用该策略。 您可以通过将
ResponseFormat
包装在
toolStrategy
或
providerStrategy
函数调用中来控制行为:
structuredResponse
键中返回。
提供商策略
一些模型提供商通过其 API 原生支持结构化输出(如 OpenAI、Grok、Gemini)。这是可用时最可靠的方法。 要使用此策略,请配置
ProviderStrategy
:
定义结构化输出格式的模式。支持:
- Zod Schema :一个 zod 模式
- JSON Schema :一个 JSON schema 对象
createAgent.responseFormat
且模型支持原生结构化输出时,LangChain 会自动使用
ProviderStrategy
:
如果提供商原生支持您所选模型的结构化输出,写
responseFormat: contactInfoSchema
与写
responseFormat: providerStrategy(contactInfoSchema)
在功能上是等效的。无论哪种情况,如果不支持结构化输出,智能体都会回退到工具调用策略。
工具调用策略
对于不支持原生结构化输出的模型,LangChain 使用工具调用来实现相同的结果。这适用于所有支持工具调用的模型,即大多数现代模型。 要使用此策略,请配置
ToolStrategy
:
定义结构化输出格式的模式。支持:
- Zod Schema :一个 zod 模式
- JSON Schema :一个 JSON schema 对象
生成结构化输出时返回的工具消息的自定义内容。如果未提供,默认显示结构化响应数据的消息。
包含可选
handleError
参数的选项参数,用于自定义错误处理策略。
-
true:使用默认错误模板捕获所有错误(默认) -
false:不重试,让异常传播 -
(error: ToolStrategyError) => string | Promise<string>:使用提供的消息重试或抛出错误
自定义工具消息内容
toolMessageContent
参数允许您自定义生成结构化输出时在对话历史中显示的消息:
toolMessageContent
,我们会看到:
错误处理
模型在通过工具调用生成结构化输出时可能会出错。LangChain 提供智能重试机制来自动处理这些错误。多个结构化输出错误
当模型错误地调用多个结构化输出工具时,智能体会提供包装在
ToolMessage
中的错误反馈,并提示模型重试:
模式验证错误
当结构化输出不匹配预期模式时,智能体会提供具体的错误反馈:错误处理策略
您可以使用
handleErrors
参数自定义错误处理方式:
自定义错误消息: