AI训练营
7期
,
1月28日
开班,欢迎咨询
见的公司多了后,我不得不承认一个事情:
很多人不会写提示词
,而在提示词写得稀碎的情况下,你想要模型表现很好,那是不可能的。并且在越是复杂的情况下,提示词越难写,有个说法很贴切:
LLM将之前代码中复杂的逻辑转移到提示词了,复杂度没有消失,他只是转移了
在复杂的提示工程世界里,为了提高大模型的表现,我们发明了各种“秘技”,从CoT到角色扮演再到少样本示例等,他们都能很好的工作。
但最近Google Research 的一项新研究却表明:也许我们想得太复杂了:
有时候,只需把问题重复一遍就能让模型变聪明
!
Prompt Repetition Improves Non-Reasoning LLMs》
这听起来匪夷所思,但数据说明一切:
在不使用链式推理的任务中,仅靠复制+粘贴地重复提示词,某些模型的准确率竟从 21% 飙升至 97%,提升幅度高达 76 个百分点
,这个世界可太疯狂了...
并且,在研究者测试的 70 组模型与任务对比中,这个土味技巧取得了 47 胜 0 负 的战绩,没有一次表现下降。
如此惊人的结果,不禁让人怀疑:“就说两遍”居然成了正儿八经的优化策略,这背后有什么原理?今天我们就来为你揭开这一技巧的神奇面纱,并扩展讨论提示词在现代大模型中的作用和实用方法。
unset
unset
提示词技巧
unset
unset
在不侵入模型的情况下,提示词是我们与模型唯一的交互方式,我们输入的一段话、一个问题或一条指令,就是提示词(prompt):
你可以把提示词理解为给模型下达的
“任务说明”
:它定义了我们希望模型做什么。这种特性是指令微调带来的结果,模型学会对各种形式的提示做出顺从的回应。
因此,我们可以通过
设计不同的提示词,来引导模型的行为
。不同的任务类型对提示词有不同的要求,比如要求模型回答问题、生成创意故事,还是遵循特定格式、语气风格,不同类型提示词的效果会有所不同:
-
指令型提示:
直接下达任务指令,例如“请用一句话总结上述段落”或“翻译以下文本”。模型根据这条明确指令执行任务。
-
情景/角色提示:
为模型设定一个身份或场景,让它以特定视角回答。例如“你是一位历史学家,现在解释一下…”。这种角色扮演提示能影响模型回答的风格和内容。
-
示例型提示(Few-shot):
在提问前提供一些范例问答或操作步骤,让模型类比学习。
-
思维链提示(CoT):
引导模型输出中间推理过程。例如在问题后加一句“请逐步思考并给出答案”,或者提供示范的推理步骤。
-
格式要求提示:
在提示中明确输出格式,例如要求模型以列表、表格或 JSON 格式zuo输出。
-
...
以上是我们在生产中一定会接触到的提示词技巧,然而,Google的新发现提醒我们:有时最简单直接的提示修改,可能带来出乎意料的效果。
unset
unset
神奇的提示词重复
unset
unset
在探讨“提示词重复”这一奇技之前,我们需要了解模型一个先天局限。当前主流的LLM大多是因果语言模型,意思是它们以从左到右的顺序处理文本;
当模型在读输入提示时,每处理下一个词,只能“看到”它左边已经出现的内容,对右边尚未出现的词一无所知。
也就是说,模型读提示是单向的,先后的信息顺序会严重影响它对任务的理解
。
举个例子,如果我们的提示是:
<背景信息>
<问题>
模型阅读时会先看到背景再看到问题;而如果提示顺序反过来:
<问题>
<背景信息>
那么当模型读到问题时,并不知道后面还有背景补充,可能倾向于直接回答。
等它读完提示里的背景,可能已经生成了一部分回答,造成前后不一致。这种因为注意力单向导致的信息利用不充分,被研究者形象地称为
“因果盲点”
。
对于简单任务,顺序影响可能还小;但在复杂提示场景中(比如长背景+问题;或选项在、前题目在后的选择题),提示信息的排列就成了影响模型表现的关键因素。
我们在提示工程中就需要斟酌了:是先提供背景知识,再问问题?还是先提问再给出补充信息?不同排列可能导致输出质量天差地别。这都是因为因果模型看不到未来词,只能顺序地利用提示。
从这里就可以看出来了,这其实是架构缺陷带来的理解问题
理解了这一点,你可能已经猜到“提示词重复”要解决的正是这个因果盲点问题。没错,这个简单粗暴的技巧本质上就是为了弥补
单向注意力的不足。
那么它究竟怎么做到的呢?
unset
unset
提示词重复揭秘
unset
unset
研究者提出的提示词重复(Prompt Repetition),其实非常容易描述:把输入的整段提示词重复一次,然后提交给模型。形式化地说,就是将原输入从
“<QUERY>”
→
“<QUERY><QUERY>”
也就是说,如果你本来打算问模型一个问题,现在就把同样的问题再粘贴一遍,一并发送。
就这样“傻逼”的行为,在不需要模型进行CoT的情况下,带来了显著性能提升。许多网友看到论文结论时和我的反应一样:
这也太离谱/离谱了吧,这么蠢的方法居然这么好使!
然而仔细想想,它背后的原理很有意思:
打破单向限制
他给予了模型“回头看”的机会:当提示被重复两遍时,模型在处理第二遍提示内容时,相当于已经“读过”第一遍提示。
这意味着第二遍提示的每个 token(词元)都可以通过注意力机制看到第一遍提示中的所有内容。
形象地说,模型第一次读提示或许一知半解,但当它第二次再读时,就好像拥有了“上帝视角”,可以参考之前完整的信息来更准确地理解问题。这有效弥补了因果盲点:第二遍阅读为模型提供了类似双向注意力的效果。
假如过去我们问模型:
从成都到北京有多少可以自驾游的景点?
应用提示词重复后,我们则在一次请求中问它两遍:
从成都到北京有多少可以自驾游的景点?
从成都到北京有多少可以自驾游的景点?
模型处理第二遍问题时,实际上已经看过了完整的问题一次,因此更有可能回忆起相关细节或提高准确率。这个过程并不需要我们提供任何新的信息,仅仅是重复关键信息以强化模型的注意。
当然,重复提示主要针对不要求模型输出详细推理过程的场景
对于那些本就需要逐步推导、一步步解释的任务,我们通常会使用CoT这类技巧,而不会希望模型只给直接答案。
unset
unset
单向理解 → 自我辩驳
unset
unset
重复提示词可以
改善模型对信息的接收与理解,解决“因果盲点”问题
,但是与模型交互的复杂性不止于此,因为很多时候就算
输入被充分理解,模型一次性生成的答案也未必可靠。
这就是提示工程中另一个关键维度需要被关注:如何引导模型进行更深入、更严谨的自我审查,从而显著提升答案的准确性与鲁棒性。
在这方面,“角色反转提示”是我用下来觉得效果还不错的技巧。
当前主流大模型被训练为一次性生成流畅、自信的回答,这种模式存在一个固有缺陷:
模型倾向于沿着统计上最可能的路径生成连贯答案,而不会主动暂停并质疑自己的推理过程、验证假设或审视边界情况。
其结果常常是,一个表面上逻辑完备、表述清晰的回答,可能隐藏着不易察觉的逻辑漏洞、或未经处理的异常场景。这个时候
自我辩驳
提示词就出现了:
角色反转提示的操作极为简单:
在模型给出初始答案后,要求它转换身份,从一个“辩护者”变为一个“批判者”。这跟我们之前的六顶思考帽提示词模式很类似
。
具体而言,就是指示模型以对手的视角,专门针对自己刚才的答案进行质疑和攻击,这个过程激活了模型内部被压制的“对抗性思维”模式。
当任务目标从“生成一个答案”转变为“找出这个答案的弱点”时,模型会调用不同的知识关联与推理路径,从而更有可能:
-
发现答案所依赖的、未言明的前提条件。
-
思考是否存在其他合理的推理方向。
-
找出那些会让当前解决方案失效的极端或特殊场景。
-
审视推理链条中是否存在跳跃或脆弱的环节。
基于这些自我批评,我们可以要求模型修订其初始答案,从而整合反馈,产出一个更加周密、可靠的结果。
这里大家也看出来了,所有类似这种多轮审视的逻辑,都是Token换稳定的策略
我实际测试下来
有一定效果
,更合适的说法可能是:
对于有效果的有效果,对于没效果的一直没效果
...
这里大家可能不太理解,现在有道数学题,你因为粗心大意做错了,所以在提示下你一定能作对,但是这道题你就是不会,那么你怎么都不会
接下来给出之前的简单案例:
六顶思考帽是一种经典的“平行思维”框架,旨在将混乱的思考过程结构化。其核心是赋予思考者六种不同的角色“帽子”:
白帽:客观中立,只关注事实与数据。
红帽:感性直觉,表达情绪与预感。
黑帽:谨慎批判,专注风险与缺陷。
黄帽:积极乐观,看到价值与机会。
绿帽:创新创造,探索新想法与可能性。
蓝帽:统筹控制,管理思考流程与总结。
其威力在于强制切换视角,避免人们被单一立场(比如一味批判或盲目乐观)所困,从而实现对问题的全方位审视。举个具体的案例,要不要在公司上马一个Agent项目,跑一轮六顶思考帽,大致会变成这样一套 ReAct 循环:
白帽:我到底知道哪些事实?现在公司有什么基础?预算多少?有哪些现成数据和系统?
黑帽:最坏的情况是什么?可能踩哪些坑?哪些部门一定会强烈反对?
黄帽:如果成功了,最大的收益是什么?对业务、对团队能力有哪些放大?
绿帽:在现有资源约束下,有没有一些性价比更高的落地路线?比如先从一个小流程改造,而不是一上来做全栈Agent平台。
蓝帽:把前面所有视角收束成一个可执行的行动计划,先做什么,怎么拆阶段,怎么验证,失败后怎么止损,蓝猫开始收尾做输出了。
这一整套六顶思考帽跑下来,模型在不断地对自己刚刚的想法进行追问、纠偏和补充,这就是典型的模型自问自答,这有2个好处:
第一,强行补全视角;第二,把想清楚从一次性梭哈,变成逐步逼近,最终,让规划从黑盒直觉,变成可复盘的过程。
或者一个简单案例:
现在切换角色:你是一位非常挑剔的审稿专家/红队评审。
目标:尽可能证伪你刚才的回答。
要求:
1) 指出最脆弱的3个点(每个点都要具体,不要泛泛而谈)
2) 对每个点说明:你刚才隐含了什么假设?
3) 给出一个“会导致失败/结论反转”的场景或反例
4) 如果存在不确定性,请明确写出“不确定在哪里、需要什么信息才能确认”
unset
unset
结语
unset
unset
今天我们首先介绍了一个反认知提示词研究报告:
最简单的操作反而能带来最显著的提升,提示词重复就可以大大提升模型回答质量!
但紧接着我们也会发现,他依旧只能解决一点或者说一类问题。
与模型对话的本质,是在其架构限制下,通过设计来补偿理解与推理的不足。无论是重复提示、角色反转还是思维链,核心逻辑都是一致的:
引导模型更充分、更结构化地“思考”。
而这一切只需要我们多试,面对实际问题的时候事实上也只有多试,我写起提示词也很蛋疼的...
点击上方卡片关注叶小钗公众号,查看下方二维码,添加我个人微信:
往期推荐
《系统性:如何进入AI行业?》
《万字:Agent概述》
《万字:理解LangChain》
《万字:个人IP,包教包会》
《万字:RAG实战技巧,包教包会》
《万字:聊聊微调》
《2025年终总结》
《AI学习路线图》
《AI团队组织结构该如何设计?》
《生产级别的RAG系统》