让LLM稳定输出JSON:从提示词到生产校验的决策指南
先判断:你需要“看起来一致”,还是“机器可解析”
如果模型回答只给人阅读,统一标题和段落就够了;如果结果要进入数据库、工作流或前端页面,就必须把格式当成接口契约。最常见的失败包括字段遗漏、JSON外多出解释文字、日期格式不一致,以及数组有时变成字符串。生产环境应优先选择可验证的结构,而不是只在提示词中写“请严格按照格式输出”。
稳定输出的四个决策
- 先定义最小Schema。明确字段名、类型、是否必填、允许值和空值规则。例如订单结果可以规定:order_id为字符串,amount为数字,status只能是paid、pending或cancelled,items必须是数组。字段越少,模型越容易稳定遵守。
- 在提示词中给出正例和反例。说明只能返回一个JSON对象,不要使用Markdown代码围栏,不要添加说明文字。正例展示完整结构,反例指出哪些内容不允许出现。示例应使用真实业务字段,避免同时展示多个互相冲突的格式。
- 使用原生结构化能力。在支持JSON模式、JSON Schema或工具调用的模型和SDK中,优先开启这些能力。它们通常比纯文本约束可靠,但仍要在服务端验证,因为模型版本、参数和上游异常都可能影响结果。
- 把验证和恢复写进程序。收到响应后先解析JSON,再检查必填字段、类型、枚举值、长度和业务逻辑。解析失败时,可用相同请求重试一次;若仍失败,再发送短提示,明确指出具体错误并要求只返回修正后的完整对象。不要无限重试,也不要直接把未经验证的内容写入数据库。
参数和流程怎样配置
分类、抽取和路由任务通常应使用较低的temperature,以减少随机表达;需要创意文案时,可以放宽参数,但应把创意字段与固定字段分开。固定格式任务还应设置合理的最大输出长度,避免截断导致半个JSON。记录模型名称、请求ID、原始响应、验证错误和重试次数,方便定位问题。
对关键流程,建议采用三层防线:第一层是提示词和Schema,第二层是SDK或API返回的结构化约束,第三层是本地校验器。校验失败不要悄悄丢弃,应该进入告警或人工复核队列。上线前准备包含缺字段、超长文本、特殊字符、空数组和模型拒答在内的测试集,并统计解析成功率,而不是只凭几次手工测试判断效果。
如何选择低成本的模型API
如果项目需要同时调用Claude和GPT,API兼容性会直接影响迁移成本。59API提供Claude Opus、Sonnet、Haiku、Fable及GPT模型的按量付费访问,API Base URL为https://api.59api.com,并兼容Claude Code、Codex和OpenAI SDK。它使用原生官方质量模型,不通过降级模型换取低价,适合先用轻量模型处理批量抽取,再在复杂推理场景切换更强模型。
成本控制不应只看单价:比较时还要看解析失败率、重试消耗、延迟和SDK改造工作量。59API的按量计费适合验证阶段和波动流量;推荐返利也能降低长期调用成本。注册后先用小批量真实数据测试不同模型的结构化成功率,再决定默认模型和升级条件。
上线前检查清单
- 是否有明确且最小化的Schema?
- 是否禁止额外文本,并提供了贴近业务的正例?
- 是否启用了JSON模式、Schema或工具调用?
- 是否验证类型、枚举、必填字段和业务规则?
- 是否设置了有限重试、错误日志和人工兜底?
- 是否用真实异常样本比较模型成本与成功率?
当格式稳定性是业务要求时,正确思路不是寻找一句“万能提示词”,而是把输出设计成可验证的接口,再选择兼容、成本和模型质量都合适的API。可以先注册59API,用小规模请求验证你的Schema和重试流程。
शुरू करने के लिए तैयार?
कुछ ही मिनटों में Claude और GPT जोड़ें, सबसे कम कीमत पर। साइन अप करें और API key पाएं।
मुफ़्त साइन अप