Few‑Shot 让 AI 稳定输出指定 JSON 格式的技巧
不同模型在少样本提示上的表现差异明显。Claude 3.5 Sonnet 对格式指令的敏感度最高,提供 1‑2 条示例即可几乎确保完整匹配;GPT‑4o 虽然整体能力强,但在长文本场景下偶尔会自行调整字段名称;DeepSeek‑V2.5 在处理深层嵌套的 JSON 时,若示例不足,仍会出现括号未闭合的错误。
最可靠的做法是:指令 + 严格的示例对 + 强制截断引导。当这三者同时满足时,模型会直接生成符合 Schema 的 JSON;若缺少任意一环,输出可能出现缺失字段或语法不完整。
简历信息抽取的 Few‑Shot 示例
下面的模板展示了如何让模型把简历文本转成结构化 JSON:
你是一个简历解析专家。请将输入文本转换为 JSON。
输入:张三,3年Java经验,精通Spring Boot和MySQL,曾在阿里工作。
输出:{"name": "张三", "exp": "3y", "skills": ["Spring Boot", "MySQL"], "company": "Alibaba"}
输入:李四,5年Python经验,擅长PyTorch,曾在腾讯工作。
输出:{"name": "李四", "exp": "5y", "skills": ["PyTorch"], "company": "Tencent"}
输入:{{用户输入}}
输出:
关键在于示例后直接留下 输出:,让模型把注意力聚焦在补全 JSON 上。
各模型的少样本表现
Claude 3.5 Sonnet
表现极佳,只要定义好 Schema,即便不提供示例,成功率依然很高。加入 Few‑Shot 后几乎不会出现额外解释文字,字段类型(String / Array)保持稳定。
GPT‑4o
整体表现稳健。若示例数量过少,模型有时会把 JSON 值写成自然语言描述,但对复杂逻辑的映射仍比多数模型更可靠。
DeepSeek‑V2.5
在中文实体抽取方面精度突出。针对极少数深度嵌套场景,需要提供 3 条以上示例才能防止格式崩溃。响应速度快,性价比高,适合大批量处理。
JSON Mode 与 Few‑Shot 的协同
如果后端支持 JSON Mode,开启后可以确保返回的文本在语法上符合 JSON 标准。但即便如此,Few‑Shot 仍是决定字段内容准确性的核心,因为 JSON Mode 只能校验结构,无法约束业务含义。
在阐述 Few‑Shot 的理论基础时,可参考 arXiv 编号 14165 的论文《Language Models are Few‑Shot Learners》[^1]。该工作在 2020 年首次 Submitted,随后 revised 多次,最新 version 标记为 v4。论文指出,虽然模型在架构上保持 Task‑agnostic,但实际部署仍需数千至数万条任务特定的数据集;而 GPT‑3 在无需梯度更新或微调的情况下,仅通过文本交互即可完成多种任务,这一点在新闻生成实验中尤为显著,人工评审往往难以区分机器生成与人工撰写的文章。作者也在文中讨论了 Models 带来的更广泛的社会影响。
> 注:当指令、示例对以及强制截断全部满足时,模型会在 输出: 位置直接填充完整 JSON;若其中任何一环缺失,可能导致字段缺失、数组为空或括号未闭合等错误。
[^1]: https://arxiv.org/abs/2005.14165
