ingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">一般而言,通过直接与聊天机器人进行对话的提示词不是高级提示。而通过api等方式,更加直接、精细化的控制模型输出是一种高级提示工程。ingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;color: rgb(15, 76, 129);">1. 什么是提示工程?ingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">提示工程拆解开来,有二个词,“提示”和“工程”。ingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;font-size: inherit;color: rgb(15, 76, 129);">提示是指引导模型输出正确的令牌token序列。ingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;font-size: inherit;color: rgb(15, 76, 129);">工程涉及设计、评估、优化、调试的过程。
ingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;font-size: inherit;color: rgb(15, 76, 129);">提示工程是指设计高质量提示以引导模型产生准确输出的过程,但是这一过程是涉及反复调试以找到最佳提示的过程。
ingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;font-size: inherit;color: rgb(15, 76, 129);">对于不同模型,了解模型能力,需要针对性的设计提示词,以获取最佳提示。ingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;color: rgb(15, 76, 129);">2.影响模型输出的,除了提示词,还有LLM输出配置ingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;color: rgb(15, 76, 129);">2.1 输出长度 (Output length)ingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">输出长度是对llm响应生成令牌数量的限制,需要注意的是,对其进行限制仅仅意味是让大模型停止预测而言,而不会使模型输出更加简洁。想要输出更加简洁,仍然需要通过提示本身来限制。2.2采样控制 (Sampling controls)
大模型的基本原理是预测引擎,但是其预测并不是简单直接就输出下一个令牌,而是诸多令牌的概率,通过进行采样,设置合适的温度 (Temperature)、Top-K 和 Top-P,可以处理预测的令牌概率,从而选择单个输出令牌。
2.2.1温度 (Temperature)
温度控制的是输出令牌的随机性,提供了一个在可预测性/事实准确性与创造性/多样性之间的平衡。
- • 温度值越高,意味期望输出偏向确定性,例如一些事实性的场景。
- • 温度值越低,意味期望输出偏向创造性,例如一些文案创作的场景。
- • 温度值为零,意味期望输出完全确定性(贪婪解码),但是仍然并不意味着总会得到相同的输出,因为可能会存在概率相同的令牌。
2.2.2Top-K 和 Top-P (Top-K and top-P)
除了通过温度来控制大模型输出的随机性,还可以通过Top-K 和 Top-P来,他们主要是限制预测的令牌来自较高可能性的令牌。
- • Top-K 表示从模型预测的分布中采取概率最高的K个令牌。
- • Top-P 表示选择累积概率不超过某个值 (P) 的最高概率令牌。
- • 其值范围从 0(贪婪解码)到 1(LLM 词汇表中的所有令牌)
2.3 综合运用 (Putting it all together)
在 Top-K、Top-P、温度和要生成的令牌数量之间进行选择,取决于具体的应用和期望的结果,并且这些设置相互影响。
- • 想要特别有创意的结果?? 从温度 0.9、Top-P 0.99 和 Top-K 40 开始。
- • 想要较少创意的结果?? 从温度 0.1、Top-P 0.9 和 Top-K 20 开始。
- • 任务总是只有一个正确答案(例如,回答数学问题)?? 从温度 0 开始
?一般而言,通过下述设置,可以得到相对连贯的结果,具有创造性但是不过度:
温度 (Temperature)=0.2
Top-P = 0.95
Top-K = 30
3.提示技巧
3.1 通用提示 / 零样本 (General prompting / zero shot)
零样本是一种最简单的提示技巧,不需要示例,模型温度应设置为较低的数字,因为不需要创造性。
3.2 单样本 & 少样本 (One-shot & few-shot)
单样本 & 少样本也就是给出一个或者多个示例。所需示例的数量取决于几个因素,包括任务的复杂性、示例的质量以及使用的生成式 AI(gen AI)模型的能力。
3.3 系统、上下文和角色提示 (System, contextual and role prompting)
- •系统提示 (System prompting)设置语言模型的总体背景和目的。它定义了模型应该做什么的“大局”,例如翻译语言、分类评论等。
?要求输出json格式,限制模型输出结构,在一定程度上限制了模型幻觉。
- •上下文提示 (Contextual prompting)提供与当前对话或任务相关的特定细节或背景信息。它帮助模型理解所提问题的细微差别,并相应地调整响应。
- •角色提示 (Role prompting)为语言模型分配一个特定的角色或身份以供其采用。这有助于模型生成与所分配角色及其相关知识和行为一致的响应
这三种类型看起来会有重合,例如一个包含角色提示的仍有可能包含对上下文的描述,但是仍然有区分,他们代表了指导 LLM 的不同层面或维度。系统提示设定舞台,上下文提示提供即时的场景细节,而角色提示定义了“演员”的形象。它们可以单独使用,也可以组合使用以实现精细控制
?举一个栗子:系统提示可能定义任务为“翻译文本”,带有强制性的特点,上下文提示可能提供源文本和目标语言,而角色提示可能指定“扮演一名专攻法律文件的专业翻译”
3.4 回退提示 (Step-back prompting)
回退提示意思是刚开始不直接描述问题,而是首先提示llm先考虑与当前任务相关的但是更加一般性、更加普遍的问题,然后基于这一回答将其作为上下文输入到后续针对具体任务的提示词中。
3.5思维链 (Chain of Thought - CoT)
思维链提示是指提示大模型通过生成中间推理步骤来提供模型输出能力。
?技巧:
1.在提示词中添加“让我们一步一步思考”;
2.思维链结合单样本/多样本示例,其能力将更加强大。
3.6 自我一致性(Self-consistency)
思维链提示主要是通过生成中间推理步骤来提升模型输出准确性,但是往往好的推理路径并不是一条,可以通过多次重复使用思维链提示,在多个回答结果中,选择最常见的答案,确保模型输出的稳健性。
3.7思维树(Tree of Thoughts - ToT)
对于复杂任务,推理路径可能不是简单的线性路径,而是非线性。思维树提示从线性或独立的推理路径转向更结构化的探索策略,允许模型在每一步考虑替代方案,可能回溯,并评估不同的分支,模仿更深思熟虑的人类解决问题的方法。类似一棵树,通过不同的分支探索最佳推理路径。
详情可以查阅文件《大型语言模型引导的思维树》(Large Language Model Guided Tree-of-Thought)的思维树(ToT)
3.8 ReAct (推理与行动 - reason & act)
大模型具备文本生成能力,但是多样性的场景应用需要的不仅仅是文本生成,通过外部工具(搜索、代码解释器等)的结合,更好的扩展大模型的能力。这也是迈向智能体的第一步。
3.9 自动提示工程 (Automatic Prompt Engineering - APE)
也就是用AI生成提示词,编写一个提示来生成提示词。其核心包括通过一些指标评估候选的指令,例如BLEU(双语评估替补)或 ROUGE(面向召回的要点评估替补)。
3.10 代码提示 (Code prompting)
- • 翻译代码的提示:帮助将代码从一种语言翻译到另一种语言
- • 调试和审查代码的提示:帮助修订代码bug,将错误信息和代码作为上下文提供给大模型。
4. 最佳实践
- •提供示例,给大模型展示期望的输出或者类似的响应。
- •告诉做什么,不要告诉不要做什么,大模型一般更加喜欢积极的指令。
- • 对于非创造性任务,如提取、选择、解析、排序、排名或分类数据,让您的输出以结构化格式(如 JSON 或 XML)返回,迫使模型创建结构并限制幻觉。
参考来源:Google 官方提示工程 (Prompt Engineering)白皮书