1. 为什么需要强制AI输出标准JSON
在LangChain的实际开发中,我们经常遇到一个头疼的问题:AI模型的输出内容总是充满不确定性。有时候它会给你一段漂亮的JSON,有时候却突然开始讲起莎士比亚的十四行诗。这种不可预测性给后续的数据处理带来了巨大挑战。
我最近在开发一个电商客服自动化系统时就踩了这个坑。当用户询问"最新款手机的价格"时,理想情况下AI应该返回类似这样的结构化数据:
json复制{
"product": "iPhone 15 Pro",
"price": 9999,
"in_stock": true
}
但实际情况是,AI可能返回:
"您好!最新款iPhone 15 Pro目前售价9999元,库存充足哦~"
这种自由发挥的文本让后续的代码无法直接解析。我们需要额外编写复杂的正则表达式或自然语言处理逻辑来提取关键信息,既增加了开发成本,又降低了系统可靠性。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Zod如何解决JSON输出难题
Zod是一个TypeScript优先的模式声明和验证库,它通过定义严格的数据模式(schema)来确保数据结构的一致性。在LangChain中结合Zod使用,相当于给AI的"嘴巴"装上了标准化的"模具"。
2.1 Zod基础使用模式
首先看一个简单的Zod模式定义示例:
typescript复制import { z } from "zod";
const ProductSchema = z.object({
product: z.string(),
price: z.number().positive(),
in_stock: z.boolean()
});
这个模式明确规定了:
- 必须包含product、price、in_stock三个字段
- product必须是字符串
- price必须是正数
- in_stock必须是布尔值
2.2 与LangChain的集成方式
在LangChain中,我们可以通过JsonOutputParser来连接AI输出和Zod模式:
typescript复制import { JsonOutputParser } from "langchain/schema/output_parser";
const parser
