掌握这六大策略,让你的提示词更高效,让 GPT-4 等 AI 模型输出更精准、更符合预期的结果。
引言
在使用大语言模型(如 GPT-4)时,你是否曾经困惑于:为什么同样的任务,有些人的提示词能让模型输出完美的结果,而你的提示词却总是差强人意?答案可能在于提示工程(Prompt Engineering)的技巧。
OpenAI 官方发布的提示工程指南,总结了大量实践经验,为我们揭示了如何更有效地与 AI 模型沟通。这些方法不是孤立的,而是可以相互结合,发挥更大的作用。本文将深入解读这六大核心策略,帮助你提升与 AI 模型的交互效率。
背景:为什么需要提示工程?
大语言模型并不会读心术,它们只能基于你提供的输入来理解和执行任务。如果我们希望模型输出更简洁的内容,我们就需要明确要求它”简短回答”;如果我们希望输出更专业的内容,我们需要指定”使用专业写作风格”;如果我们对输出格式不满意,最好的方式就是直接展示我们期望的格式。
让模型不需要猜测你的意图,是获得理想结果的关键。此外,指南中的部分示例只适用于最先进的模型如 gpt-4,如果某个模型在任务上表现不佳,且存在更高级的模型,建议尝试使用更强大的版本。
策略一:撰写清晰的指令
这是最基础也是最重要的策略。模型无法猜测你的想法,你需要通过明确的指令来传达你的需求。
核心技巧
1. 在查询中添加详细信息
对比效果:
| 较差的提问 | 较好的提问 |
|---|---|
| 我该如何在 Excel 中进行加法计算? | 我该如何在 Excel 中自动计算一行中的美元总额?我想要的是自动为整张表格的每行进行计算,最终所有的总计数都显示在右侧名为”总计”的列中。 |
2. 请求模型扮演特定角色
通过系统消息(System Message),可以让模型以特定角色回应。例如:
1 | 系统:当我请求帮助撰写某些内容时,你的回答中每个段落至少应包含一个幽默的笑话或俏皮的评论。 |
3. 使用分隔符清晰区分输入的不同部分
使用三重引号、XML 标签、章节标题等分隔符,可以有效区分不同内容:
1 | 用户:请使用三重引号中的文本进行总结,并用俳句的形式表达。 |
4. 明确指出完成任务需要的步骤
将复杂任务分解为明确的步骤:
1 | 系统:请按照以下步骤回应用户的输入。 |
5. 提供实例作为参考(Few-shot 提示)
当难以用语言明确描述时,提供示例更直观:
1 | 用户:大师,什么是耐心? |
6. 明确指定输出长度
指定段落、要点数量比指定字数更有效:
1 | 用户:请用三个要点概括三引号内的文本。 |
策略二:提供参考文本
语言模型可能会自信地编造虚假答案(幻觉),特别是回应深奥主题或被要求提供引文时。提供参考文本可以减少这种问题。
核心技巧
1. 引导模型根据参考文本回答问题
1 | 系统:当你被提供特定文章,并需要回答问题时,请依据这些文章中的内容来作答。如果这些文章中没有包含答案,你只需表明"无法找到答案"。 |
2. 引导模型用引用的文本回答问题
要求模型引用文档中的段落,提高答案的可验证性:
1 | 系统:你将会收到一个用三个引号标记的文档和一个问题。你的任务是仅使用所提供的文档来回答这个问题,并引用文档中用来回答问题的部分。引用相关段落时,请使用以下格式 `({"citation": …})`。 |
由于模型上下文窗口有限,可以使用 Embeddings(嵌入技术)实现高效的知识检索,动态查询相关信息。
策略三:把复杂的任务拆分成简单的子任务
就像软件工程中将复杂系统分解为模块化组件,复杂任务的错误率往往更高。将复杂任务设定为一系列工作流程,每个流程是更简单的任务,前一个任务的输出作为后一个任务的输入。
核心技巧
1. 利用意图分类识别最相关的指令
在处理众多独立指令集的任务中,先对查询类型分类:
1 | 系统:你会收到客户服务的查询。请把每个查询分为一个主要类别和一个次要类别,并以 json 格式提供结果。 |
这种方法的好处:每个查询只包含执行下一阶段所需的指令,降低错误率,同时降低成本(长提示的运行成本更高)。
2. 概括或过滤之前的对话内容
模型上下文长度固定,对话不能无限延续。解决方案:
- 概括法:当输入达到一定长度时,触发对部分对话的概括
- 筛选法:动态挑选与当前问题最相关的部分
3. 分步总结长文档
对于超长文档(如一本书),可以:
- 分别总结每个章节
- 连接这些摘要并进一步总结
- 递归进行,直至整本书被总结完毕
如果在理解后续部分时需要前面章节的信息,可以在总结当前内容时附加前面的连续摘要。
策略四:给模型更多时间”思考”
就像计算 17×28 需要时间一样,AI 模型立即回答时更容易出错。要求模型展示”思考过程”,有助于更可靠地推导正确答案。
核心技巧
1. 在仓促做出结论前,指导模型自己寻找解决方法
错误示例(直接询问):
1 | 系统:判断学生的解答是否正确。 |
正确示例(先让模型自己解决):
1 | 系统:首先,你需要自行找出问题的解答,然后把你的解答与学生的解答进行比较,评定学生的解答是否准确。在你没有自行解决这个问题之前,请不要对学生的解答进行判断。 |
2. 通过内心独白或连串问题隐藏思考过程
在某些应用场景(如教育应用),不适合向用户展示推理过程。解决方案:
- 内心独白:指导模型将需隐藏的输出部分用结构化形式表现(如三重引号),然后在展示给用户前解析处理
1 | 系统:按以下步骤回答用户问题。 |
- 连续提问:通过一系列查询实现,除最后一个外,所有查询结果都不展示给用户
3. 问模型是否有遗漏
当模型列出相关摘录时,可能过早结束。通过后续查询寻找遗漏:
1 | 用户:还有其他相关的摘录吗?请注意不要重复之前的摘录。同时确保所选摘录包含充分的背景信息。 |
策略五:运用外部工具
弥补模型不足,利用其他工具的输出作为输入。
核心技巧
1. 运用基于嵌入的搜索实现知识检索
将文本语料库分割成多个块,对每个块进行嵌入处理并存储。然后对查询进行嵌入操作,进行向量搜索,找到最相关的文本块。
相关资源:OpenAI Cookbook
2. 利用代码执行进行更精确的计算或调用外部 API
让模型编写并运行代码,而不是自行计算:
1 | 系统:你可以通过用三个反引号包裹 Python 代码来编写并执行代码,例如 ```code goes here```。这种方式适用于需要进行计算的情况。 |
安全警告:模型生成的代码执行可能存在安全风险,必须采取预防措施,使用隔离的代码执行环境。
3. 使模型能够访问特定功能
通过函数调用(Function Calling)让模型使用外部工具:
1 | # OpenAI 文档中的函数调用示例 |
策略六:系统地对变更进行测试
如果能对性能进行量化,就能更好地提高性能。对提示词的修改在少数例子上可能表现更佳,但在更具普遍性的样本集上可能导致整体性能下降。因此需要设计全方位的测试(评估)。
核心技巧
根据标准答案的参考评估模型输出效果
建立测试集,包含:
- 输入提示
- 预期的标准输出
- 模型实际输出
通过对比评分、人工审核等方式评估性能变化。
测试驱动开发版提示工程工作流:
- 建立测试集(包含代表性的样本)
- 运行当前提示词版本,记录性能
- 修改提示词
- 在整个测试集上重新测试
- 如果性能提升 → 保留修改;如果性能下降 → 丢弃或调整修改
- 重复步骤 3-5
这样可以确保修改在总体上有积极作用,避免局部优化导致整体性能下降。
实践建议
- 组合使用:这些策略不是孤立的,可以组合使用以达到最佳效果
- 实验优先:没有放之四海而皆准的方法,鼓励实验找到最适合你的技巧
- 版本控制:对提示词进行版本管理,记录每次修改及其效果
- 持续优化:随着使用场景的变化,持续评估和优化提示词
结语
提示工程是与 AI 模型高效沟通的艺术。掌握这六大策略——撰写清晰的指令、提供参考文本、拆分复杂任务、给予思考时间、运用外部工具、系统测试——将显著提升你的 AI 交互效率。
记住,模型不会读心术。你的提示词越清晰、越详细、越结构化,模型的输出就越符合预期。同时,在面对复杂任务时,不要期望一次提示就能完美解决,善用步骤分解、意图分类等技巧,让模型逐步完成你的需求。
最重要的一点:持续学习和实验。OpenAI 官方提供了丰富的示例提示,建议花时间浏览这些示例,发现 GPT 模型的潜能,并思考如何将这些技巧应用到你的具体场景中。
参考资料
本文版权声明:本文内容基于 OpenAI 官方文档翻译整理而来,原文版权归 OpenAI 所有。中文翻译版权归宝玉的分享所有。本文内容根据 Creative Commons BY-NC-SA 4.0 许可协议发布。