⚱️prompt engineering

type
status
date
slug
summary
category
tags
icon
password
AI summary
Blocked by
Blocking
Category
🥅
从方法论角度总结常用的 Prompt 技法。

一、理解提示工程(prompt engineering)

提示工程的定义

提示工程(prompt engineering)是一种通过特定任务的指令(即提示)来增强模型效能的方法,而无需修改核心模型参数。 这种方法允许预训练模型通过给定的提示无缝集成到下游任务中,从而在不更新模型参数的情况下,仅基于提示来引导模型行为。
提示词是与LLM交互的具体指令,而提示词工程则是围绕如何更有效地与LLM交互、提升LLM性能的一系列技术和方法。提示词工程包含了提示词的设计和使用,但范围更广,深度更深。
通常来说,提示词有以下四种基本元素:
指令:想要模型执行的特定任务或指令。
上下文:包含外部信息或额外的上下文信息,引导语言模型更好地响应。
输入数据:用户输入的内容或问题。
输出指示:指定输出的类型或格式。

二、相关文献

A Systematic Survey of Prompt Engineering in Large Language Models: Techniques and Applications
论文链接:https://arxiv.org/pdf/2402.07927.pdf
https://arxiv.org/pdf/2402.07927
这篇综述性论文系统地分类了29种不同的提示工程技术,并根据其功能、应用、模型和数据集进行分析,介绍每种方法的优势和局限性。

提示技术

notion image
29种不同的提示工程技术:
  1. Zero-shot Prompting(零样本提示)
  1. Few-shot Prompting(少样本提示)
  1. Chain-of-Thought (CoT) Prompting(链式思考提示)
  1. Automatic Chain-of-Thought (Auto-CoT) Prompting(自动链式思考提示)
  1. Self-Consistency(自我一致性)
  1. Logical Chain-of-Thought (LogiCoT) Prompting(逻辑链式思考提示)
  1. Chain-of-Symbol (CoS) Prompting(符号链提示)
  1. Tree-of-Thoughts (ToT) Prompting(思维树提示)
  1. Graph-of-Thought (GoT) Prompting(思维图提示)
  1. System 2 Attention Prompting(系统2注意力提示)
  1. Thread of Thought (ThoT) Prompting(思维线索提示)
  1. Chain of Table Prompting(表格链提示)
  1. Retrieval Augmented Generation (RAG)(检索增强生成)
  1. ReAct Prompting(反应提示)
  1. Chain-of-Verification (CoVe) Prompting(验证链提示)
  1. Chain-of-Note (CoN) Prompting(笔记链提示)
  1. Chain-of-Knowledge (CoK) Prompting(知识链提示)
  1. Active-Prompt(主动提示)
  1. Automatic Prompt Engineer (APE)(自动提示工程师)
  1. Automatic Reasoning and Tool-use (ART)(自动推理与工具使用)
  1. Contrastive Chain-of-Thought (CCoT) Prompting(对比链式思考提示)
  1. Emotion Prompting(情感提示)
  1. Scratchpad Prompting(草稿纸提示)
  1. Program of Thoughts (PoT) Prompting(思维程序提示)
  1. Structured Chain-of-Thought (SCoT) Prompting(结构化链式思考提示)
  1. Chain of Code (CoC) Prompting(代码链提示)
  1. Optimization by Prompting (OPRO)(通过提示优化)
  1. Rephrase and Respond (RaR) Prompting(重述并回应提示)
  1. Take a Step Back Prompting(退一步提示)

(一)零样本提示-Zero-shot Prompting

零样本提示是最基础的方法,在这种方式下,我们仅提供任务描述和输入文本,而不给出任何示例。它完全依赖大语言模型自身的知识储备和从训练数据中归纳总结的能力。例如,当我们询问 “太阳系有哪些行星?” 时,模型凭借其预先学习到的天文知识来回答。
notion image
缺点:对于一些复杂或不常见的任务,模型可能无法准确理解我们的意图,导致输出不够理想。

(二)少样本提示 Few-shot Prompting

few-shot prompting则是通过提供模型少量高质量的示例,这些示例包括目标任务的输入和期望输出。通过观察这些良好的示例,模型可以更好地理解人类意图和生成准确输出的标准。因此,与zero-shot相比,few-shot 通常会产生更好的性能。
notion image

(三)思维链提示Chain of Thought (CoT)

思维链提示通过明确要求模型生成中间推理步骤,显著增强了其推理能力。这使得推理过程更加透明,不仅提高了答案的准确性,对于涉及逻辑推理和问题解决的复杂任务尤其有效。在解决一道逻辑谜题时,模型可以逐步展示其推理过程,
比如 “首先,根据条件 A,我们可以得出结论 X;然后,结合条件 B,进一步推断出结论 Y……”,最终得出答案。这种方式让用户能够清晰地了解模型的思考路径,增加对答案的信任度,同时也有助于模型在复杂任务中更准确地找到解决方案。
deepseekR1之后思维链的功能才显示的暴露给用户,做到产品中去,让大家更明显的感知到思考过程
notion image
notion image

(四)自一致性提示

自一致性提示利用了多个推理路径的优势来提高准确性。具体操作是多次发送相同的思维链提示,并设置较高的温度值,以鼓励模型产生多样化的推理。然后,从这些不同的推理结果中选择出现频率最高的答案。这种方法类似于 “群体智慧” 的概念,通过让模型从多个角度思考问题,减少了单一推理路径可能导致的错误。在处理一些具有模糊性或多种可能解决方案的问题时,自一致性提示能够提高答案的可靠性。
notion image

(五)系统提示 Chain-of-Thought Prompting

系统提示为语言模型设定了整体的上下文和目的。它明确了模型的 “大方向” 任务,例如是进行语言翻译、评论分类还是其他特定任务。此外,系统提示还可用于指定返回的结构或格式,如要求以 JSON 格式输出。
通过系统提示,可以将模型的行为引导到特定的任务框架内,使其生成的输出更符合我们的预期用途。

(六)上下文提示

上下文提示为模型提供与当前对话或任务相关的具体细节和背景信息。这有助于模型更好地理解问题的细微差别,从而生成更贴合情境的回答。
在一个持续的对话中,如果我们提到了之前讨论过的某个主题或事件,通过上下文提示将相关信息传递给模型,它就能基于这些背景知识进行连贯的回应。

(七)角色提示

角色提示要求大语言模型扮演特定的角色,从而影响其输出的语气和风格。通过赋予模型一个角色,如医生、律师、诗人等,模型会根据该角色的特点和知识背景生成相应风格的回答。
当我们希望得到一首富有诗意的描述时,可以让模型扮演诗人的角色;而在寻求法律建议时,则让模型扮演律师。这种提示技术能够为输出增添更多的情感色彩和专业氛围,使其更符合特定场景的需求。

(八)思维树提示 ToT(Tree of Thoughts,ToT)

思维树提示进一步拓展了思维链提示的概念,允许大语言模型同时探索多个推理路径,就像一棵树的分支一样。与思维链提示遵循单一的线性推理链不同,思维树提示能够更全面地考虑各种可能性,因此在需要探索多种选择才能得出解决方案的复杂任务中表现出色。
例如,在制定一个项目计划时,模型可以同时考虑不同的任务安排、资源分配方案等多种可能性,并逐步评估和筛选,最终确定最优的计划,思维树提示可以通过手动精心设计提示来引导模型进行多路径探索
notion image

(九)ReAct 提示

ReAct 框架允许 LLMs 与外部工具交互来获取额外信息,从而给出更可靠和实际的回应。
步骤:在这个过程中,模型首先分析给定的提示,制定行动计划,该计划可能涉及使用外部工具来收集额外信息。
第一步:模型利用其内部知识和外部获取的信息进行推理,将问题分解为更小的步骤,并制定实现目标的策略。
第二步:模型与适当的外部工具(如搜索引擎、API 或数据库)进行交互,执行计划中的行动,如搜索相关信息、检索特定数据点或进行计算。
第三步:模型观察行动的结果,并将新信息纳入推理过程,通过反馈循环不断调整计划和优化方法,直至找到解决方案。
链式思考 (CoT) 提示显示了 LLMs 执行推理轨迹以生成涉及算术和常识推理的问题的答案的能力。但它因缺乏和外部世界的接触或无法更新自己的知识,而导致事实幻觉和错误传播等问题。
ReAct 是一个将推理和行为与 LLMs 相结合通用的范例。ReAct 提示 LLMs 为任务生成口头推理轨迹和操作。这使得系统执行动态推理来创建、维护和调整操作计划,同时还支持与外部环境的交互,以将额外信息合并到推理中。下图展示了 ReAct 的一个示例以及执行问题回答所涉及的不同步骤。

三、通过API调用优化配置

Temperature:简单来说,temperature 的参数值越小,模型就会返回越确定的一个结果。
调高该参数值——大语言模型可能会返回更随机的结果,这可能会带来更多样化或更具创造性的产出。
在实际应用方面,对于质量保障(QA)等任务,我们可以设置更低的 temperature 值,以促使模型基于事实返回更真实和简洁的结果。 对于诗歌生成或其他创造性任务,适度地调高 temperature 参数值可能会更好。
Top_p:使用 top_p(与 temperature 一起称为核采样(nucleus sampling)的技术),可以用来控制模型返回结果的确定性。
如果我们需要准确和事实的答案,就把参数值调低。如果你在寻找更多样化的响应,可以将其值调高点。
使用Top P意味着只有tokens中包含top_p概率质量的才会被考虑用于响应,因此较低的top_p值会选择最有信心的响应。这意味着较高的top_p值将使模型考虑更多可能的词语,包括不太可能的词语,从而导致更多样化的输出。
一般建议是改变 Temperature 和 Top P 其中一个参数就行,不用两个都调整。
Max Length:控制大模型生成的 token 数。指定 Max Length 有助于防止大模型生成冗长或不相关的响应并控制成本。
Stop Sequencesstop sequence 是一个字符串,可以阻止模型生成 token,指定 stop sequences 是控制大模型响应长度和结构的另一种方法。例如,可以通过添加 “11” 作为 stop sequence 来告诉模型生成不超过 10 个项的列表。
Frequency Penaltyfrequency penalty 是对下一个生成的 token 进行惩罚,这个惩罚和 token 在响应和提示中已出现的次数成比例, frequency penalty 越高,某个词再次出现的可能性就越小,这个设置通过给 重复数量多的 Token 设置更高的惩罚来减少响应中单词的重复。
Presence Penaltypresence penalty 也是对重复的 token 施加惩罚,但与 frequency penalty 不同的是,惩罚对于所有重复 token 都是相同的。出现两次的 token 和出现 10 次的 token 会受到相同的惩罚。 此设置可防止模型在响应中过于频繁地生成重复的词。 如果您希望模型生成多样化或创造性的文本,您可以设置更高的 presence penalty,如果您希望模型生成更专注的内容,您可以设置更低的 presence penalty
temperaturetop_p 一样,一般建议是改变 frequency penaltypresence penalty 其中一个参数就行,不要同时调整两个。

四、Prompt 管理平台

Prompt Minder
官网:https://www.prompt-minder.com/
该平台以开源、私有部署为核心卖点,具备 Prompt 分类管理、版本控制、团队协作、实时测试与数据安全等全栈功能。其 Prompt 优化助手可以一键生成与智能推荐,提高 Prompt 质量。适合对安全性、灵活性和功能完备度有较高要求的用户,如大型科技公司部署多语言 AI 客服系统,或 AI 独立开发者进行多项目管理等场景。
notion image
PromptLayer
官网:www.promptlayer.com。
专注于 Prompt 性能监控与分析,能为团队提供深入的输出效果评估及优化建议,适用于对 Prompt 质量有严苛量化需求的场景。例如,在需要对大量 Prompt 进行精准评估和优化,以提高 AI 系统性能的企业级应用开发中,PromptLayer 能发挥重要作用(powerusers.ai)。
notion image

五、相关推荐

https://github.com/dair-ai/Prompt-Engineering-Guide
https://www.promptingguide.ai/zh
 
 
Prev
阿里云核心服务概念梳理: FC / ECS /ECI / ACK /ACS
Next
Agent
Loading...
Article List
如果去做,还有一丝希望;但是不去做,就毫无希望
技术分享
个人总结
转发