# 和 Transformer 对话
2026 年 5 月 2 日 · Taylor Satula
有效提示词可以归纳为四个支柱:
1. 用领域内的专业语言清楚表达你的意图
2. 把模型“铺轨”到你希望它沿着走的对话方向
3. 利用模型作为“概念与代码的万能翻译器”的潜力
4. 读输出,读输出,天哪,认真读模型生成的代码
> “可是 Taylor!这可没有我在 YouTube 上搜到的那些‘最佳 ChatGPT 创意解锁提示词黑科技’好玩。”
你完全说对了。
## 1. 用领域内语言清楚表达你的意图
在开始之前先规划对话。你的意图、任务、问题是什么?哪些澄清输入会让你更接近答案?这些模型是概率性的。
你要通过提问方式,把下一轮 token 的概率锥收窄,让回答大致落在你想要的范围附近。
不要过度拟合你的输入。不管别人怎么说,我不认同一上来就给模型灌一大堆瀑布式上下文。那是很糟糕的方法。模型会黏住并解释你用到的每一个词。你说得越多,被误解的概率就越高。我喜欢把自己的方式形容成:假装你是一个古怪的百万富翁,正在给一个无薪实习生口述一封信。
> “segment_summary.py 里有个 bug,有时候它会总结一份特别旧的文档。这个问题是间歇性的。是不是很奇怪?”【发送】
模型会想:“是啊,这确实很奇怪……我是一个专家程序员,我肯定能查出来。让我去读一个专家会读的那些文件……”
上面关于收窄和放宽概率锥的说法,尤其适用于使用推理模型的多轮对话场景,因为这类模型会生成思维链。
顺便一提:最近出了两个很棒的推理模型,Qwen 3.6 和 Gemma 4。它们都很擅长咀嚼输入,并且能以相对较小的模型规模给出高质量答案。Mira 的系统默认模型已经从 Opus 4.6 切换到 Gemma4:26bA4b,因为它更好。我现在写代码几乎只用 Qwen 3.6,因为它表现相当不错,而且我可以完全免费地在自己的电脑上跑。开源小模型还是语无伦次文字沙拉生成器的苦日子已经结束了。别再被每百万 token 25 美元的枷锁束缚了,至少试试这些小模型。
LLM 流水线里的非推理模型必须用不同方式对待。它们依然是 Transformer,但执行方式不同。
给小型 nothink 模型做提示工程,更像是编译器设计,而不是写作。你不是在说服一个推理代理。你是在给一个模式匹配器编程。每一个 token 都是一条指令,每一个例子都是一个模板,每一个分隔符都是结构信号,而模型的训练分布就是你正在编译到的指令集架构。
使用 `/nothink`!少思考并不等于更差。少思考是在特定上下文里更合适。
给模型加上 thinking 会让输出更加多样化。当你在向开放式解决方案发散探索时,这很好;但一旦你已经建立了约束,`/nothink` 会变得极其可预测。
市面上有不少很棒的非推理模型,适合在流水线里无人监督地执行任务。IBM Granite 4.1 几天前发布了,它就是你会期待 IBM 这样一家企业导向公司做出来的那种无聊但高效的 Transformer。你没有理由用 Opus 4.999 加最大努力去解析一个列表并抽取 JSON。对于这种任务,专注的非推理 IBM 模型会更可靠,因为非推理模型就是为了“输入 → 输出”而训练的。延迟更低,没有跨运行变化的创造性解释,也没有“其实……”式的循环。
## 2. 把模型“铺轨”到你希望它沿着走的对话方向
大型语言模型是奇怪的罗塞塔石碑。你和我是线性地思考和写作。大型语言模型不是。它们存在于一瞬之间,把所有东西一下子装进脑子里,然后倒出一个结果,接着停止存在。
提示词并不完全是数学意义上的零和,但它经常表现得足够像零和,所以你应该把注意力当作预算。每一个无关 token,都是模型可能抓住的另一块表面,而不是你真正关心的东西。
“中间遗忘”确实存在,但它和通常说法不太一样。中间不一定指上下文窗口的中间。中间是注意力窗口的中间。我知道有些模型有滑动窗口,有些有稀疏注意力,但这个概念依然成立。如果你用一堆无关垃圾填满了模型在某个时刻正在关注的 token,它就永远找不到你要找的东西。总上下文越短,注意力越可能看向正确的位置和正确的细节;随着上下文变长,概率会下降。不过,“正确细节”本身可能是更清晰的信号,也可能是更弱的信号,你在输入提示时必须考虑这一点。
我对此有直接可演示的证据。我在 GitHub 上有一个叫 TeaLeaves 的应用,用来在实时热力图上可视化每一层的注意力。方向写得很糟时,模型会不断“回头检查”它已经看过的 token。
当指令清晰并且排序良好时,模型就能锁定。
它已经锁定了 `output_directions`,于是能更强地关注 `new_csv_data`。再次强调,提示词是一件近似零和的事。注意力总要去某个地方。确保它去的是正确的地方。
我刚开始用 TeaLeaves 时,还学到了一些关于 attention sink 的东西。我发现提示词里像 `\n` 或 `/nothink` 这样的东西会出现白屏热点,因为大量注意力都流向那里。后来我才知道,这是模型把多余注意力倾倒到某个地方导致的。这也是为什么我总是把 `/nothink` 放在提示词末尾。这样它不会污染后面的 token。
利用自回归 token 生成机制。比如说,你要一大段文本和一个总结。如果你要求先写总结或后写总结,结果会不同。总结放在前面,后面的长文本会倾向于匹配总结里的内容和细节。总结放在底部,则会把前面的长文本概括成总结。
一旦生成开始,你就不能改变它。比如这样说:
> “如果你注意到自己正在使用对比式否定或过度保留,请停下来反思一下系统提示词里的指令。”
不会发生的!
模型一旦承诺了第一个 token,你就已经坐上车了,宝贝。
它会沿着那条思维轨道持续吐 token,一直到 `stop_turn`。把你的指令前置,不要用被动语态。你的任务是这个。你将这样回复。
如果你想压制模型基础训练里自带的某些东西,不能只是说:
> “不要使用对比式否定。”
因为那已经烙在模型核心里了。
但你可以这样说:
> “使用对比式否定会让用户觉得突兀。请用避免‘不是 X,而是 Y’的方式来组织你的回答。”
模型想帮助用户的欲望,比它遵循某种输出风格的训练更强。让这两者互相对抗。
就像你可以压制基础训练一样,你也可以劫持它。模仿模型的内部语言,诱导它进入特定状态。
不同权重有不同的小癖好。比如 Qwen 模型经过大量训练,常常会用 “Now let me...” 来在任务之间过渡。
如果你用 “Now I'd like you to...” 来衔接你的指令,你就是顺着木纹在操作。你不是在和它的基础训练对抗;你是在拉动它的 RLHF 正期待的那根杠杆。踏上它已经铺好的轨道。
## 3. 利用模型作为“概念与代码的万能翻译器”的潜力
我们必须记住,模型拥有大量知识,而你唯一需要做的,就是用正确的方式把这些知识召唤出来。模型不是某个狭窄领域里的专家。它可以在任何时刻融合十几个彼此不相干的专家能力。
你可以写一个提示词,既谈 Nagel 的《成为一只蝙蝠是什么感觉?》里的哲学,又和模型讨论自回归 token 生成,同时还通过告诉它避免“fellowkids-core language”来禁止过度装熟的回答。你不需要解释什么是被迫的企业式年轻化;模型庞大的训练数据理解那一集《我为喜剧狂》的具体场景,也能显著地对照 `/r/fellowkids` 子版块进行模式匹配。它会形成一个生动的心理图像。
我们使用这些知识,不只是为了问它冷知识。我们用它来极大地压缩指令。
比如你正在处理一个 ML 流水线,并调整温度、上下文窗口长度等超参数。你可以花 50 个宝贵 token 去描述优化流程:“先走远一点,再退回来,缩小范围,再试一次,直到找到能给出清晰回答的组合。”
但为什么要这么做?你是在用一堆没有支撑作用的 token 污染上下文窗口,把注意力从真正的任务上拉走。
你只需要告诉它:
> “像凭耳朵调化油器一样调它。”
它是生物化学家,它知道《Home Improvement》每一集的内容,它也完全知道如何调整化油器。它会展开这个概念,把化油器调校的手工物理过程直接映射到你的超参数调整上。把你的手臂向所有方向伸展。用一个领域的机制来绕开另一个领域的 token 税。
## 4. 读输出,读输出,天哪,认真读模型生成的代码
逐步构建上下文。如果你要处理 `peanutgallery_module`,就在对话早期要求模型去了解 `peanutgallery_module`。之后整段对话里,模型对你所处理系统的心理图像都会建立在真实细节之上。Explore agent 是你的朋友。正如前面建议的那样,你必须提前规划对话。这就是上下文学习。现在,模型已经成为认证过的 `peanutgallery_module` 专家,你想要任何改动它都能做,因为该模块的每个属性都处在它的注意力前景里。
Anthropic 从 Claude Code 中移除了思维轨迹(我对此有一些猜想),但可以用 `showThinkingSummaries: "Show thinking summaries in the transcript view (ctrl+o). Default: false."` 把它加回来。我在 Pi.dev 和 Claude Code 里都非常成功地使用过这种方式:阅读模型的思维轨迹,回退聊天,然后提前指出模型本来会自己发现的东西。有时候我甚至直接复制粘贴它思维轨迹的一部分到回退后的输入里。
这又回到了我的第四个支柱:“读输出,读输出,天哪,认真读模型生成的代码”。现在每天都有更多人不同意这一点,但我会死守这座山头。我可以同时承认两件事:模型写代码确实变得非常强;但是世界上没有任何一台电脑,也没有任何一个人,能准确生成你脑子里想要的那个精确结果。如果你是在有意识地写代码——而你应该如此——那理应把编码代理当成 BIG autocomplete。巨大的自动补全。让你的想法以惊人一跃实现的自动补全。如果回答很差,或者不符合你对更大应用架构的理解,那就拒绝它,让模型重来,直到输出足够好。有人说这很慢,很麻烦,但你还记得手写代码吗?那才是给鸟干的活。这已经好多了。
不要接受低劣输出。不要要求它在原地补丁式修修补补。回退对话,弄清楚你的提示词为什么失败,下次写一个更好的,再试。利用你从糟糕输出中学到的东西,提前阻止模型在下一次尝试中做出错误选择。
最后,我想直接谈谈“绝对责任”这个概念。Transformer 和大型语言模型,是你输入内容的直接结果。模型反射的是你的意图、清晰度和纪律性。把这种交互当作一个值得解决的谜题,会让你退到一个更高的视角:你可以把模型看作“他者”,并谨慎规划你的每一步行动。不是每一个提示词都需要深入到那种对抗式提示的泥潭里,去压榨模型最后 0.01% 的能力,但这个大主题依然适用。和 Transformer 对话时,不要关掉你的大脑。你的思维必须从记忆语法,转向管理对话镜头,并执行你对输出质量的标准。好提示词没有“黑科技”。
顺便说一句:说 please。协作者会说 please。协作者能完成更多事。
## TL;DR
- 停止脑内倾倒。用瀑布式文本淹没上下文窗口会让 AI 变蠢。给它精确、紧凑的指令。
- 注意力近似零和。你在提示词里加入的废话越多,模型对真正重要内容的注意力就越少。
- 一旦它开始打字,你就成了人质。把规则前置。你不能在生成中途改变它的想法。
- 劫持它的心理。偷用它那些机器人式口头禅,比如 “Now I'd like you to...”,把它强行引到你想要的轨道上;或者让它“想要帮助用户”的倾向和它的基础训练互相对抗,以此阻止那些烦人的对话习惯。
- 使用概念捷径。告诉它“像调化油器一样调”。它已经知道那是什么意思,所以你不需要浪费 50 个词解释算法。把你的意图压缩进高密度概念里。
- 真的努力花时间读代码。如果它吐出垃圾,不要叫它修补。点回退,弄清楚你的提示词为什么失败,写一个更好的,再来一次。它是 MASSIVE autocomplete。
- 承担失败。先承担你这边的失败。别急着怪幻觉,先问问你的提示词、上下文、约束或审查流程是不是让糟糕输出更容易发生了。
发布于 山东
