概念
设计和优化输入文本(即提示词)的技术和方法。其核心目标是通过精心构造的提示词来引导模型产生更加准确、相关且有用的输出。
分类
介绍多种提示词工程上的应用
Zero-Shot Prompting
此类提示词无需提供任何任务相关的例子,直接通过自然语言描述任务。适用于模型已经具备广泛知识和推理能力的情况。
Few-Shot Prompting
此类提示词在提示词中提供几个类似任务的例子,帮助模型理解任务的要求。适用于任务定义不明确或需要特定格式的情况。
Chain-of-Thought (CoT) Prompting
此类提示词通过设计多步骤的逻辑推理过程,引导模型逐步思考并解决问题。适用于需要复杂推理的任务,如数学问题求解、逻辑推理等
Automatic Chain-of-Thought (Auto-CoT) Prompting
此类提示词,使用‘"Let's think step-by-step’这样的词语,自动生成思维链,避免了人力编写。同时模型可以生成多条推理链并选择其中最优的。
Self-Consistency
“自我一致性”的解码策略,不使用传统的贪婪解码策略,而是随机生成多条思维链,然后评估这些不同思维链之间的一致性,选择出现的共同结论或模式,来提高模型的推理能力。
Logical Chain-of-Thought (LogiCoT) Prompting
在传统思维链中引入归谬法来验证模型生成的每一步推理,并提供有针对性的反馈以修正错误步骤。形成“思考-验证-修订”循环,不断优化推理链。通过严格的验证和修订机制,LogiCoT可以显著减少推理过程中的逻辑错误和幻觉现象。
Chain-of-Symbol (CoS) Prompting
传统的大语言模型依赖自然语言,然而自然语言包含大量的歧义,CoS使用简洁明了的符号来代替自然语言描述,能够更加精准,减少歧义和误解,使推理过程更加透明,便于人类理解验证。
Tree-of-Thoughts (ToT) Prompting
是CoT的一种升级方案,通过管理一个中间推理步骤的树结构,这些中间步骤被称为“thoughts”(思维)。每个thought代表一个连贯的语言序列,逐步接近最终解决方案。这种结构允许语言模型有意地进行推理,通过评估各个thought在解决问题中的进展来做出决策。同时还可以进行前瞻和回溯
Graph-of-Thoughts (GoT) Prompting
相比于传统思维链的线性思维,GoT建模为有向图,模拟人类的非线性思考方式,提供了动态交互、回溯和评估想法的能力,点之间可以灵活连接,允许多个thoughts之间的相互作用和组合。
System 2 Attention (S2A) Prompting
传统的大模型任务使用注意力机制来确定内容重要的部分,但这种机制有时会不小心关注到不相关的上下文信息,导致生成的内容不够准确或相关。S2A建立了一个工作流来解决这个问题
- 模型首先读取输入的所有信息
- 模型利用自己的推理能力,找出哪些部分是真正重要的,哪些部分是无关的
- 模型根据找出的重要部分,重新生成一个更精炼的上下文,去掉无关的信息
- 模型使用重新生成的精炼上下文来生成最终的回答
Thread of Thought (ThoT) Prompting
传统的大型语言模型(LLMs)在处理复杂和混乱的上下文时,因为这些上下文包含大量的信息,需要细致的推理和分析,会比较困难,ThoT提出了一种工作流来优化这种任务
- 将复杂的上下文分成多个小段,每个小段包含一部分信息
- 模型首先对每个小段进行总结和初步分析,提取关键信息。
- 基于初步总结,模型进一步细化每个小段的信息,确保理解的准确性。
- 将细化后的信息整合起来,形成最终的响应。
Chain-of-Table Prompting
应对处理复杂的表格数据的场景,通过动态生成和执行常见的SQL/DataFrame操作来实现表格数据的逐步推理。具体工作流如下:解析问题,生成查询操作,执行查询操作,统计信息推理,得到最终结果。
Retrieval Augmented Generation (RAG)
通过使用信息检索的方式利用外挂数据库,来提高了模型的响应质量和准确性,详情可以看RAG栏目
ReAct Prompting
使大型语言模型能够同时生成推理轨迹和任务特定的行动。这种交错的处理过程增强了推理和行动之间的协同效应,帮助模型在处理任务时更好地诱导、跟踪和更新行动计划,同时处理异常情况。具体工作流程如下:输入问题,模型进行推理和行动(调用一些其他工具),根据反馈调整,多次迭代,整理输出
Chain-of-Verification (CoVe) Prompting
针对大模型的幻觉问题,CoVe提出了一中带有验证机制的工作流,包含以下四个步骤:生成基线响应,设计验证问题,独立回答验证问题,生成修订响应
Chain-of-Note (CoN) Prompting
传统的rag无法保证自己检索到的信息是准确的,可能导致误导性的响应,CoN 方法提出一种工作流来系统地评估和处理检索到的信息,具体工作流程如下:根据提问检索相关信息,模型检索文档评估与输入问题的相关性,整理检索到的文档生成结构化笔记,整合笔记生成最终响应。
如果检索到的信息不足,模型能够正确地回应“未知”。而不是根据幻觉生成答案
Chain-of-Knowledge (CoK) Prompting
传统的LLM在面对复杂的推理时,其效能显著下降,经常导致不可靠的输出,这些问题包括事实性幻觉和不透明的思考过程。CoK提出一种工作流程,能够显化大模型的思考过程,提高模型的推理能力和响应质量,具体的工作流程如下:(1)全面推理的准备阶段,根据上下文信息,建立背景与知识框架;(2)动态知识适应阶段,通过内部或者外部的知识库仔细整合信息,(3)将任务拆解成不用的多个小任务;(4)分步骤进行推理;(5)整合最后的结果生成响应
Active Prompting
传统的CoT方法依赖于固定的人工标注范例,主动提示引入了一种机制,用于确定最需要标注的问题。智能地选择那些模型不确定如何回答的问题来进行人工标注,然后利用这些标注过的例子来优化模型的表现。模型会尝试解决一批未见过的新问题。对于每个问题,模型不仅要给出答案,还要估计自己对这个答案的信心程度。这一步骤中,模型可能会发现某些问题特别难解,即对这些问题的答案非常不确定。 对于这种数据进行专家标注,在进行模型微调,循环往复迭代
Automatic Prompt Engineer (APE)
传统的提示词工程都是手动设置的,APE通过动态生成和选择最具影响力的提示来突破静态、手工设计提示的局限性,通过对用户输入的分析,创建候选指令,然后利用强化学习技术选择最优提示,使其能够实时适应不同的上下文环境。
Automatic Reasoning and Tool-use (ART)
传统的语言模型在复杂任务中推理能力有限及缺乏外部工具利用,ART通过多步骤过程推理和无缝集成外部专业知识,增强了LLM的能力。
Contrastive Chain-of-Thought (CCoT) Prompting
传统的链式思维提示方法在训练大型语言模型时往往忽略了一个重要元素:从错误中学习。为了解决这一问题,Chia等人在2023年提出了对比链式思维提示。CCoT提供有效和无效的推理示范,与原始提示一起使用,帮助模型从正反两方面的例子中学习。
Emotion Prompting
传统的大语言模型在理解和处理心理和情感线索的能力仍存在不确定性,EP通过在提示中附加11种情感刺激句子来增强LLM的情感智能。
Scratchpad Prompting
传统的大型语言模型在生成基本编程任务的代码方面,需要精确推理的复杂、多步骤算法计算时仍然面临挑战。SP引入了“草稿纸”概念,使模型能够在提供最终答案之前生成一系列中间步骤,通过验证中间步骤的准确性进而提高模型性能。
Program of Thoughts (PoT) Prompting
PoT通过使用外部语言解释器进行计算步骤来增强语言模型的数值推理能力。具体工作流程如下:拆解问题,利用计算机编写代码的,使用编程手段得到结果并展现结果
Structured Chain-of-Thought (SCoT) Prompting
在针对代码生成任务中,SCoT将程序结构(如顺序、分支和循环结构)融入到推理步骤中,从而增强了大型语言模型在生成结构化源代码方面的表现。
Chain-of-Code (CoC) Prompting
代码链,针对代码生成任务,鼓励语言模型将语义子任务格式化为灵活的伪代码,这样可以利用解释器捕获未定义的行为,并通过“LMulator”(一种模拟器)来模拟这些行为,具体工作步骤如下:根据任务描述生成伪代码,解释器解析伪代码查找错误,基于解释器的错误进行反馈生成代码。
Optimization by Prompting (OPRO)
利用大型语言模型作为优化器。与传统优化方法不同,OPRO使用自然语言提示来迭代生成解决方案,根据问题描述逐步优化解,从而快速适应不同的任务并定制优化过程。
Rephrase and Respond (RaR) Prompting
由于人类思维框架与LLMs之间的差异,RaR允许LLMs在提示中重新表述和扩展问题,从而提高模型的理解能力和响应准确性。
Take a Step Back Prompting
专门针对高级语言模型(如PaLM-2L)在复杂多步骤推理中的挑战。这种创新方法通过抽象提取高层次概念和基本原理,帮助模型从具体实例中进行推理。