为什么纯文本输出会破坏流水线
在提示里让模型“返回 JSON”并不可靠。它可能把答案包进 markdown、在周围加上说明,或凭空发明键名。当你的代码需要带类型的数据时,有两种机制能可靠获得它:函数调用,以及 JSON schema 之类的结构化输出模式。
一段话讲清函数调用
你声明模型可以调用的函数,每个函数有名称和描述其参数的 JSON schema。模型不再用自由文本回复,而是发出一个结构化请求,用符合 schema 的参数调用你的某个函数。你的代码执行该调用并把结果发回,这正是智能体串联工具的方式。
用于纯答案的 JSON 模式
当你并不需要真正的函数时,JSON 模式会约束模型产出与你提供的 schema 匹配的合法 JSON。这是提取字段、分类文本或生成配置文件的可靠方式,无需靠提示工程去凑格式。
校验应放在你的代码里
即使使用这些模式,也要把输出当作不可信输入。按 schema 校验、转换类型,并为畸形输出准备兜底路径。模型偶尔会给出“合法 JSON 但答案错误”的结果,任何 schema 强制都无法捕捉这种情况。
实用模式
- 为你需要的每一种结构化输出声明严格的 schema。
- 让请求走函数调用或 JSON 模式,而不是在散文里好言相求。
- 使用前在代码中校验结果。
- 记录 schema 失败,并用澄清后的提示重试。
采用这一模式的团队,会从对模型文本做正则调试,转向真正交付功能。
评论(167)