1. 结构化输出的重要性
在生产环境中,AI 应用的输出往往需要符合特定的数据结构(如 JSON Schema、Pydantic Model),以便下游系统可靠消费。结构化输出确保 LLM 返回格式一致、类型正确、可直接序列化的结果。
2. 两种结构化输出策略
- ProviderStrategy(厂商原生策略):优先使用模型提供商的原生结构化输出 API(如 OpenAI 的 JSON Mode)。效率最高,因为直接在模型层面约束输出格式,不消耗额外的工具调用 Token。适用于明确支持原生结构化输出的模型
- ToolStrategy(工具调用策略):将结构化 Schema 转为虚拟工具,LLM 通过调用虚拟工具输出符合 Schema 的结果。兼容所有支持工具调用的模型,通用性最强。当模型不支持原生结构化输出或原生能力不可靠时使用
LangChain v1.x 中,create_agent 支持直接传入 Pydantic Model 作为 response_format 参数,框架会自动推断使用哪种策略:优先尝试 ProviderStrategy,失败则降级为 ToolStrategy。
3. Schema 支持类型
ToolStrategy 支持多种 Schema 定义方式:
- Pydantic BaseModel:带有字段验证的类型化模型,返回经过验证的 Pydantic 实例
- 数据类(Dataclass):使用标准库 dataclass 定义的结构
- TypedDict:使用 TypedDict 定义的键值对结构
- JSON Schema:直接使用 JSON 模式规范字典
- 联合类型(Union):多种模式选项,模型根据上下文选择最合适的
4. 错误处理机制
ToolStrategy 提供灵活的 handle_errors 配置:可以捕获所有错误并重试、使用自定义错误消息、仅捕获特定异常类型,或设置为 False 不进行重试直接抛出异常。这在生产环境中非常关键,因为 LLM 偶尔会输出不符合 Schema 的内容。