语气指令混乱让输出读起来像分裂:原因 + 对症修复

"专业又友好、正式又温暖"=给模型两个声音去取平均。修法:定一个主语气,用示例锚定,其余降级成机械规则。

你要”专业又友好、权威又谦逊、技术又易懂”。每一对单看都合理。结果模型给你一篇 5 段散文,句与句之间来回荡:第 1 句像麦肯锡备忘录,第 2 句像 Slack 闲聊,第 3 句像教科书脚注。追问”过渡再平滑些”,得到的是更平滑但同样不稳定的声音。

问题不在混合。你要了两个声音,模型把它们取了平均。两个相反方向的声音取平均,读起来是不稳定,不是平衡。

最快修法: 只定一个主语气,贴一段 2-3 句、完全是这个声音的示例,把次要语气降级成一小串机械规则(比如”允许缩略、不用感叹号”)。“温暖""权威”这类形容词不是模型能稳定执行的指令,示例才是。下文解释为什么”X 又 Y”这种写法必然失败,并给你一套分步配方。

为什么会这样

当 prompt 没把语气说具体时,模型会退回到训练里学到的”最统计安全”的风格——一种很多写作者形容为”维基百科 + LinkedIn”的”企业式热心”默认腔。两个互相竞争的形容词并不能盖住这个默认腔,只是让模型在两个词的单薄漫画版之间来回切。每个形容词落在训练分布的不同区域,而”混合”被模型理解成了”切换”。

你属于哪一类

prompt 里的症状根因真正有效的修法
两个形容词用”但/又”连(“正式又友好”)模型当成两个目标,一句选一个定一个主语气,另一个降级成机械规则(Step 1)
语气只用 1-2 句描述,没样例模型没锚,不知道你的混合体长什么样贴一段 2-3 句的语气示例(Step 2)
语气槽塞了 4+ 个形容词是 stakeholder 政治,不是真实声音砍到一个主语气,其余变规则或直接删(Step 1)
领域天然混语域(销售、募资、冲突调解)每一节确实需要不同语域写一份按节分配的”配方”(Step 3 与 Step 6)
单个语气短语,无结构模型没有可执行的配方把语气翻成可测规则(Step 4)
只在聊了几轮后才开始漂message 里的语气指令被摘要掉了把语气挪到 system / project 指令里(Step 5)

动手前先确认

  • 列出 prompt 里每一个语气形容词。
  • 每一对都问:“它们冲突吗?“冲突就不能均等满足——必须有一个主导。
  • 找一段真实写作,命中你想要的混合体。
  • 重新 prompt 前,先定好你那一个主语气。
  • 副语气如果相关,映射到具体的结构位置。

需要收集的信息

  • 完整的语气指令原文。
  • 那段语气混乱的输出。
  • 一段命中你真正想要的混合体的样例。
  • 模型、temperature,以及语气指令放在哪里(message、system prompt 还是 project 指令)。
  • 不一致是句级还是段级。

最短修复路径

Step 1:定一个主语气,其余降级

差:  "专业又友好。"
好:  "主语气:专业。
       友好只通过以下方式体现:缩略('咱们'而非'我们')、
       用'你'而非'人们'、不用感叹号。
       其余一律默认专业语域。"

一个赢家;次要语气被降为几条机械规则,模型能稳定应用。

Step 2:用一段示例锚定

形容词是解读,示例才是目标。贴 2-3 句完全是你想要的那个声音:

语气示例(请完全按此语气写):
"上线进度同步一下:我们把发布推到周五。Safari 上 auth 还在挂,
得先稳住,再对客户开放。修复进度记在 INC-4123。"

单个示例可能被当成偶然个例;两三个才能立起一个可靠模板。所以一个锚不住就再加一个(见”如果还是没修好”)。

Step 3:把细节映射到结构位置

如果你确实想要两个语域,给每个一个位置,而不是要求逐句混合:

第 1 节(开场):温暖、"我们"、缩略。
第 2 节(技术细节):正式、第三人称、不缩略。
第 3 节(行动呼吁):温暖、直接、第二人称。

模型对”第 2 节用 X 语域”远比”全文混 X 和 Y”靠谱。

Step 4:把语气翻成可测规则

行为规则胜过形容词,因为它可核对。“两句一段”胜过”有力”;“开头先抛反直觉那一点”胜过”吸引人”。

语气规则:
- 缩略:允许
- 感叹号:禁用
- 第二人称("你"):必须
- 行话:每段最多 1 个,首次出现处给定义
- 平均句长:12-18 字
- 阅读难度:大致初中水平

可测规则能消掉句级漂移,因为每一句要么过、要么不过。

Step 5:把语气钉在能持久的地方

写在单条聊天 message 里的语气,会随着对话变长被摘要掉,于是几轮之后声音就漂了。把它挪到每轮都会重新加载的那一层:

  • ChatGPT: Custom Instructions,或某个 Project 的指令(Projects 侧栏 -> 你的项目 -> “Instructions”)。
  • Claude: 某个 Project 的自定义指令,或 Claude Code 的 CLAUDE.md 文件——它每次运行都从磁盘重新读取,而不是塞在聊天里带着走。
  • API: system prompt,它在每条 user 消息之前都会被处理一遍。

system 级指令在所有轮次里都持久;message 里的指令不持久。

Step 6:天然混语域的任务,写”配方”

有些任务确实要混语域。销售邮件既要温度也要权威。别用形容词硬刚——给每个段落一份任务说明:

配方:
- 开头:温暖、直呼对方名字、引用最近共有的上下文。
- 中部:切到权威——具体数字、点名的具体案例。
- 结尾:再回温暖——邀请下一步,不强推。

配方是一个形容词给不了的结构锚。

怎么确认已经修好

  • 逐句读一遍:输出读起来连贯,不像拼出来的。
  • 盲读测试:把输出给一个没看过 prompt 的人。如果他能描述出一个连贯的声音(而不是”它一直在切”),就算落地。
  • 同一个 prompt 跑 3 次。3 个输出语气一致,说明语气被钉住了,不是随机。
  • 拿 Step 4 的可测规则逐句核对。

如果还是没修好

  1. 两个语气可能真的不兼容。砍掉一个。
  2. 缩小样本:让模型先写 2 句,把声音锁住,再扩写。
  3. 给 2-3 个示例,别只给 1 个。锚多了,语气更稳。
  4. 品牌工作把语气当配置文件:示例 + 规则 + 位置映射,全锁住、可复用。
  5. 如果声音还是退回”企业式热心”,就明确禁掉那些 AI 腔的标志:不用破折号当连接词、不写”在当今快节奏的时代”、不用”可能""也许”这类含糊词。

预防建议

  • 默认只定一个主语气。其余都是机械规则或位置细节。
  • 存好语气锚(每个声音一段示范)以便复用。
  • 永远不要在两个形容词之间用”但”或”又”。
  • 每季度审一次生产 prompt 里累积的语气愿望。
  • 团队工作流商定一个声音 + 一个锚,而不是”品牌 vibe”这种说法。

常见问题

为什么”专业又友好”比单写”专业”输出更差? 因为模型把这两个词读成两个独立目标,一句满足一个。单写”专业”给它一个语域去守住。加一个互相竞争的形容词、又不给示例或规则,只会引入摆荡。

两个语气形容词就一定不能用吗? 能用,前提是立刻把它们落地。指定一个为主语气,把另一个定义成机械规则或按节分配的位置。出问题的是”两个光秃秃的形容词 + 没示例 + 没结构”。

应该给几个语气示例? 两到三个。一个可能被模型当成偶然个例;两三个能立起模式。超过五个很少有用,还吃 context。

语气指令一开始好用,聊了几轮就漂了,为什么? message 里的指令会随对话变长被摘要掉,语气规则就淡了。把它挪到持久层:ChatGPT 的 Custom Instructions 或 Project 指令、Claude 的 Project 或 CLAUDE.md、或 API 的 system prompt——这些每轮都会重新生效。

冲突修掉了,输出还是一股通用 AI 味,怎么办? 那是模型默认的”企业式热心”腔在透出来。把形容词换成具体的行为规则(句长、阅读难度、禁用词),再用一段真实示例锚定。明确禁掉常见标志(破折号滥用、把 “leverage” 当动词、含糊词)。

语气该放 system prompt 还是靠 temperature? 语气靠 prompt 里的规则和示例。temperature 控制的是随机性,不是语域——调低会让输出更可预测,但不会把两个冲突的形容词变成一个连贯的声音。

相关阅读

标签: #排查 #Prompt #Prompt 质量 #风格漂移