LLMs之PE:《Prompt Engineering》—Lee Boonstra翻译与解读
导读:这篇论文的核心围绕大型语言模型(LLM)的提示工程展开,旨在提高LLM生成结果的准确性和质量。这篇论文系统地介绍了各种提示工程技术及其最佳实践,为提高大型语言模型的应用效果提供了宝贵的指导。 它强调了提示工程的重要性,并提供了多种方法来改进LLM的输出质量和推理能力,为LLM的实际应用提供了重要的参考价值。
>> 背景痛点:
● LLM输出质量依赖于提示:大型语言模型的输出质量高度依赖于输入提示的质量。不合适的提示会导致模棱两可、不准确甚至无意义的输出。
● 提示设计复杂:设计有效的提示并非易事,需要考虑模型类型、训练数据、模型配置、语言风格、上下文等多种因素。这使得提示工程成为一个迭代且耗时的过程。
● LLM推理能力不足:LLM在处理需要逻辑推理的任务时常常表现不佳,容易给出错误的答案。
>> 具体的解决方案:论文提出了多种提示工程技术来解决上述痛点,主要包括:
● 不同类型的提示:零样本提示 (Zero-shot)、单样本提示 (One-shot)、少样本提示 (Few-shot)、系统提示 (System prompting)、角色提示 (Role prompting)、上下文提示 (Contextual prompting)。这些方法通过提供不同的上下文信息和指令来引导LLM生成更符合预期的结果。
● 增强推理能力的提示:思维链提示 (Chain of Thought, CoT)、自一致性提示 (Self-consistency)、思想树提示 (Tree of Thoughts, ToT)。这些方法通过分解问题,引导LLM逐步推理,从而提高其解决复杂问题的能力。
● 结合外部工具的提示:ReAct (Reason & Act) 提示技术,允许LLM结合搜索引擎、代码解释器等外部工具来获取信息并进行推理,模拟人类解决问题的过程。
● 自动化提示工程:自动提示工程 (APE) 利用LLM自动生成和评估提示,从而减少人工干预,提高效率。
● 最佳实践:论文总结了诸多最佳实践,例如提供示例、设计简洁性、明确输出、使用指令而非约束、控制最大token长度、使用变量、实验不同的输入格式和写作风格,以及记录和迭代等。 还包括使用结构化输出 (JSON, XML) 和 JSON Schema 来规范输入输出。
>> 核心思路步骤:论文的核心思路是通过精心设计的提示来引导LLM生成高质量的输出。其步骤可以概括为:
● 选择合适的模型:根据任务需求选择合适的LLM模型。
● 设计提示:根据任务类型选择合适的提示工程技术,并精心设计提示内容,包括指令、示例、上下文等。
● 优化配置:调整LLM的输出配置参数,例如温度、Top-K、Top-P和输出长度,以控制输出的随机性和长度。
● 迭代改进:根据模型的输出结果不断调整提示和配置,直到达到预期的效果。
● 记录和文档化:详细记录每次提示尝试及其结果,以便学习和改进。
>> 优势:
● 提高LLM输出质量:各种提示工程技术显著提高了LLM输出的准确性和相关性。
● 增强LLM推理能力:CoT、Self-consistency、ToT等技术有效增强了LLM的推理能力。
● 自动化提示工程:APE技术提高了提示工程的效率。
● 可解释性:CoT等技术使LLM的推理过程更加透明,便于理解和调试。
>> 结论和观点:
● 提示工程是关键:提示工程是成功应用LLM的关键因素,需要持续学习和改进。
● 迭代和实验至关重要:提示工程是一个迭代过程,需要不断实验和调整,才能找到最佳的提示策略。
● 指令优于约束:在提示设计中,尽量使用积极的指令,而不是负面的约束。
● 结构化输入输出:使用JSON等结构化格式可以提高数据处理效率和LLM的准确性。
● 文档化至关重要:详细记录提示尝试和结果对于学习和改进至关重要。
● 多模态提示是未来方向:虽然本文主要关注文本提示,但多模态提示是未来发展的重要方向。
目录
《Prompt Engineering》—Lee Boonstra翻译与解读
三、LLM输出配置 (LLM output configuration)
五、自动提示工程 (Automatic Prompt Engineering)
七、多模态提示 (What about multimodal prompting)
九、总结 (Summary) 和 结束语 (Endnotes)
《Prompt Engineering》—Lee Boonstra翻译与解读
地址 | |
时间 | 2025年1月 |
作者 | Lee Boonstra |
这篇论文详细探讨了提示工程(Prompt Engineering)在大型语言模型 (LLM) 应用中的技巧和最佳实践。这篇论文全面而深入地探讨了提示工程在大型语言模型应用中的重要性、技巧和最佳实践。它不仅介绍了各种提示工程技术,例如零样本、少样本、系统提示、角色提示等,还详细讲解了LLM输出配置参数,并提供了许多实际案例,涵盖了代码生成、代码解释、代码翻译和代码调试等方面。 论文强调了提示工程是一个迭代过程,需要不断实验和改进,并提出了许多最佳实践,例如提供示例、设计简洁性、明确输出、使用指令而非约束等,以及如何有效地记录和管理提示工程工作。 最后,论文简要介绍了多模态提示的概念,为读者提供了更全面的视角。 总而言之,这篇论文为希望掌握提示工程技巧的读者提供了宝贵的指导和参考。
一、引言 (Introduction)
本章阐述了提示工程的重要性及复杂性,强调这是一个迭代过程,并明确了本文的研究对象——在Google Vertex AI平台上使用Gemini模型进行提示工程。
核心要点:提示工程是设计高质量提示以引导LLM生成准确输出的过程。它并非仅限于数据科学家或机器学习工程师,任何人都可以编写提示,但编写有效的提示却很复杂,需要考虑模型、训练数据、模型配置、措辞、风格、语气、结构和上下文等多种因素。提示工程是一个迭代过程,不合适的提示会导致模棱两可、不准确的响应,并阻碍模型提供有意义的输出。本文重点关注在Vertex AI或API中使用Gemini模型的提示工程。
二、提示工程 (Prompt engineering)
本章解释了LLM的工作机制以及提示工程的本质,强调了提示设计、长度优化和风格评估的重要性,并指出了模型选择对提示效果的影响。
核心要点:LLM是一个预测引擎,通过预测下一个token来生成文本。提示工程的目标是设计出能够引导LLM预测正确token序列的提示。这涉及到调整提示内容、优化提示长度以及评估提示的写作风格和结构等方面。提示可以用于各种理解和生成任务,例如文本摘要、信息提取、问答、文本分类、语言或代码翻译、代码生成和代码文档编写或推理。选择合适的模型是提示工程的第一步,即使使用相同的提示,不同模型的输出也可能不同。
三、LLM输出配置 (LLM output configuration)
本章详细介绍了LLM输出的各种配置参数及其作用,并说明了如何根据任务需求进行最佳配置选择,以及不同参数之间的相互影响。
核心要点:LLM通常具有多种配置选项来控制其输出。有效的提示工程需要针对特定任务优化这些配置。这些配置包括输出长度、采样控制(温度、Top-K和Top-P)。输出长度直接影响计算成本和响应时间;温度控制token选择的随机性;Top-K和Top-P限制候选token的范围,控制输出的多样性。 需要理解模型如何组合不同的采样设置。极端设置下,某些设置会变得无关紧要或抵消其他设置。
四、提示技巧 (Prompting techniques)
本章系统地介绍了多种提示工程技巧,并用实例说明了每种技巧的应用方法和效果,为读者提供了丰富的实践参考。
核心要点:本章介绍了几种重要的提示技巧,包括:零样本提示(Zero-shot)、单样本提示(One-shot)、少样本提示(Few-shot)、系统提示(System prompting)、角色提示(Role prompting)、上下文提示(Contextual prompting)、回溯提示(Step-back prompting)、思维链提示(Chain of Thought, CoT)、自一致性提示(Self-consistency)、思想树提示(Tree of Thoughts, ToT)以及React提示(ReAct)。每种技巧都有其适用场景和优缺点,并通过具体的例子进行了说明。
五、自动提示工程 (Automatic Prompt Engineering)
本章介绍了一种自动化提示工程的方法,有效提高了提示工程的效率,并通过实例说明了其应用过程。
核心要点:自动提示工程 (APE) 通过使用LLM生成多个提示候选,然后评估并选择最佳提示来自动化提示工程的过程。这可以提高效率并改善模型性能。文中以电商网站的聊天机器人为例,说明了APE的流程:生成提示变体、评估提示质量、选择最佳提示。
六、代码提示 (Code prompting)
本章展示了LLM在代码相关任务中的应用,包括代码生成、解释、翻译和调试,并强调了代码测试的重要性。
核心要点:LLM可以用于代码生成、代码解释、代码翻译和代码调试。本章通过具体的例子展示了如何使用LLM编写Bash脚本(重命名文件)、解释Bash代码、将Bash代码翻译成Python代码以及调试Python代码。 强调了代码测试的重要性,因为LLM可能生成有错误的代码。
七、多模态提示 (What about multimodal prompting)
本章简要介绍了多模态提示的概念,指出其与本文主要关注的文本提示工程的不同。
核心要点:多模态提示是指使用多种输入格式(例如文本、图像、音频、代码等)来引导LLM,而非仅仅依赖文本。这需要模型具有多模态处理能力。
八、最佳实践 (Best Practices)
本章总结了提示工程的诸多最佳实践,涵盖了提示设计、模型选择、输出控制、以及持续改进等多个方面,为读者提供了全面的指导。
核心要点:本章总结了提示工程的最佳实践,包括:提供示例、设计简洁性、明确输出、使用指令而非约束、控制最大token长度、在提示中使用变量、尝试不同的输入格式和写作风格、少样本提示中混合类别、适应模型更新以及尝试不同的输出格式(例如JSON)。 特别强调了使用指令优于约束的原则,以及记录各种提示尝试的重要性。 还介绍了JSON修复和JSON Schema的使用。
九、总结 (Summary) 和 结束语 (Endnotes)
对全文内容进行了概括,并提供了相关参考文献链接。
核心要点:对全文进行了总结,并列出了文中提到的所有提示工程技术以及一些参考文献。