live 发表于 2025-6-8 10:32

《Google Prompt Engineering 谷歌提示词工程:从基础到最佳实践》多媒体学习资料

本白皮书,由 Lee Boonstra 撰写并获得多位贡献者认可,全面概述了提示工程,这是一种用于指导大型语言模型(LLM)生成准确输出的迭代过程。它首先介绍了 LLM 的工作原理,强调其预测能力和配置选项,如温度、Top-K 和 Top-P,这些选项控制着输出的随机性和多样性。接着,文档详细阐述了各种提示技术,包括零样本、单样本、少样本、系统、上下文、角色、回溯、思维链、自洽性、思维树以及 ReAct 提示,每种技术都旨在优化 LLM 的响应。此外,白皮书还探讨了代码提示,展示了 LLM 如何协助编写、解释、翻译和调试代码。最后,它提供了全面的最佳实践,例如提供示例、保持提示简洁、明确输出要求、优先使用指令而非限制,并强调了文档记录和团队协作在提示工程中的重要性。

学习材料原文下载 https://www.kaggle.com/whitepaper-prompt-engineering



学习总结音频收听

https://oss.dolc.de/forum/audio/googleprompt.wav

**** Hidden Message *****

提示工程学习指南

一、概述
本学习指南旨在帮助您理解源材料中关于提示工程的核心概念、技术和最佳实践。提示工程是设计高质量提示以引导大型语言模型(LLM)生成准确输出的过程。它涵盖了从模型配置到各种提示技巧,以及在实际应用中遇到的挑战和解决方案。

二、核心概念与原理
1. 提示工程的定义与重要性
提示 (Prompt):作为大型语言模型(LLM)的输入,通常是文本,有时伴随其他模态(如图像提示),用于预测特定输出。
提示工程 (Prompt Engineering):设计高质量提示的过程,以引导LLM生成准确、有意义的输出。这是一个迭代过程,涉及调整提示长度、评估写作风格和结构。
影响因素:模型选择、模型训练数据、模型配置、词汇选择、风格、语气、结构和上下文都会影响提示的有效性。
不良提示的后果:可能导致模糊、不准确的响应,并阻碍模型提供有意义的输出。
2. LLM输出配置
输出长度 (Output Length):控制生成响应中的令牌数量。生成更多令牌会增加计算量、能耗、潜在的响应时间以及成本。它只是在达到限制时停止预测令牌,而不是使LLM在风格上更简洁。
采样控制 (Sampling Controls):决定如何处理预测的令牌概率以选择单个输出令牌。LLM预测每个可能令牌的概率,然后进行采样以确定下一个令牌。
温度 (Temperature):控制令牌选择的随机性程度。
低温度 (如0):产生更确定性的响应,每次运行可能生成相同的输出(贪婪解码)。
高温度 (如10以上):导致更多样化或意想不到的结果,但可能与上下文不太相关。
一般建议:0.2(连贯但有创意),0.9(特别有创意),0.1(缺乏创意),0(单一正确答案)。
Top-K 采样 (Top-K Sampling):从模型预测分布中选择可能性最高的K个令牌。
高Top-K:输出更具创意和多样性。
低Top-K (如1):输出更受限制和事实性(相当于贪婪解码)。
Top-P 采样 (Top-P Sampling / Nucleus Sampling):选择累积概率不超过特定值(P)的顶部令牌。
P值范围:0(贪婪解码)到1(LLM词汇表中的所有令牌)。
综合使用:
如果同时提供温度、Top-K和Top-P,则首先筛选符合Top-K和Top-P标准的令牌,然后应用温度进行采样。
极端设置的影响:
温度为0:Top-K和Top-P变得不相关。
Top-K为1:温度和Top-P变得不相关。
Top-P为0(或非常小):温度和Top-K变得不相关。
重复循环错误 (Repetition Loop Bug):LLM重复生成相同的词语、短语或句子结构的问题,通常由不合适的温度和Top-K/Top-P设置加剧。
3. 提示技巧
通用/零样本提示 (General Prompting / Zero-shot):最简单的提示类型,仅提供任务描述和一些文本供LLM开始,不提供示例。
单样本/少样本提示 (One-shot / Few-shot):通过提供一个(单样本)或几个(少样本)输入-输出示例来指导模型生成响应。这有助于模型理解预期格式和风格。
系统、上下文和角色提示 (System, Contextual, and Role Prompting):
系统提示 (System Prompting):设置LLM的整体上下文和目的,定义其基本能力和总体目标,例如返回特定格式的输出(如JSON)或控制安全/毒性。
上下文提示 (Contextual Prompting):提供与当前对话或任务相关的特定详细信息或背景信息,帮助模型理解细微差别并相应地调整响应。它是动态且针对特定任务的。
角色提示 (Role Prompting):为LLM分配一个特定的角色或身份(如旅行指南、书籍编辑、老师),帮助模型生成与该角色及其相关知识和行为一致的响应。
重叠与区分:这三种提示类型可能存在重叠,但各有侧重。
后退提示 (Step-back Prompting):促使LLM首先从问题中提取高级、概念性步骤或前提,然后再进行详细的推理,有助于提高复杂任务的准确性。
思维链 (Chain of Thought / CoT):通过要求LLM生成一系列中间推理步骤来解决问题,从而提高复杂推理任务的准确性。
零样本CoT:不提供示例,直接要求模型“一步一步思考”。
少样本CoT:提供包含推理步骤的示例,以指导模型。
最佳实践:答案应放在推理之后;从提示中提取最终答案;温度通常设置为0。
自洽性 (Self-consistency):通过多次向LLM提供相同的提示(使用高温度以生成多样化的推理路径),然后提取每个响应的答案,并选择最常见的答案来提高准确性和连贯性。这本质上是结合了采样和多数投票。
思维树 (Tree of Thoughts / ToT):CoT的泛化,允许LLM同时探索多个不同的推理路径,而不是遵循单一的线性思维链。适用于需要探索的复杂任务。
ReAct (Reason & Act):结合自然语言推理和外部工具(如搜索、代码解释器)来解决复杂任务的范式。LLM首先推理并生成行动计划,然后执行行动并观察结果,再利用观察更新推理并生成新计划,直到找到解决方案。
4. 自动化提示工程
自动提示工程 (Automatic Prompt Engineering / APE):自动化提示创建过程的方法,模型生成更多提示,然后评估和调整以提高性能。
5. 代码提示
编写代码 (Prompts for Writing Code):使用提示来生成代码片段,例如Bash脚本或Python程序。
解释代码 (Prompts for Explaining Code):使用提示来让LLM解释给定代码的功能和逻辑。
翻译代码 (Prompts for Translating Code):使用提示将代码从一种编程语言翻译成另一种语言。
调试和审查代码 (Prompts for Debugging and Reviewing Code):使用提示来识别代码中的错误、提供修复方案并提出改进建议。
重要提示:由于LLM可能无法真正推理和重复训练数据,因此在部署前务必阅读和测试生成的代码。
6. 多模态提示 (Multimodal Prompting)
结合多种输入格式(如文本、图像、音频、代码)来指导LLM,超越了仅依赖文本的限制。
7. 最佳实践
设计简洁:提示应简洁、清晰,避免复杂语言和不必要的信息。
具体输出:明确指定所需的输出格式、结构或内容。
控制最大令牌长度:通过配置设置或在提示中明确请求来限制响应长度。
在提示中使用变量:通过使用变量使提示更具动态性和可重用性,特别是在与应用程序集成时。
实验输入格式和写作风格:尝试不同的提示格式(问题、陈述、指令)、词汇选择和风格(幽默、启发性)以优化输出。
结构化输出:利用JSON等结构化格式返回数据,以实现更好的解析、数据类型和排序。
JSON修复:使用像json-repair这样的库来修复由于令牌限制等原因导致的截断或格式错误的JSON输出。
协作:与其他提示工程师一起尝试和迭代提示。
CoT最佳实践:答案应放在推理之后,从输出中提取最终答案,并将温度设置为0。
文档化:详细记录每次提示尝试(包括名称、目标、模型、配置、提示和输出),以跟踪性能、调试错误和学习。
推荐模板:使用包含“名称”、“目标”、“模型”、“温度”、“令牌限制”、“Top-K”、“Top-P”、“提示”和“输出”的表格。
迭代过程:提示工程是一个持续的迭代过程,需要不断地制作、测试、分析和完善提示,以达到理想的输出。

三、测验
说明:请用2-3句话回答以下每个问题。

什么是提示工程,为什么它被描述为一个“迭代过程”?
LLM输出配置中的“温度”设置有何作用?它在何种情况下应设置为0?
解释Top-K和Top-P采样之间的主要区别。
“重复循环错误”是什么?它通常与哪些LLM配置设置相关?
简要区分“系统提示”、“上下文提示”和“角色提示”的主要目的。
思维链(CoT)提示技术如何帮助LLM解决复杂的数学问题?
自洽性(Self-consistency)提示是如何提高LLM响应准确性的?
ReAct(Reason & Act)范式如何实现LLM与外部工具的交互?
在代码提示中,为什么在部署LLM生成的代码之前进行阅读和测试是至关重要的?
在提示工程的最佳实践中,为什么强调“文档化各种提示尝试”?

四、测验答案
什么是提示工程,为什么它被描述为一个“迭代过程”? 提示工程是设计高质量提示以引导大型语言模型生成准确输出的过程。它是一个迭代过程,因为需要不断地调整提示的长度、评估写作风格和结构,以找到最佳的提示,并根据模型的性能进行改进。
LLM输出配置中的“温度”设置有何作用?它在何种情况下应设置为0? “温度”控制令牌选择的随机性程度。较低的温度产生更确定性的响应,而较高的温度则导致更具多样性或意外的结果。当任务有单一正确答案(例如数学问题)时,温度应设置为0以实现确定性输出。
解释Top-K和Top-P采样之间的主要区别。 Top-K采样从模型预测分布中选择可能性最高的K个令牌。Top-P采样(或核采样)则选择累积概率不超过特定值P的顶部令牌。它们都控制生成文本的随机性和多样性,但Top-K限制了选择数量,而Top-P限制了累积概率。
“重复循环错误”是什么?它通常与哪些LLM配置设置相关? “重复循环错误”是LLM反复生成相同(填充)词语、短语或句子结构的问题。这通常与不合适的温度和Top-K/Top-P设置有关,因为模型可能过于确定性地遵循单一路径,或在过度随机的情况下意外地返回到之前的状态。
简要区分“系统提示”、“上下文提示”和“角色提示”的主要目的。 系统提示定义模型的总体目标和基本能力,例如返回特定格式。上下文提示提供当前任务或对话的特定细节和背景信息。角色提示则为模型分配一个身份或角色,以影响其输出的语气、风格和专业领域。
思维链(CoT)提示技术如何帮助LLM解决复杂的数学问题? 思维链通过要求LLM生成一系列中间推理步骤来解决问题,而不是直接给出最终答案。这种“一步一步思考”的方法模仿了人类解决复杂问题的方式,帮助LLM分解任务并进行更准确的逻辑推理。
自洽性(Self-consistency)提示是如何提高LLM响应准确性的? 自洽性通过多次向LLM提供相同的提示(使用高温度以生成多样化的推理路径),然后从每个响应中提取答案,并选择最常见的答案来提高准确性。它结合了采样和多数投票,以找到最一致的答案。
ReAct(Reason & Act)范式如何实现LLM与外部工具的交互? ReAct通过将推理和行动结合成一个思维-行动循环来实现与外部工具的交互。LLM首先推理并生成行动计划,然后执行这些行动(例如调用外部API进行搜索),观察结果,并利用这些观察来更新其推理并生成新的行动计划,直到问题解决。
在代码提示中,为什么在部署LLM生成的代码之前进行阅读和测试是至关重要的? 阅读和测试LLM生成的代码至关重要,因为大型语言模型不能真正地“推理”,它们可能仅仅重复训练数据中的模式。因此,生成的代码可能包含错误、不安全或不符合预期功能,需要人工验证和修正才能可靠地部署。
在提示工程的最佳实践中,为什么强调“文档化各种提示尝试”? 文档化各种提示尝试至关重要,因为它提供了一个完整的记录,方便未来回顾、测试不同模型版本下的提示性能,并帮助调试未来的错误。这有助于在迭代过程中跟踪什么有效、什么无效,并防止遗忘重要的经验。

五、论文格式问题
详细分析LLM输出配置中的“温度”、“Top-K”和“Top-P”采样设置如何协同工作以影响生成文本的随机性和多样性。讨论极端设置如何使其他设置变得不相关,并解释如何选择合适的组合以实现特定的输出目标。
比较和对比“思维链(CoT)”提示和“自洽性(Self-consistency)”提示技术。讨论它们各自的优势、局限性,以及它们在提高LLM推理能力方面的作用。请提供何时选择其中一种而非另一种的场景示例。
系统、上下文和角色提示在指导LLM行为方面有何不同作用?讨论这三种提示类型之间的潜在重叠,并解释区分它们如何帮助提示工程师设计更清晰、更有效的提示。请举例说明每种提示类型的实际应用。
源材料讨论了LLM在代码生成、解释、翻译和调试方面的应用。分析这些应用如何利用提示工程原则,并讨论与使用LLM进行代码相关任务相关的挑战和最佳实践,特别是关于代码验证的重要性。
总结源材料中提到的提示工程最佳实践,并讨论为什么这些实践对于成为一名“提示专家”至关重要。重点说明“迭代过程”、“文档化”和“实验”在整个提示工程工作流中的核心作用。

六、关键词汇表
提示 (Prompt):输入大型语言模型(LLM)的文本或其他模态信息,用于引导其生成特定输出。
提示工程 (Prompt Engineering):设计和优化提示以引导LLM生成准确、高质量和期望的输出的过程。
大型语言模型 (Large Language Model / LLM):经过大量文本数据训练的深度学习模型,能够理解、生成和处理人类语言。
令牌 (Token):LLM处理文本的基本单位,可以是单词、子词或单个字符。
输出长度 (Output Length):LLM生成响应中令牌的最大数量限制。
采样控制 (Sampling Controls):决定LLM如何从预测的令牌概率中选择下一个输出令牌的配置设置。
温度 (Temperature):LLM输出的随机性或创造性程度的配置参数;值越高,输出越随机和多样。
Top-K 采样 (Top-K Sampling):一种采样方法,仅从模型预测的概率最高的K个令牌中选择下一个令牌。
Top-P 采样 (Top-P Sampling / Nucleus Sampling):一种采样方法,选择累积概率不超过特定值(P)的令牌作为下一个令牌的候选。
贪婪解码 (Greedy Decoding):一种令牌选择策略,每次总是选择概率最高的令牌,相当于温度为0或Top-K为1。
重复循环错误 (Repetition Loop Bug):LLM陷入重复生成相同词语或短语的循环的问题,通常由不当的采样设置引起。
零样本提示 (Zero-shot Prompting):一种提示技术,仅提供任务描述,不提供任何输入-输出示例。
单样本提示 (One-shot Prompting):一种提示技术,提供一个输入-输出示例来指导LLM理解任务。
少样本提示 (Few-shot Prompting):一种提示技术,提供几个输入-输出示例来指导LLM理解任务的模式和格式。
系统提示 (System Prompting):设置LLM的全局行为、角色或限制的提示,通常用于定义其基本目的或输出格式。
上下文提示 (Contextual Prompting):为LLM提供当前任务或对话相关的特定背景信息或详细数据的提示。
角色提示 (Role Prompting):为LLM分配一个特定角色或身份(例如,旅行指南、教育者)的提示,以影响其生成响应的语气和风格。
后退提示 (Step-back Prompting):一种提示策略,鼓励LLM在进行详细推理之前,先从问题中提取出高层、概念性的步骤或前提。
思维链 (Chain of Thought / CoT):一种提示技术,通过要求LLM生成一系列中间推理步骤来解决复杂问题,以提高推理能力。
自洽性 (Self-consistency):一种提高LLM推理准确性的方法,通过多次生成思维链,然后对结果进行多数投票以选择最常见的答案。
思维树 (Tree of Thoughts / ToT):CoT的泛化,允许LLM同时探索和评估多个不同的推理路径,形成一个树状结构。
ReAct (Reason & Act):一种结合自然语言推理和外部工具(如搜索、代码解释器)的提示范式,使LLM能够执行行动并基于观察更新推理。
自动提示工程 (Automatic Prompt Engineering / APE):自动化生成、评估和优化提示的过程,以提高模型性能。
多模态提示 (Multimodal Prompting):使用多种输入格式(如文本、图像、音频)来指导LLM的技术,超越了单一模态的限制。
JSON 修复 (JSON Repair):用于修复因截断或其他原因导致的不完整或格式错误的JSON输出的工具或库。

常见问题解答

1. 什么是提示工程以及为什么它很重要?
提示工程是设计高质量提示以引导大型语言模型(LLM)生成准确和所需输出的过程。这包括调整提示以找到最佳效果,优化提示长度,并评估提示的措辞、风格、结构和上下文与任务的相关性。

它很重要,因为:

影响输出质量:不足的提示会导致模糊、不准确的响应,并阻碍模型提供有意义的输出。有效的提示对于文本摘要、信息提取、问答、文本分类、语言或代码翻译、代码生成、代码文档或推理等各种理解和生成任务至关重要。
模型配置的重要性:除了提示本身,LLM 的各种配置选项(如输出长度、温度、top-K 和 top-P)也影响着模型如何处理预测的令牌概率以选择单个输出令牌。提示工程需要根据特定任务优化这些配置。
迭代过程:提示工程不是一次性的活动,而是一个迭代过程,需要持续的试验、评估和细化,以实现所需的输出。
2. LLM 的输出配置如何影响生成文本的随机性和多样性?
LLM 的输出配置会显著影响生成文本的随机性和多样性,主要通过以下设置:

输出长度:这控制了模型在响应中生成的令牌数量。虽然它不会直接影响随机性,但过短的长度可能会截断创造性或多样的输出,而过长的长度则可能导致不必要的冗余,例如“重复循环错误”(模型反复生成相同的填充词或短语)。
采样控制:LLM 预测每个可能令牌的概率。采样设置决定了这些概率如何被处理以选择下一个令牌。
温度:控制令牌选择的随机性程度。
较低的温度(例如 0):导致更具确定性的响应,总是选择概率最高的令牌。这适用于需要事实性或精确性的任务(例如,数学问题)。
较高的温度(例如 10 以上):导致更多样化或意想不到的结果,因为即使概率较低的令牌也有可能被选择。这适用于需要创造性或探索性的任务。
Top-K:从模型预测分布中选择前 K 个最有可能的令牌。
较高的 Top-K:允许模型输出更具创造性和多样性。
较低的 Top-K(例如 1):使模型输出更具限制性和事实性,等同于贪婪解码。
Top-P(核采样):选择累积概率不超过特定值(P)的前置令牌。
P 值从 0(贪婪解码)到 1(所有令牌):类似于 Top-K,它控制生成文本的随机性和多样性。
较低的 Top-P:导致更集中的输出。
较高的 Top-P:允许更多样的输出。
这些设置相互影响,例如,将温度设置为 0 会使 Top-K 和 Top-P 变得无关紧要,因为只会选择概率最高的令牌。最佳实践是根据任务和期望的创造性或事实性程度,通过实验来找到这些值的最佳组合。

3. 什么是零样本、单样本和少样本提示,它们有什么区别?
这些是用于指导 LLM 生成响应的不同提示技术,主要区别在于它们提供给模型的示例数量:

零样本提示(Zero-shot prompting):
定义:这是最简单的提示类型,它只提供任务的描述和一些文本供 LLM 开始。它不包含任何示例。
示例:要求模型对电影评论进行分类,只给出评论和预期的情感标签提示。
优点:简单直接,不需要预先准备示例。
何时使用:适用于模型已经很好地理解任务且不需要额外指导的简单任务。
单样本提示(One-shot prompting):
定义:这种技术在提示中包含一个示例,以向模型展示所需输出的格式或风格。
示例:在要求模型解析披萨订单为 JSON 格式的提示中,提供一个客户订单及其相应的 JSON 响应的单一示例。
优点:通过提供一个明确的例子来帮助模型理解任务,这对于格式化输出特别有用。
何时使用:当零样本提示不足以引导模型生成期望的输出格式或内容时。
少样本提示(Few-shot prompting):
定义:这种方法通过在提示中提供多个示例来进一步提高模型的性能。这些示例帮助模型学习任务的模式和所需响应的风格或结构。
示例:为了将披萨订单解析为 JSON,提供几个不同的客户订单及其相应的 JSON 响应示例。
优点:比零样本或单样本提示能更显著地提高复杂任务的准确性和一致性,因为模型可以从多个范例中学习。
何时使用:适用于需要更精确或一致输出的复杂任务,或者当模型需要通过示例来学习特定模式时。
简而言之,零样本是无示例,单样本是一个示例,而少样本是多个示例,每个都旨在逐步增强 LLM 理解和执行给定任务的能力。

4. 系统、上下文和角色提示之间有什么区别?
系统、上下文和角色提示都是引导 LLM 生成文本的技术,但它们关注的方面不同:

系统提示(System Prompting):
目的:设定语言模型的整体上下文和目的。它定义了模型应该做什么的“大局”,例如翻译语言、分类评论或以特定结构返回输出。
特点:通常包含关于如何返回输出的附加信息,例如“只返回大写标签”或“以 JSON 格式返回有效输出”。还可以用于控制安全性和毒性,例如“你的回答应该有礼貌”。
示例:指示模型将电影评论分类为正面、中性或负面,并仅以大写标签形式返回结果。
主要作用:定义模型的基本能力和总体目标。
上下文提示(Contextual Prompting):
目的:提供与当前对话或任务相关的特定细节或背景信息。它帮助模型理解所问内容的细微之处,并相应地调整响应。
特点:高度特定于当前任务或输入,并且是动态的。它为模型提供了即时的、任务特定的信息。
示例:在要求模型为第一人称射击游戏关卡编写故事情节的提示中,提供一系列引人入胜的主题作为上下文,以指导模型生成相关内容。
主要作用:提供即时的、任务特定的信息以指导响应。
角色提示(Role Prompting):
目的:为语言模型分配一个特定的角色或身份。这有助于模型生成与指定角色及其相关知识和行为一致的响应。
特点:定义 AI 模型的输出风格、语气和专业知识。
示例:要求模型充当旅游指南并提供三个参观地点的建议,或者以幽默和鼓舞人心的风格提供建议。
主要作用:构建模型的输出风格和语气,增加一层特异性和个性。
虽然这些提示类型之间可能存在显著的重叠(例如,一个为系统分配角色的提示也可以包含上下文),但区分它们有助于设计意图明确的提示,从而更容易分析每种提示类型如何影响语言模型的输出。

5. 什么是思维链(Chain of Thought, CoT)提示和自洽性(Self-consistency),它们如何提高 LLM 的推理能力?
思维链(CoT)提示和自洽性是旨在提高 LLM 在复杂推理任务中表现的两种先进技术:

思维链(CoT)提示:
定义:CoT 提示通过要求 LLM 在给出最终答案之前生成一系列中间推理步骤来引导 LLM。这模仿了人类解决问题的方式,通过“一步一步地思考”。
如何提高推理能力:
分解复杂问题:CoT 提示鼓励模型将复杂问题分解为更小、更易于管理的步骤,从而降低一步出错的可能性。
可解释性:中间步骤使人类更容易理解模型是如何得出其答案的,有助于识别错误和改进提示。
改进数学和逻辑任务:对于数学或逻辑推理等任务,LLM 通常会苦苦挣扎,CoT 通过强制模型展示其内部“思维过程”来显著提高准确性。
类型:可以是零样本 CoT(只需添加“一步一步地思考”到提示中)或单样本/少样本 CoT(通过提供示例来引导模型进行推理过程)。
最佳实践:通常,将温度设置为 0,因为推理任务通常有单一的正确答案。在推理之后再提供答案。
自洽性(Self-consistency):
定义:自洽性将多次采样与多数投票结合起来。它通过多次向 LLM 提供相同的提示(使用高温度以鼓励生成不同的推理路径),然后从每个生成的响应中提取答案,最后选择最常见的答案。
如何提高推理能力:
解决贪婪解码的局限性:CoT 常常使用贪婪解码,只遵循一个推理路径。自洽性通过探索多个不同的推理路径来克服这一限制,提高了答案的准确性和连贯性。
鲁棒性:通过收集多个答案并选择最普遍的答案,自洽性降低了模型被单个不正确或偏离的推理路径误导的可能性。
“伪概率”:它通过多数投票机制为答案的正确性提供了“伪概率”的衡量,从而增强了对模型输出的信心。
成本:虽然有效,但生成多个推理路径并提取答案的计算成本较高。
总的来说,CoT 提示通过提供结构化的推理路径来提高模型的原始推理能力,而自洽性通过利用多样化的推理路径集合并选择最一致的答案来进一步增强这种能力,从而提高了复杂任务的准确性。

6. ReAct(Reason & Act)提示是关于什么的,它如何使 LLM 能够使用外部工具?
ReAct(Reason & Act,即推理与行动)提示是一种范式,它通过将自然语言推理与使用外部工具(如搜索、代码解释器等)相结合,使 LLM 能够解决复杂的任务。这模仿了人类在现实世界中的操作方式:我们口头推理,并可以采取行动来获取信息或执行任务。

核心思想:ReAct 在一个“思想-行动”循环中结合了推理和行动。
推理(Reasoning):LLM 首先对问题进行推理并生成一个行动计划。这通常表现为内部的“思考”步骤,LLM 会阐述其如何解决问题的逻辑。
行动(Acting):然后,模型执行计划中的行动。这些行动可以是调用外部工具,例如进行网络搜索、运行代码片段、访问数据库或与 API 交互。
观察(Observation):模型观察行动的结果。这些观察会反馈给模型,使其能够评估其行动的有效性。
更新推理:LLM 然后使用这些观察来更新其推理,并生成一个新的行动计划。这个过程持续进行,直到 LLM 达到问题的解决方案。
使 LLM 能够使用外部工具:
克服知识限制:LLM 仅限于其训练数据。通过外部工具(如搜索引擎),ReAct 允许 LLM 访问实时信息和超出其内部知识库的数据,从而解决更广泛和更及时的任务。
执行复杂操作:对于需要计算、数据操作或与外部系统交互的任务,LLM 自身可能无法执行。通过与代码解释器或 API 交互,ReAct 使模型能够执行这些“行动”。
“代理建模”的第一步:ReAct 是迈向代理建模的关键一步,即 LLM 不仅仅是响应提示,而是能够主动规划、执行行动、观察结果并适应其行为以实现目标。
示例:在示例中,ReAct 代理被要求找出 Metallica 乐队成员有多少孩子。它通过一系列“搜索”行动来实现这一点,这些行动是刮取 Google 搜索结果的外部工具调用。每次搜索的结果都作为“观察”反馈给模型,模型将其用于下一步的“思考”,直到得出最终答案。
通过这种“思考-行动-观察”循环,ReAct 使 LLM 能够执行更复杂、更准确的任务,这些任务需要动态信息检索和与外部环境的交互。

7. 什么是自动提示工程(APE),以及它如何帮助开发人员?
自动提示工程(APE)是一种自动化提示编写过程的方法。它旨在减少人工输入,并通过允许模型本身生成、评估和改进提示来提高模型在各种任务中的性能。

以下是它如何帮助开发人员:

自动化提示生成:
开发人员可以提示一个模型来生成更多提示。例如,为了训练一个聊天机器人处理T恤订单,开发人员可以要求 LLM 生成客户下订单的多种表达方式(如“我想要一件小号 Metallica T恤”的10个变体)。
这大大节省了手动构思和编写大量提示变体所需的时间和精力。
评估和优化:
生成的提示候选者可以根据选定的度量标准(如 BLEU 或 ROUGE)进行评估,以衡量它们的有效性。
开发人员可以审查这些评估结果,并可能修改表现良好的提示,同时淘汰效果不佳的提示。这个过程可以重复,形成一个迭代循环。
提高性能和鲁棒性:
通过自动化提示生成和评估过程,APE 有助于系统地探索更广泛的提示空间,从而找到可能手动难以发现的最优提示。
这使得模型能够更鲁棒地处理各种输入,即使它们在训练数据中没有明确体现。
减少人工工作量:
APE 减轻了开发人员为特定任务手动设计和微调提示的复杂性。它将部分创造性任务委托给 LLM 本身,从而更有效地扩展提示工程工作。
支持特定领域的应用:
如 T恤网店的例子所示,APE 在为特定领域或应用生成多样化和语义等效的查询方面非常有用,这对于训练能够处理用户输入各种变体的聊天机器人或其他系统至关重要。
总之,APE 使开发人员能够自动化提示发现过程,从而减少工作量,提高模型性能,并创建能够更好地理解和响应多样化用户输入的更强大的 AI 系统。

8. 在提示工程中,文档化和测试提示有哪些最佳实践?
在提示工程中,文档化和测试提示对于实现最佳输出、确保可维护性以及学习如何随着时间的推移改进提示至关重要。

以下是一些最佳实践:

全面文档化提示尝试:
使用结构化模板:为每次提示尝试创建一个详细的记录,包括:
名称:提示的名称和版本。
目标:该尝试的目标的单句解释。
模型:使用的模型名称和版本(例如 gemini-pro)。
配置:所有模型配置设置(温度、令牌限制、Top-K、Top-P 值)。
提示:完整的提示文本。
输出:模型生成的输出或多个输出。
跟踪迭代:添加字段以捕获提示版本(迭代),结果是否“OK/NOT OK/SOMETIMES OK”,以及任何反馈。
利用工具:像 Google Sheet 这样的表格工具可以作为记录的集中存储库。如果使用 Vertex AI Studio 等平台,记录指向已保存提示的超链接,以便快速访问和重新运行。
RAG 系统特定细节:对于检索增强生成(RAG)系统,记录影响提示中插入内容的特定 RAG 方面,如查询、块设置和块输出。
持续测试和迭代:
迭代过程:提示工程是一个迭代过程。制作和测试不同的提示,分析和记录结果,并根据模型的性能改进提示。
不同模型和配置的测试:提示输出可能因模型、采样设置甚至相同模型的不同版本而异。务必在更改模型或模型配置时重新进行实验。
新情况下的泛化:虽然一个提示在测试中可能表现良好,但重要的是要确保它在生产环境中也能很好地泛化到新颖的输入。
自动化测试和评估:在操作化系统中,依赖自动化测试和评估程序来理解提示在任务中的泛化程度。这有助于确保提示在各种条件下的持续有效性。
代码库中的提示管理:
单独存储提示:将提示保存在代码库中与实际代码分开的文件中。这使得维护更容易,并允许集中管理。
版本控制:使用版本控制系统(如 Git)来跟踪提示随时间的更改,就像管理任何其他代码资产一样。
通过遵循这些实践,开发人员可以系统地改进他们的提示,构建更可靠的 AI 应用,并从经验中学习以成为更有效的提示工程师。

时间线

20世纪90年代末

1999年: Sega发布第六代视频游戏主机Sega Dreamcast。
2020年代

2020年代初期: 大语言模型(LLMs)的兴起及其在各种自然语言处理任务中的应用,促使了提示工程作为优化LLM输出的过程的发展。
2022年1月: Chain of Thought Prompting (CoT) 论文发布,介绍了一种通过分解问题来引导LLM推理的方法。
2022年3月: Self-Consistency Improves Chain of Thought Reasoning in Language Models 论文发布,提出通过生成多条推理路径并选择最常见的答案来提高LLM响应的准确性和连贯性。
2022年10月: ReAct: Synergizing Reasoning and Acting in Language Models 论文发布,引入了结合自然语言推理和外部工具的ReAct提示范式。
2023年:Google发布了“Gemini by Google”聊天机器人。
Google发布了“Gemini for Google Workspace Prompt Guide”和“Introduction to Prompting”指南。
Google Cloud发布了关于文本模型请求体中Top-P和Top-K采样方法的文档。
Wei, J. 等人发表了关于“Zero Shot - Fine Tuned language models are zero shot learners”的论文。
Google Cloud发布了“Google Cloud Model Garden”。
Brown, T. 等人发表了关于“Few Shot - Language Models are Few Shot learners”的论文。
Zheng, L. 等人发表了“Take a Step Back: Evoking Reasoning via Abstraction in Large Language Models”的论文。
Yao, S. 等人发表了“Tree of Thoughts: Deliberate Problem Solving with Large Language Models”的论文,概括了CoT提示。
Google Cloud Platform在GitHub上发布了关于CoT提示和ReAct的笔记本。
关于自动提示工程 (APE) 的方法得到推广,该方法通过让模型生成和评估提示来减少人工输入并提高模型性能。
2023年10月27日: 示例中提到无线耳机产品发布日期。
2024年: Google发布了“Gemini for Google Workspace Prompt Guide”。
2025年2月: Lee Boonstra 的《提示工程》白皮书发布,详细介绍了提示工程的概念、技术、配置(如温度、Top-K、Top-P)、多模态提示、最佳实践以及相关挑战。

人物列表

以下是资料中提到的主要人物及其简介:

Lee Boonstra (李·布恩斯特拉):《提示工程》白皮书的作者。该白皮书于2025年2月发布,深入探讨了提示工程的概念、技术和最佳实践。
Michael Sherman (迈克尔·谢尔曼):《提示工程》白皮书的内容贡献者之一。
Yuan Cao (袁曹):《提示工程》白皮书的内容贡献者之一。
Erick Armbrust (埃里克·阿姆布鲁斯特):《提示工程》白皮书的内容贡献者之一。
Anant Nawalgaria (阿南特·纳瓦尔加利亚):《提示工程》白皮书的内容贡献者和策展人之一。
Antonio Gulli (安东尼奥·古利):《提示工程》白皮书的内容贡献者和策展人之一。
Simone Cammel (西蒙娜·卡梅尔):《提示工程》白皮书的内容贡献者之一。
Grace Mollison (格蕾丝·莫利森):《提示工程》白皮书的策展人之一。
Joey Haymaker (乔伊·海梅克):《提示工程》白皮书的技术作者。
Michael Lanning (迈克尔·兰宁):《提示工程》白皮书的设计师。
James Hetfield (詹姆斯·海特菲尔德):重金属乐队Metallica(金属乐队)的成员,资料中提到他有三个孩子。
Lars Ulrich (拉斯·乌尔利希):重金属乐队Metallica(金属乐队)的成员,资料中提到他有三个孩子。
Kirk Hammett (柯克·哈米特):重金属乐队Metallica(金属乐队)的成员,资料中提到他有Angel和Vincenzo两个儿子。
Robert Trujillo (罗伯特·特鲁希略):重金属乐队Metallica(金属乐队)的成员,资料中提到他有两个孩子。
Harry the Hacker (黑客哈利):在《提示工程》白皮书的自洽性(Self-consistency)示例中出现的一个虚构人物,他发送了一封声称发现网站漏洞的电子邮件。
J. Wei (J. 魏):《Zero Shot - Fine Tuned language models are zero shot learners》和《Chain of Thought Prompting》论文的作者之一,这些论文对提示工程领域产生了重要影响。
T. Brown (T. 布朗):《Language Models are Few Shot learners》论文的作者之一,该论文探讨了少样本学习。
L. Zheng (L. 郑):《Take a Step Back: Evoking Reasoning via Abstraction in Large Language Models》论文的作者之一,该论文介绍了“退一步提示”技术。
X. Wang (X. 王):《Self Consistency Improves Chain of Thought reasoning in language models》论文的作者之一,该论文提出了自洽性方法以提高推理准确性。
S. Yao (S. 姚):《Tree of Thoughts: Deliberate Problem Solving with Large Language Models》和《ReAct: Synergizing Reasoning and Acting in Language Models》论文的作者之一,这些论文介绍了“思维树”和ReAct提示范式。
页: [1]
查看完整版本: 《Google Prompt Engineering 谷歌提示词工程:从基础到最佳实践》多媒体学习资料