提示工程调查报告《The Prompt Report: A Systematic Survey of Prompting Techniques》
Core Prompting Techniques
Text-Based Techniques术语(表)结构章节对照:
Text-Based Prompt Tech
ICL指的是GenAI“学习”技能的能力(并不是真的学习),可以从存在于prompt中的相关说明或直接提供的示例中学习,而无需更新权重(或者就没有学习,直接使用了训练数据中已存在的知识);
Few-Shot Prompting:少量样本提示,就像这样:
2+2: four
4+5: nine
8+0:
这里样本/样例 的 英文是 Exemplar,后面我们尽量统一将其标识为“范例”,而不再指代样本这样的常用词;
制作 Few-Shot Prompting 时实用的6个主要设计方法(注意这些方法并不适用于所有任务):
Q:{input}, A:{label}
8+0
,就不要使用八加零这样的query;
Few-Shot Learning(FSL)少量样本学习,经常与 Few-Shot Prompting 混淆,但要注意的是:FSL是一种更广意义的机器学习范式,它可以使用少量的样例去调整模型参数,而Few-Shot Prompting专门应用在prompt中,不涉及更新模型参数;
Few-Shot Prompting Techniques,这里介绍了几种选择和测试样本相近样本的几种技术:
Q:{input}, A:{label}
这样的常见格式,而是分析大语料库,提取出出现频率更高的格式;零样本提示,以下介绍独立的零样本技术,后续还会讨论zero-shot与另一个概念“思维链”的结合;
zero-shot techniques
“重新表述和扩展问题,然后回答(Rephrase and expand the question, and respond)”
“再次阅读问题(Read the question again)”
,这在处理复杂问题时可改进基准;思维生成,涉及一系列的技术,可以在解决问题时,帮助LLM阐明其推理过程;
Chain-of-Thought (CoT) Prompting:思维链(CoT)提示
# 这是一个 One-Shot 的 CoT
Q: 杰克有两个篮子,每个篮子里有三个球。杰克一共有多少个球?
A: 一个篮子有3个球,所以两个篮子里有 3 * 2 = 6个球。
Q: {question}
A:
Zero-Shot-CoT:
“让我们一步一步思考(Let’s think step by step.)”
“让我们一步一步地解决这个问题,以确保我们得到正确的答案(Let’s work this out in a step by step way to be sure we have the right answer)”
1)Step-Back Prompting:
2)Analogical Prompting:类比提示
3)Thread-of-Thought (ThoT) Prompting:思路提示
“一步一步地引导我完成这个可管理的部分,并在过程中进行总结和分析(Walk me through this context in manageable parts step by step, summarizing and analyzing as we go.)”
;4)Tabular Chain-of-Thought (Tab-CoT) :表格式思维链
Few-Shot CoT:
1)Contrastive CoT Prompting:对比性 CoT 提示
不去
推理;2)Uncertainty-Routed CoT Prompting:不确定路由CoT提示
这里的阈值应该指的是推理链的长度
),则选择大多数都支持的结果;如果不高于,则会贪婪采样并选择响应;3)Complexity-based Prompting:基于复杂性的提示
一定长度阈值的链
中使用多数投票;较长的推理
表示更高的答案质量;4)Active Prompting:主动提示
5)Memory-of-Thought Prompting:思维记忆提示
6)Automatic Chain-of-Thought (Auto-CoT) Prompting
Decomposition:分解
1)Least-to-Most Prompting
2)Decomposed Prompting (DECOMP):分解提示
3)Plan-and-Solve Prompting
“让我们先理解问题,并且制定一个解决它的计划。然后,让我们执行计划并逐步解决问题(Let’s first understand the problem and devise a plan to solve it. Then, let’s carry out the plan and solve the problem step by step)”
;4)Tree-of-Thought (ToT):思维树
5)Recursion-of-Thought:递归思维
6)Program-of-Thoughts:思维程序
7)Faithful Chain-of-Thought:可信的思维链
8)Skeleton-of-Thought:
Ensembling:集成
1)Demonstration Ensembling (DENSE):演示集成
2)Mixture of Reasoning Experts (MoRE):混合专家推理
事实推理使用检索增强生成
,对数学推理使用思维链推理,对常识推理使用生成知识提示;一致性得分
从所有专家中选择最佳答案;3)Max Mutual Information Method:最大化相互信息
4)Self-Consistency
:自洽性
多种推理路径可以得出相同答案的直觉
;温度
来引出不同的推理路径;5)Universal Self-Consistency:通用自洽性
不是用过程序计算
出现频率来选择(多数支持的)答案,而是将所有输出插入提示模版中来选择多数答案;6)Meta-Reasoning over Multiple CoTs:多个 CoT 上的元推理
链
插入到单个提示模版中,然后从中生成最终答案;7)DiVeRSe:
多个提示
,然后对每个提示进行自洽,从而生成多个推理路径;8)Consistency-based Self-adaptive Prompting (COSP) :基于一致性的自适应提示
范例
包含在最终提示中;9)Universal Self-Adaptive Prompting (USP):通用自适应提示
评分函数
来选择样本;(可见,使用外部工具/插件的能力,已经被看作是LLM常用能力之一)10)Prompt Paraphrasing:提示解释
Self-Criticism:自我批评
1)Self-Calibration:自我校准
2)Self-Refine:自我完善
提示LLM根据反馈改进答案
;此迭代过程持续进行知道满足条件为止(如达到最大步数)3)Reversing Chain-of-Thought (RCoT):逆向思维链
答案
构建问题;修改生成的答案
;4)Self-Verification:自我验证
5)Chain-of-Verification (COVE):验证链 (COVE)
6)Cumulative Reasoning:累积推理
基于文本的提示技巧有很多,但只有一小部分被经常用到,如:Few-Shot Learning、Zero-Shot Reasoning、Good In-Context Examples、Self-Consistency、Prompt Order Sensitivity、Least-to-Most Prompting、Prompt Retrieval、Human-Level Prompting、Automatic CoT、Self-Ask、Tree of Thoughts等;
Meta Prompting:元提示
AutoPrompt:
Automatic Prompt Engineer (APE)
提示
;Gradientfree Instructional Prompt Search (GrIPS) :无梯度教学提示搜索
Prompt Optimization with Textual Gradients (Pro-TeGi):使用文本渐变进行提示优化
RLPrompt:
Dialogue-comprised Policy-gradient-based Discrete Prompt Optimization (DP2O) :
这是一个从LLM的输出中提取答案的算法中开发或选择 的迭代过程;
这里考虑一个二分类任务:
这是“仇恨言论”还是“非仇恨言论”:
{文本}
中的输出可能不仅仅包含标签值,还可能包括一些其他的辅助描述信息,这导致响应格式存在差异,很难一致的解析;而使用改进的提示仅在一定程度上有帮助;
答案工程有三个设计角色帮助解决这一问题:
1)Verbalizer:
2)Regex:
3)Separate LLM