提示词工程
一、遵循原则
从生成式模型的生成原理出发,其有几个特性是需要工程师极其关注的,这在prompt对模型生成过程中有极为重要的影响,了解prompt对生成的影响逻辑后,才能更高效率为大模型提供一个优秀的上下文环境。
- Lost in the Middle现象:模型的注意力机制核心聚焦于前20%和后20%的内容中,也就是“首位效应”,其有意思的说法是,人类在写文章时习惯性低开头突出重点,结尾来个总结,那么大模型学习数据过程中,也符合这个规律,也就是人类注意力机制的特点。
- 明确指令,顺序引导:大模型对多步骤推理的准确性依赖显式分解,模糊指令会导致模型“猜测”意图,增加幻觉风险。
二、方法论
在研究提示词前,我们需要先了解提示词是如何影响模型的输出行为的,目前大多生成式模型都是基于Transfomer模型训练而来的,在Transfomer的通用模型中,Prompt是干预了模型推理时的前向计算过程,影响权重矩阵的激活模式,从而影响输出。
Prompt在输入时,会转为词嵌入,在自注意力计算中,Prompt的词会通过注意力权重影响后续生成的每个词的上下文表示,Prompt会改变注意力头的Q、K的点积结果,从而调整注意力权重,比如Prompt包含"Summarize:",模型会激活“总结”相关的注意力头(某些WQ,WK矩阵的特定行被强化)。最终,在解码器中,间接调整W_out的输出概率,从词表中获取概率最高的输出词。例如:"Translate to French: cat"会使输出时,在法语词表部分(如”chat”)的概率升高。
那么模型又是如何“知道”生成哪个词?这取决于预训练的知识编码,模型通过海量文本预训练,学习到的知识编码在W_out和注意力权重中,所以在计算过程中,就是理解语义和生成词语的过程。
下面直接学习提示词工程的技巧,帮助我们更高效率生产一个优秀的Prompt。
2.1 基本描述
指令明确清晰
直接讲清楚动作、需要执行的内容和目标,不要假设模型会自行推断意图,用简单的语言描述清楚需求,换位思考一下,对于一个不熟悉的领域,别人如何和你讲解,你能更好理解呢?
最佳实践
1、跳过开场白,直接说任务内容,最好一句话澄清。 2、主谓宾结果澄清任务内容。 3、直接使用动词开头,如“生成”、“创建”,不用澄清“帮我”类似的指令。
提供背景和动机
明确的指令很重要,但澄清指令背后的原因也很重要,减少模型猜测执行的背景是什么。 什么时候需要提供背景? 1、解释输出的目的或受众 2、澄清为何存在某些限制 3、试图解决什么问题
内容具体
详细的提示词应该包含以下元素:清晰的输出限制、相关背景(受众和目标)、执行任务的具体思路。
使用示例
什么时候需要用这个技能呢,这是用于阐明难以单纯用文字描述的细微要求。 何时使用示例: 1、需要特定的语气或风格。 2、任务涉及微妙的模式和管理 3、简单的指令无法产生一致的结果【慢慢通过few slot来调整】。
主动让模型表达不确定性
如“如果数据不足以得出结论,请直接说明,不要臆测”
2.2 进阶版
预填AI回复
预填功能是基于Transformer输出时,是自回归生成的,即模型在训练过程中,只能基于当前token的先前内容来预测下一个token,这样预填的方式,可以引导输出结构更明确,适合以下场景 1、需要AI输出格式化的格式 2、希望跳过开场白,减少无用重要的信息。 3、需要保持特定的口吻 4、需要控制AI回答的开头内容。
COT提示词
要求AI在回答之前先进行逐步推理,这种技术对于需要结构化思维的复杂分析任务中非常有效,适合以下场景: 1、涉及逐步推理的执行任务 2、需要AI输出有理有据,输出较为明确的内容。 3、提供可见的推理过程
常见实现方式有
- 基础思维链中,“请一步步思考”,没有任何的思考引导。 •引导型思维链,设定具体的推理过程,”首先“、”然后“.....
- 结构化思维链,使用标签来框住思考过程,然后在主Prompt中引用该思考过程。
提示词链
链式操作将复杂的任务拆解为更小的连续步骤,多个独立的prompt,也就是多次API调用。
角色提示
通过角色人设可以引导模型输出风格,适合场景是: 1、需要输出中保持语气一致 2、构建特定人设的应用程序 3、需要具备专业领域的背景知识 但是,通常,明确想要的视角比单纯分配角色更有效。
2.3 融会贯通
最好的Prompt不是所有技巧都用上,而是把最该用的技巧用上,那么我们如何决策使用什么技巧呢? If you need...Use...
- 特定的输出格式:示例、预填或明确的格式指令
- 逐步推理:扩展思考(Claude 4.x)或思维链
- 复杂的多阶段任务:提示词链
- 透明化推理过程:带有结构化输出的思维链
- 防止幻觉:允许回答“我不知道”
三、最后
提示词工程是上下文工程的基石,对于Agent的建设至关重要,最好的提示词不是最长或最复杂的,而是以最简约的结构激活模型需要重点关注的权重。