21
如何让大模型输出结构化的结果(如JSON)?有哪些方法?
提示工程与Prompt设计中等
📋 面试问题
如何让大模型输出结构化的结果(如JSON)?有哪些方法?
✅ 期望回答
方法:
- JSON Mode(OpenAI/Claude支持):API参数中设置response_format: {"type": "json_object"},模型强制输出合法JSON
- Function Calling / Tool Use:定义JSON Schema的函数签名,模型返回结构化函数调用参数而非自然语言
- Prompt约束:在Prompt中明确要求输出JSON,并提供Schema模板
- Post-processing:正则提取+JSON.parse,额外用try-catch+重试机制处理非合法JSON
- Instructor/Pydantic:Python库(Instructor、Marvin)自动处理Schema校验和重试
- 使用guided generation(如Outlines、Guidance等库做constrained decoding)
- 在Prompt中加入1-2个Few-shot示例(含正确的JSON输出)
- 用Validator校验输出(如jsonrepair修复轻微语法错误)
- 多步生成:先判断意图 -> 再填充字段 -> 最后输出完整JSON
#结构化输出#JSON#Function Calling