跳转到正文
Silasye 的博客
返回

提示词工程-提示词优化

之前已经讲过结构化提示词,但是在实际工作中,提示词这个东西基本不可能写出来就一定是可用的,很多时候都是 1 天写提示词,一周优化。。。

zero-shot

第一个版本的提示词如果写得比较简单的话,很可能是没有样本的,也就是示例,这种一般叫 zero-shot,其实就是定了规则,让模型随意发挥。

few-shot

就是给一些示例,让模型有个参考,能更好规范模型的输出,我们都知道抄作业比自己想自己写要快多了,要是抄的学霸的作业,那就是标准答案了,又快又稳,这是一个道理。

系统提示词 & 用户提示词

比如现在打开 chatgpt 的设置,可以找到有地方能够设置回答的风格,我之前就特别不喜欢它的无限夸夸机风格,所以我切换成了一个比较严肃的风格。这个其实就是系统提示词的一部分。

和 chatgpt 对话时,我们发送的消息就是用户提示词,生成回复的时候,是优先遵循系统提示词的规则的。

我没在真正试过,但是也有网友说在各大厂商提供的聊天入口里面,其实很难让 LLM 输出敏感内容的,但是接入大模型的 api 的时候,相对就容易很多,我想这就是系统提示词的威力。

示例的位置

有论文研究表明示例放在提示词不同位置,效果也会收到影响。果然大模型还是硅基生物,所有人味都是伪装的。

论文地址:https://arxiv.org/pdf/2507.22887

我们都知道,好吧或许不是都知道,现在的 LLM 都是基于几年前 google 提出的注意力机制研发的,上下文也是有限的,而 LLM 通常更容易记住首尾两部分的内容。

论文讨论示例放在 4 个位置对模型输出的影响:

  1. ssp, Start of System Prompt,放在系统提示词开始的地方。
  2. esp, End of System Prompt,放在系统提示词结束的地方。
  3. sum, Start of User Message,放在用户提示词开始的地方。
  4. eum, End of User Message,放在用户提示词结束的地方。

最后发现 ssp 效果更好,模型越小,这几种的效果差距越明显。

COT-思维链

Chain Of Thinking,思维链,让模型一步步思考之后再得到答案,而不是直接给出答案。

最无聊的方式就是提示词中加一句“你要一步一步思考得到答案”,再进阶的玩法就是给出一步一步思考的示例,如果需要调用工具,最好是把每一步要调用的工具也给出来。

自我一致性

Self-Consistency,自我一致性,多次调用生成不同的答案,然后取其中最一致的那个作为最终答案。

因为需要多次生成不同的回答,所以可以调节 LLM 的 temperature、top-p 参数来让大模型的回答更加具备多样性。有条件的话,甚至也可以调用多个模型生成回答,也能提升回答的多样性。

TOT-思维树

让模型探索多种方案,并对比优劣,评估给出最优的方案,防止最开始就给出错误的回答。

反思-Reflection

其实就是: 生成->反思->修订->反思->修订->…->最终答案 建立一个循环,每次生成答案后都进行反思和修订,直到最终得到一致的答案为止。

推理+行动 ReAct

ReAct,推理+行动,让模型在生成答案时,先进行推理思考,然后再执行行动得到答案。

  1. 思考推理:做规划,复杂推理,生成具体的执行计划,这一步可以通过 Cot 来做。
  2. 执行行动:根据推理结果执行具体的行动,得到结果。
  3. 观察反馈:根据执行结果观察反馈,判断是否得到正确的结果,如果没有则进行下一轮思考+行动,直到达成目标结果,进入总结阶段。
  4. 总结:根据执行结果,总结出最终的答案。

分享这篇文章:

上一篇
MCP
下一篇
我对 vibe coding 看法