Core prompt engineering techniques — Prompt Engineering 的主要技术
Jump to navigation
Jump to search
提示词工程(Prompt Engineering)包含多种技术和方法,旨在优化与大型语言模型 (LLM)的交互,以获得期望的输出。这些技术涉及查询的结构设计、上下文的提供、输出风格的控制以及模型推理能力的提升。由于 LLM 是通过预测输入提示词后的下一个词元来生成响应的,因此提示词的质量和结构直接影响输出结果。提示词工程的主要技术使得开发者和用户能够有效地引导模型行为,减少错误,并使其适应特定任务,而无需修改模型内部参数。
提示词的基本原则与结构
尽管具体实现方式各异,但高效的提示词通常遵循一些通用原则和结构:
- 经验法则: 作为一种实践结构(而非行业标准),建议遵循以下原则:给出方向、指明格式、提供示例、评估质量和拆分任务。
- 高效的提示词通常包含以下几个组成部分:
- 引言/角色: 设定任务的背景或模型的角色/身份。
- 指令: 清晰地说明需要做什么。
- 上下文: 必要的背景信息(可以是静态的,也可以是通过 RAG 动态检索的)。
- 示例 (Few-shot): 展示期望的输出格式或风格。
- 响应请求: 明确指示模型需要生成什么内容。
- 系统提示 (System Prompt): 在聊天 API 接口中(例如 OpenAI、Anthropic 的模型),可以为整个会话设置全局指令和角色。
- 格式化: 使用 Markdown、JSON、XML 或 YAML 等格式有助于构建结构化的提示词,并简化对模型响应的解析。分隔符(如 ```, `"""`, XML 标签)对于将指令与数据区分开来至关重要。
指令与示例的核心技术
- 清晰具体的指令: 尽可能精确地描述任务、期望结果和限制,避免模棱两可。
- 角色扮演 (Role Prompting): 为模型指定一个角色(例如“你是一位……专家”),以控制其语调、风格和知识基础。
- Zero-shot Prompting: 不提供任何示例的提示。对于简单任务或模型已经非常熟悉的任务很有效。
- Few-Shot Prompting: 提供几个(通常是 2 到 5 个)“问题-答案”示例来演示任务。其中只有一个示例的特殊情况称为 One-shot Prompting。这种方法对于复杂的格式或风格特别有用,但需要小心,以避免因示例产生的锚定效应或捕捉到虚假模式。
上下文管理技术
- 检索增强生成 (Retrieval-Augmented Generation, RAG): 在将提示词发送给 LLM 之前,从外部知识库中动态地添加相关信息。该方法由 Meta AI 于 2020 年首次提出,是解决幻觉问题和确保数据时效性的关键技术。
- 分块 (Chunking): 将长文本分割成较小的部分(块),以适应模型的上下文窗口。分块策略包括按句子、段落或词元(可带重叠)进行分割。
- 摘要 (Summarization): 压缩长文本或对话历史,以便在有限的上下文中传达核心思想。
Reasoning - 推理能力提升技术
这些技术旨在引导模型进行更严谨、更结构化的“思考”。其中许多技术(尤其是 CoT)的有效性在大规模模型(通常参数超过 1000 亿)上表现得尤为明显。
- 思维链 (Chain-of-Thought, CoT): 指示模型在给出最终答案前,先生成一步一步的推理过程。这显著提高了模型在数学、逻辑和多步骤任务上的表现。
- Zero-shot CoT: 最简单的形式,无需示例。只需在提示词中加入一句“让我们一步一步地思考”(Let's think step by step)即可触发推理链。
- CoT 变体:
- Auto-CoT: 自动为 few-shot 提示生成推理示例。
- 自我一致性 (Self-Consistency): 生成多个推理链,并通过“投票”选出最常见的答案,从而提高结果的可靠性。
- 思维树 (Tree-of-Thoughts, ToT): 以树状结构探索多个推理路径,并能够回溯和评估中间步骤。该技术在复杂任务中表现出色,例如,将“24点游戏”的成功率从约 4% 提升至约 74%。
- Graph-of-Thought (GoT)、LogiCoT 等技术,旨在实现更复杂或经过逻辑验证的推理。
- ReAct (Reason and Act): 该技术是CoT的进一步发展。它通过一个迭代循环,让模型交替执行推理(Thought)和使用工具进行行动(Act),并根据观察(Observation)结果更新其对情况的理解。
- 自我修正 (Self-Refine): 一个迭代过程,模型首先生成一个答案,然后对其进行批判,最后根据自身的批判进行改进。这个“生成-批判-改进”的循环可以重复多次。
- Take a Step Back Prompting: 模型首先阐述解决问题所需的一般原则或抽象概念,然后再将它们应用于具体任务。
高级技术:智能体与工具
- 工具使用 (Tool Usage) / 函数调用 (Function Calling): 赋予 LLM 调用外部 API(如搜索、计算器、数据库)的能力。模型会生成一个结构化的工具调用请求,由应用程序执行后,将结果返回给模型。现代 LLM(如 GPT-4、Claude 3)已内置对此功能的支持。
- 智能体 (Agents): 基于 LLM 的系统,能够自主规划、使用工具并采取行动以实现目标。通常使用类似 ReAct 的循环。LangChain、AutoGen、CrewAI 等框架简化了智能体的创建过程。
- 多智能体系统: 让多个专业化的智能体协同工作,以解决复杂问题。
减少错误与幻觉的技术
- RAG: 将模型的回答与检索到的事实数据进行绑定。
- 限制性指令: 要求模型仅根据提供的上下文作答,或在不确定时明确表示(例如,“如果答案未知,请回答‘我不知道’”)。
- 要求引用: 要求模型注明信息来源或引用其回答所依据的上下文片段。
- 验证与自我批判: 使用如 Chain-of-Verification (CoVe)(生成答案后进行验证和修正)、Self-Refine 等技术,或直接要求模型检查其回答中是否存在错误。
- CoT: 逐步推理本身就可以减少逻辑错误。
评估与迭代技术
尽管评估是一个独立的流程,但其某些方面也是提示词工程的一部分:
- 提示词 A/B 测试: 在相同的任务上比较不同版本提示词的效果。
- 使用 LLM 进行评估: 利用一个强大的模型(如 GPT-4)来评估由另一个提示词或模型生成的答案质量(LLM-as-a-Judge)。
提示词模式
常见的可复用结构:
- 角色模式 (Persona Pattern)
- 输出定制模式 (Output Customization Pattern)
- 问题优化模式 (Question Refinement Pattern)
- 认知验证/自我批判模式 (Cognitive Verifier / Self-Critique Pattern)
- 逐步推理模式 (Step-by-Step / Chain-of-Thought Pattern)
- 模板模式 (Template Pattern)
参考文献
- Radford, A. et al. (2019). Language Models are Unsupervised Multitask Learners. PDF.
- Brown, T. B. et al. (2020). Language Models are Few-Shot Learners. arXiv:2005.14165.
- Lewis, P. et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. arXiv:2005.11401.
- Li, X. L.; Liang, P. (2021). Prefix-Tuning: Optimizing Continuous Prompts for Generation. arXiv:2101.00190.
- Liu, Y. et al. (2021). Fantastically Ordered Prompts and Where to Find Them: Overcoming Few-Shot Prompt Order Sensitivity. arXiv:2104.08786.
- Bai, Y. et al. (2022). Constitutional AI: Harmlessness from AI Feedback. arXiv:2212.08073.
- Wei, J. et al. (2022). Chain-of-Thought Prompting Elicits Reasoning in Large Language Models. arXiv:2201.11903.
- Wang, X. et al. (2022). Self-Consistency Improves Chain of Thought Reasoning in Language Models. arXiv:2203.11171.
- Kojima, T. et al. (2022). Large Language Models are Zero-Shot Reasoners. arXiv:2205.11916.
- Zhang, Z. et al. (2022). Automatic Chain of Thought Prompting in Large Language Models. arXiv:2210.03493.
- Zhou, D. et al. (2022). Least-to-Most Prompting Enables Complex Reasoning in Large Language Models. arXiv:2205.10625.
- Yao, S. et al. (2022). ReAct: Synergizing Reasoning and Acting in Language Models. arXiv:2210.03629.
- Besta, M. et al. (2023). Graph of Thoughts: Solving Elaborate Problems with Large Language Models. arXiv:2308.09687.
- Madaan, A. et al. (2023). Self-Refine: Iterative Refinement with Self-Feedback. arXiv:2303.17651.
- Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. arXiv:2302.04761.
- Rafailov, R. et al. (2023). Direct Preference Optimization: Your Language Model is Secretly a Reward Model. arXiv:2305.18290.
- Wang, Y. et al. (2023). Self-Instruct: Aligning Language Models with Self-Generated Instructions. arXiv:2212.10560.
- Yao, S. et al. (2023). Tree of Thoughts: Deliberate Problem Solving with Large Language Models. arXiv:2305.10601.
- Chen, S. Y. et al. (2023). Extending Context Window of Large Language Models via Positional Interpolation. arXiv:2306.15595.
- Chang, K. et al. (2024). Efficient Prompting Methods for Large Language Models: A Survey. arXiv:2404.01077.
- Genkina, D. (2024). AI Prompt Engineering Is Dead. IEEE Spectrum. [1].
- Li, Z. et al. (2024). Prompt Compression for Large Language Models: A Survey. arXiv:2410.12388.
- Liang, X. et al. (2024). Internal Consistency and Self-Feedback in Large Language Models: A Survey. arXiv:2407.14507.
- Han, H. et al. (2025). Retrieval-Augmented Generation with Graphs (GraphRAG). arXiv:2501.00309.
- Li, W. et al. (2025). A Survey of Automatic Prompt Engineering: An Optimization Perspective. arXiv:2502.11560.
- Wu, Z. et al. (2025). The Dark Side of Function Calling: Pathways to Jailbreaking Large Language Models. EMNLP 2025. PDF.
- Yang, B. et al. (2025). Hallucination Detection in Large Language Models with Metamorphic Relations. arXiv:2502.15844.
另见
- 大型语言模型
- 思维链提示
- LLM 的幻觉与错误回答