Skip to content

提示生成策略

本章将探讨提示工程师可以采用的各种提示生成策略,以创建针对现代大型语言模型(LLM)的有效且上下文相关的提示。精心设计的提示对于获得准确、连贯和期望的回复至关重要。理解不同的提示技术将显著提升 LLM 在各种应用中的性能和效用。

  • 零样本提示(Zero-Shot Prompting):这是最基本的形式,向 LLM 提供任务描述,但不提供任何示例。它依赖于模型预训练的知识来理解和执行任务。示例:‘将以下英文文本翻译成法文:Hello, world。’
  • 少样本提示(Few-Shot Prompting):这种技术涉及在要求 LLM 完成新实例之前,向其提供几个已执行任务的示例(样本)。这有助于模型理解期望的输出格式和风格。示例:‘English: sea otter French: loutre de mer English: peppermint French: menthe poivrée English: cheese French: ‘(模型应输出 ‘fromage’)。
  • 基于模板的提示(Template-Based Prompts):这些提示使用预定义的结构和可动态填充的占位符。这在标准化和定制化之间取得了平衡,适用于代码生成或数据提取等任务。示例:‘生成一个接受 {input_parameters} 并返回 {output_description} 的 Python 函数。‘
  • 对话历史(Conversational History):在多轮对话中,将对话的先前部分纳入当前提示提供了重要的上下文,使 LLM 能够保持连贯性和相关性。大多数聊天界面会自动处理此问题。
  • 检索增强生成(Retrieval Augmented Generation,RAG):这种强大的技术通过从外部知识库(例如,公司文档数据库或最新新闻文章)获取相关信息并将其纳入提示来增强提示。这使得 LLM 能够基于特定的、最新的或专有信息回答问题或生成内容。示例:‘基于以下文档片段:[检索到的关于产品 X 的文本片段],产品 X 的关键特性是什么?‘
  • 思维链提示(Chain-of-Thought,CoT):这项技术鼓励 LLM 在得出最终答案之前生成一系列中间推理步骤,对于复杂的算术、常识推理或符号推理任务特别有用。示例:‘问:罗杰有 5 个网球。他新买了 2 罐网球。每罐有 3 个网球。他现在总共有多少个网球? 答:罗杰开始有 5 个球。他买了 2 罐,每罐有 3 个球,所以是 2 * 3 = 6 个额外的球。总共,他有 5 + 6 = 11 个球。最终答案是 11。‘(这是少样本 CoT 提示中提供的一个示例)。
  • 自洽性(Self-Consistency):作为 CoT 的扩展,此方法涉及使用相同的 CoT 提示多次提示 LLM(使用非零的温度 temperature 以获得不同输出),然后从生成的推理路径中选择最一致的答案。
  • 思维树(Tree of Thoughts,ToT)/思维图(Graph of Thoughts,GoT):这些高级策略允许 LLM 探索多个推理路径(类似于树搜索或图搜索),并自我评估中间思考以做出更周密的决策来解决复杂问题。
  • 指令式提示(Instructional Prompts)和角色扮演(Role-Playing):为 LLM 分配一个角色(例如,‘你是一位专家历史学家’)或给出非常清晰、分步的指令可以显著提高其输出的质量和相关性。示例:‘你是一位乐于助人的助手。将以下文本总结为三个要点,重点关注主要论点。‘
  • 格式指令(Formatting Instructions):明确要求 LLM 以特定格式构建其输出,例如 JSON、Markdown、列表或表格。示例:‘提供电动汽车的优点和缺点列表。将输出格式化为 JSON 对象,包含两个键:“pros”和“cons”,每个键包含一个字符串列表。’
  • 输出预填充(Output Priming):通过开始提供模型期望的输出,可以引导模型以相同的格式或风格继续。示例:‘用户:总结文档。 助手:以下是文档摘要:
    1. ‘(模型很可能会继续编号列表)。
  • 迭代优化(Iterative Refinement):提示工程很少是一次性的过程。它通常涉及测试一个提示,分析输出,并根据性能迭代优化提示以达到期望的结果。这是核心实践。
  • 基于人类反馈的强化学习(Reinforcement Learning from Human Feedback,RLHF):虽然对于终端用户来说这不是直接的提示策略,但 RLHF 是 LLM 开发者用于将模型与人类偏好对齐的关键训练方法。理解这一点有助于理解为什么某些提示风格效果更好。
  • 结合模态:随着多模态 LLM 的兴起,提示现在可以包含文本、图像以及可能的音频或视频的组合。例如,您可以提供一张图片并要求 LLM 描述它,或者提供文本并要求生成一张图片。示例(文本到图像):‘生成一张戴着巫师帽的猫的图片。’ 示例(图像到文本):‘[繁忙街市的图片] 描述这个场景。‘
  • 清晰且具体:在您的指令中尽可能清晰和具体。模糊的提示会导致模糊或不相关的回复。
  • 提供上下文:确保 LLM 有足够的上下文来理解任务和您的要求。
  • 使用分隔符(Delimiters):使用三重反引号(```)、XML 标签或其他标记清晰地将指令与上下文或用户输入分开。
  • 指定输出格式:如果您需要特定的输出结构(例如,JSON、列表、特定语气),请明确说明。
  • 迭代和实验:测试不同的措辞,添加示例,并调整温度(temperature)等参数,以找到最适合您特定用例的方法。

本章探讨了一系列提示生成策略,从零样本(Zero-Shot)和少样本(Few-Shot)提示等基本技术到思维链(Chain-of-Thought)和检索增强生成(Retrieval Augmented Generation)等高级方法。我们还涵盖了上下文、输出引导、迭代优化和多模态交互的重要性。

通过掌握这些策略并遵守最佳实践,提示工程师可以有效利用 LLM 的强大能力,从而获得更准确、更相关和更有用的回复,最终提升整体用户体验和应用性能。