跳到主内容

JSON 模式下还能自然表达吗?

2026-10-18 发布 来源:我告诉你AI导航 阅读

不少人觉得打开 JSON 模式后,DeepSeek 这类模型就变得不会说人话了。其实 JSON 模式限制的不是表达力,而是输出的顶层形状:它保证吐出来的内容能被当成合法 JSON 解析,至于字段里装什么、怎么描述,仍然有自然表达的空...

不少人觉得打开 JSON 模式后,DeepSeek 这类模型就变得不会说人话了。其实 JSON 模式限制的不是表达力,而是输出的顶层形状:它保证吐出来的内容能被当成合法 JSON 解析,至于字段里装什么、怎么描述,仍然有自然表达的空间。

JSON 模式到底锁住了什么

打开模式后,生成过程被约束在合法 JSON 的路径上:括号要配对、引号要成双、键值结构要完整。它锁的是外壳,内容不受限——字符串值里照样可以写一整段流畅的中文。误解来自把「结构化」误当成「机械」,外壳规整与内文生动可以共存。

自然语言藏在哪些位置

  • 字符串值:摘要、理由、描述类字段里,句子照常写。
  • 字段描述:给每个字段写一句人话说明,模型据此填充。
  • 系统提示:模式之外的部分完全自由,照常用自然语言交任务。

字段描述怎么写才自然

字段描述写得越像给同事交代事情,填充质量越好。「summary:用两三句话概括用户诉求,保留数字」就比「summary:string」有效得多。在智谱清言里实测,描述写成人话之后字段填充的完整度明显变好;字段名本身保持英文短横线风格利于解析,语义则交给描述去传达。

位置能放什么写法要点
字符串值摘要、理由、描述类字段句子照常写,一整段流畅中文也行
字段描述一句给人看的说明「用两三句话概括用户诉求,保留数字」
系统提示模式之外的全部交代照常用自然语言交任务
默认值与约束说明边界情况下的填法「priority:不明确时填 normal」

开与不开的取舍

  • 程序要直接消费输出:开,省掉清洗围栏的功夫。
  • 输出给人看:不开,让模型自由选择更顺的表达。
  • 混合场景:结构化字段加长文字段都塞进一个 JSON,开模式。

外壳锁住后解析端怎么接,见结构化输出和后处理解析怎么配合?;固定前缀的写法见是怎么写才能命中提示缓存的?关键步骤一次讲清;结构化输出的函数场景见函数调用场景的提示是怎么写的?;模式与推理深度的配合见思考预算和提示是怎么配合的?从原理到落地。

字段描述写成人话之外,还有一层自然表达藏在默认值与约束说明里。给字段配默认值描述,比如「priority:不明确时填 normal」,模型遇到边界情况就有了台阶;给枚举字段配一句「取值只能是以下三个之一」,合法路径被进一步收窄。长文本字段还可以在描述里给结构提示,比如「reason:先说结论,再给一条依据」,填出来的内容自带层次。调试模式输出时有个小技巧:先开模式跑一遍拿到合法外壳,再把同样的提示关掉模式对比文风,若关掉后明显更顺,可以把顺的部分翻译回字段描述里,让开模式的输出也带着那份自然。字段描述里避免双重否定,模型对「不能不」这类句式的遵循明显更弱;错误信息字段建议让它用一句自然中文描述问题,比状态码更利于排查。

JSON 模式取舍速查

  • 要机读:开模式加字段描述写人话。
  • 要人读:不开模式加结构要求写进提示。
  • 两头都要:结构化外壳加长文字段。

模式锁外壳不锁灵魂,表达力照常在线。

调试字段填充质量时可以做描述消融:把某字段的描述删掉再跑,对比该字段填充质量的变化,就知道这段描述值多少分。值钱的多写两句,没用的删掉,描述越精,输出越稳。

聊聊JSON 模式的常见疑问

  • 开了 JSON 模式还需要写格式声明吗?:需要,模式保证合法,声明保证字段和形状符合预期,两层各管一段。
  • 字符串里的换行和引号会破坏结构吗?:模式开启时模型会做转义处理,一般无需担心。
  • 所有模型都支持这个模式吗?:主流服务大多支持,具体行为以各家的接口文档为准。

最后收拢成一句:把模式当成安全网,别当成文风开关。

反馈页面信息

请描述需要更正的地方,页面标题和网址会自动附上。

也可以发邮件至 [email protected]