1. 核心基石:构建高确定性的 Prompt
要让模型输出稳定,首先需要消除歧义。通常一个工业级的 Prompt 需要包含以下结构:
- 角色 (Role): 设定 LLM 的专业身份,这会激活模型参数中相关的专业词汇和行业知识。
- 任务 (Task): 明确且单一的目标。
- 上下文 (Context): 提供必要的背景信息,避免模型产生幻觉(Hallucination)。
- 约束 (Constraints): 规定字数、语气、格式(如 JSON、Markdown)、或者“不要做什么”。
2. 提示词工程 (Prompt Engineering) 常用技巧
2.1 零样本提示 (Zero-shot)
不提供任何示例,直接向模型下达任务指令。
2.2 少样本提示 (Few-shot / K-shot)
在指令中提供几个高质量的输入输出示例,让模型通过上下文学习你的预期格式和逻辑。
示例:
注:图片来自斯坦福大学课程:CS146S: The Modern Software Developer
2.3 思维链 (Chain-of-Thought, CoT)
思维链是一种提示方式,核心做法是让模型“分步骤思考”,也就是常说的 “一步步思考(Think step by step)” 。
它的作用在于:面对复杂问题时,模型不会直接一下子给出答案,而是会先把问题拆成几个更小、更清晰的步骤,再一步步推理得出结果。这样通常能提升模型在逻辑推理、数学计算和多步骤任务中的准确性。
示例:
I went to the market and bought 10 apples. I gave 2 apples to the neighbor and 2 to the repairman. I then went and bought 5 more apples and ate 1. How many apples did I remain with? Let's think step by step.
仅仅是加了一句 Let's think step by step,效果就完全不同了。
2.4 自洽性(Self-Consistency)
让模型针对同一问题生成多条推理路径,然后通过“多数表决”选出最一致的答案,可有效减少幻觉。
具体实操如下:
当你遇到一个复杂的开发任务,不要只依赖模型的单次回答。相反,你可以针对同一个问题向模型独立发送多次请求(比如 5 次),并结合“思维链”让它每次都输出完整的推导步骤。
得到多份不同的解答后,你可以直接采纳出现频次最高(多数表决)的那个结论作为根本原因。对于更复杂的架构设计任务,你也可以人工快速审阅这几个不同的版本,将它们各自优秀的思路结合起来,从而得出一个最稳妥的最终方案。这种类似于“模型集成”的方法能极大地避免模型单次盲猜产生的幻觉。
2.5 检索增强生成 (RAG)
将外部的、准确的数据直接塞进模型的上下文窗口中,让模型基于这些特定数据回答,从而降低对参数记忆的依赖并减少幻觉。
2.6 工具调用 (Tool Use)
允许模型在遇到短板时调用外部工具(如代码解释器处理计数、网络搜索获取最新信息),赋予其行动能力。
2.7 反思机制 (Reflexion)
通过多轮提示,让模型审视、评估并纠正自己刚才生成的输出。
示例:
现在审视你的答案,它正确吗?如果不对请解释原因并重试
3. 扩展学习资料
- Google - 提示工程:概览和指南
- DAIR.AI 提示工程指南 (Prompt Engineering Guide) : 几乎是目前最全面、最开源的提示工程百科全书。
- DeepLearning.AI: ChatGPT Prompt Engineering for Developers : 这门课完全是站在研发视角设计的。它不教你如何在对话框里聊天,而是教你如何在 Python 环境中通过 API 调用 LLM,构建信息提取、文本推断、转化和自动回复等核心功能。
- Claude: Prompt engineering
- Lilian Weng 博客: LLM Powered Autonomous Agents : 现任 OpenAI 应用研究主管 Lilian Weng 撰写的万字长文。这不是一篇简单的“提示词教程”,而是目前被业界引用最多的关于如何用 LLM 构建自主 Agent的架构级文章。它详细拆解了规划 (Planning)、记忆 (Memory) 和工具使用 (Tool use) 的底层逻辑。