问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

OpenAI官方Prompt工程指南详解:六大原则助力高效人机交互

创作时间:
作者:
@小白创作中心

OpenAI官方Prompt工程指南详解:六大原则助力高效人机交互

引用
CSDN
1.
https://blog.csdn.net/weixin_59191169/article/details/137587207

随着人工智能技术的不断发展,大模型在各个领域的应用越来越广泛。然而,如何有效地与大模型进行交互,使其更好地满足我们的需求,成为了许多用户关注的问题。近日,OpenAI在其官方文档中发布了Prompt engineering(提示词工程)指南,为用户提供了权威且有效的指导。本文将对这份指南进行详细解读,帮助读者掌握与大模型交互的核心技巧。

OpenAI在指南中提出了六大核心原则:

  1. 写出清晰的指令
  2. 提供参考文本
  3. 将复杂的任务拆分为更简单的子任务
  4. 给模型时间“思考”
  5. 使用外部工具
  6. 系统地测试变更

接下来,本文将对这些原则进行详细解读,并结合具体示例帮助读者更好地理解。

一、写出清晰的指令

这是所有原则中最核心的一条。清晰的指令能够帮助大模型更好地理解用户的需求,从而提供更准确的回复。OpenAI给出了以下六条小技巧:

  1. 把话说详细:尽量提供详细的上下文信息,避免过于笼统的表述。
  • 示例:不要说:“总结会议记录”,而是说:“用一个段落总结会议记录。然后写下演讲者的Markdown列表以及他们的每个要点。最后,列出发言人建议的后续步骤或行动项目(如果有)。”
  1. 让模型充当某个角色:通过设定角色,使模型能够更专业地完成任务。
  • 示例:让模型扮演一个喜欢讲笑话的喜剧演员,要求其在回复中加入幽默元素。
  1. 使用分隔符清楚地指示输入的不同部分:使用三引号、XML标签等分隔符可以帮助模型更好地理解文本结构。
  • 示例:使用三引号分隔文本:“”“在此插入文字”“”
  1. 指定完成任务所需的步骤:将复杂任务分解为一系列步骤,使模型更容易完成。
  • 示例:分步说明:“步骤1 - 用户将为您提供三引号中的文本。用一个句子总结这段文字,并加上前缀“Summary:”。步骤2 - 将步骤1中的摘要翻译成西班牙语,并添加前缀“翻译:”。”
  1. 提供例子:通过few-shot prompt的方式,给模型提供参考示例。
  • 示例:要求模型模仿特定风格:“”“落霞与孤鹜齐飞,秋水共长天一色。渔舟唱晚,响穷彭蠡之滨”“”
  1. 指定输出长度:明确要求模型生成特定长度的输出。
  • 示例:要求模型生成两个段落的摘要:“”“在此插入文字”“”

二、提供参考文本

通过提供参考文本,可以显著降低大模型胡说八道的概率,提高回答的准确性和可靠性。

  1. 让模型使用参考文本作答:直接要求模型基于提供的文档回答问题。
  • 示例:“使用提供的由三重引号引起来的文章来回答问题。如果在文章中找不到答案,请写“我找不到答案”。”
  1. 让模型通过引用参考文本来回答:要求模型在回答时引用具体文档段落,增加答案的可验证性。
  • 示例:“您将获得一份由三重引号和一个问题分隔的文档。您的任务是仅使用提供的文档回答问题,并引用用于回答问题的文档段落。如果文档不包含回答此问题所需的信息,则只需写:“信息不足”。如果提供了问题的答案,则必须附有引文注释。使用以下格式引用相关段落({“引用”:…})。”

三、将复杂的任务拆分为更简单的子任务

将复杂任务分解为更简单的子任务,可以显著提高模型的处理效果。

  1. 使用意图分类来识别与用户查询最相关的指令:通过意图识别,可以更准确地定位用户需求。
  • 示例:对于“我断网了咋整”这类问题,先进行意图识别,再给出具体解决方案。
  1. 对于需要很长对话的对话应用,总结或过滤之前的对话:解决模型上下文长度限制的问题。
  • 解决方案:可以采用对话摘要、异步总结或向量库存储等方式。
  1. 分段总结长文档并递归构建完整总结:处理超长文档时,可以采用分段总结再递归汇总的方式。
  • 参考研究:OpenAI在《Summarizing Books》中详细介绍了这种总结方法的有效性。

四、给模型时间“思考”

通过chain-of-thought(CoT)提示,可以让模型逐步推理,提高答案的准确性和可靠性。

  1. 让模型在急于得出结论之前找出自己的解决方案:避免模型过早下结论。
  • 示例:要求模型先制定解决方案,再与参考答案进行比较。
  1. 使用内心独白来隐藏模型的推理过程:对于某些应用场景,可能需要隐藏模型的推理过程。
  • 示例:通过多次API调用,隐藏模型的推理过程,仅展示最终结果。
  1. 询问模型在之前的过程中是否遗漏了什么内容:确保模型充分考虑所有相关信息。
  • 示例:要求模型检查是否遗漏了相关片段:“还有更多相关片段吗?注意不要重复摘录。还要确保相关片段包含解释它们所需的所有相关上下文。”

五、使用外部工具

大模型并非万能,对于某些特定任务,使用外部工具会更有效。

  1. 使用基于嵌入的搜索实现高效的知识检索:通过RAG(Retrieval Augmented Generation)方式增强知识检索能力。
  • 实现步骤:加载文件 -> 读取文本 -> 文本分割 -> 文本向量化 -> 问句向量化 -> 匹配相似文本 -> 生成回答。
  1. 使用代码执行来进行更准确的计算或调用外部API:对于计算任务,让模型生成Python代码进行计算。
  • 示例:求解多项式方程:“求以下多项式的所有实值根:3x**5 - 5x4 - 3*x3 - 7*x - 10。”
  1. 给模型提供特定的功能:通过API传递函数描述,让模型生成函数参数。
  • 应用场景:数据查询、数据处理等。

六、系统地测试变更

对于开发者来说,系统地测试Prompt变更非常重要,以确保改进是有效的而非偶然。

写在最后

OpenAI的Prompt engineering指南内容详尽且实用,远胜于市面上大多数零散的框架和课程。掌握这些原则和技巧,能够显著提升与大模型交互的效果。值得注意的是,良好的日常表达能力和沟通能力,对于Prompt的编写同样至关重要。

正如某公司的一条价值观所言:“布阵清晰、传球舒服、接球靠谱”,无论是与人还是与AI交互,清晰的表达和有效的协同都是成功的关键。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号