上周改一个接口,同一段 prompt 换了个措辞,模型返回的 JSON 字段名就乱了。
这种「换个说法结果就变」的坑,根子在模型怎么处理提示词。
一、让模型一步一步来,能很好地提升答案的准确性
Google 团队在《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》(arXiv:2201.11903)里,只给了 8 个带推理步骤的示例,就让模型在 GSM8K 数学题上超过了用同样题量微调过的 GPT-3。
东京大学和 Google 的另一篇(NeurIPS 2022)更直接:什么都不教,只在问题后加一句 "Let's think step by step",MultiArith 正确率从 17.7% 升到 78.7%,GSM8K 从 10.4% 升到 40.7%。
为什么加一句「一步一步来」就能让它答对?大模型每生成一个 token,都要把前面所有内容完整重算一遍,但单次前向计算的深度是固定的。一道要十步推理的题,你让它一步出答案,它在固定的深度内算不完,只能猜。你让它把过程一步步写出来,每写一个中间步骤,就拼回输入重新完整算一遍,等于把算不完的部分摊到生成过程里了。把算不完的内隐计算,外化成一段能写下来的过程。
所以别只丢一句「答案是什么」,把话写成:「请先读题、列出已知条件,再逐步计算、写出中间结果,最后给出结论。」
二、高质量的例子比提示词好用
想让模型按某种格式输出,可以写要求,也可以直接塞几个「输入 → 输出」的样例。后者叫 few-shot(少样本提示),几乎总是更稳。
「输出要规范、要正式」这种描述太抽象,模型对「正式」的理解和你不一样;样例是具体的,它能直接对齐到你要的格式。例子把模糊的要求,压缩成了可复制的模式。
比如你想让它当「中译英引擎」,与其写一长串「只输出译文、别加解释」,不如先给它一组对照:
问:今天天气不错。 答:The weather is nice today.
再问「我明天要出差」怎么翻,它就照着前面这组「问 → 译」的格式来,不再画蛇添足。对应到 API 里,就是 messages 数组里多塞几组 user/assistant 对话而已。
例子的质量比数量重要。三五个格式统一的样例,胜过二十个格式混杂的。样例之间自相矛盾,模型反而抓错重点。
三、提示词匹配目标模型
提示词不通用。同一个 Prompt 换个模型,效果可能差很多。
- ChatGPT(GPT 系):吃 markdown 结构和编号。要求列成「1、2、3」,加小标题,响应更稳。
- Claude:吃 XML 标签,而且重要指令放末尾更有效——它对新近指令更敏感(recency bias)。写
<instruction>这类结构,它比 GPT 更吃。
- Gemini:吃具体例子,多给 case 比多给规则有用。
- DeepSeek(推理系):吃「think step by step」这类触发显式推理的话,反而别把格式规定得太死。
从别人那抄来的「万能模板」,换个模型就失灵。提示词要跟着目标模型走。
四、三个实用技巧
1. 动词是最重的词。「分析」「对比」「改写」「总结」决定了输出方向。把「帮我看看这个」换成「帮我对比这两个方案的优劣并给出结论」,质量立刻不一样。
2. 一个 Prompt 只干一件事。一句话塞三个任务,模型会平均用力,每个都做浅。拆成三次问,比一次问三样质量高。
3. system 和 user 分开用。system 放长期规则和人设,user 放当次任务。比如 system 里写「你是中译英引擎」,user 里写具体要翻的句子,分工清楚,别混着写。
Prompt 做的事,是把模型本来就有的能力,用对的路径引出来。分步推理、给例子、跟着模型偏好走,这三条比任何「万能模板」都管用。
想同一批问题同时试几个模型、对比谁的提示词响应更好,我日常通过速核AI接入,一个 Key 调用多家模型,切换对比都方便,有需要可自行了解。
本文引用的论文:Wei et al., "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models"(arXiv:2201.11903,2022);Kojima et al., "Large Language Models are Zero-Shot Reasoners"(NeurIPS 2022)。写于 2026 年 11月。