在使用生成式AI的时候,你是否经常遇到AI模型答非所问,甚至放飞自我?你是否总是尝试很多次都没有得到满意的回答,于是大骂“人工智障”?好吧,这不是生成式AI的错,也不是用户的错,而是没有人普及这方面的知识和技能。
提示词工程(Prompt engineering)
2023年12月15日,OpenAI在其官方文档中发布了《提示词工程(Prompt engineering)》,一个关于提示词的指南,现在终于有了一个头部厂商官方发布且实用的Prompt工程的标准参考。
这个指南分享了从大语言模型(LLMs),如GPT-4获得更好结果的策略和方法。这里描述的方法有时可以结合使用以产生更强大的效果。虽然指南表示,分享的示例目前只适用于GPT-4,但实际上,其中的大部分建议对所有的大语言模型都适用。
在提示词工程一文中,OpenAI给出了具体的指南,可以概括如下:
- 策略一:编写清晰的说明–确保在请求中提供重要的细节或背景,以获取高度相关的回复。否则,就会让模型猜测提问者的意思。
- 策略二:要求模型拟人化–系统消息可以用于指定模型在回复中采用的角色。
- 策略三:使用分隔符清楚地标示输入的不同部分–例如三个引号、XML标签、章节标题等分隔符可以帮助标示不同的文本部分,以便进行不同的处理。
- 策略四:明确指定完成任务所需的步骤–有些任务最好指定为一系列步骤,将这些步骤明确写出可以让模型更容易跟随。
- 策略五:提供例子–在某些情况下,提供响应示例不仅简单而且能让AI明白你想要什么样的输出。例如,如果您打算让模型复制一种难以明确描述的用户查询响应风格。
- 策略六:给定输出的目标长度–可以要求模型生成给定目标长度的输出。目标输出长度可以根据词语、句子、段落、列表项等进行指定。但请注意,指示模型生成特定数量的词语不具有高精度。模型可以更可靠地生成具有特定数量的段落或列表项的输出。
- 策略七:提供参考文本–指示模型使用参考文本来回答、指导模型在回答中引用参考文献
- 策略八:将复杂任务分解为简单子任务–使用意图分类来识别与用户查询最相关的指令,对于需要非常长对话的应用,对先前的对话进行总结或过滤,逐段概括长文档并递归构建完整摘要
- 策略九:给模型思考的时间–指导模型在匆忙得出结论之前自行解决问题、使用内心独白或查询序列来隐藏模型的推理过程、询问模型是否在之前的迭代中遗漏了任何内容
- 策略十:使用外部工具–使用基于嵌入的搜索实现高效知识检索,使用代码执行进行更准确的计算或调用外部API,让模型访问特定的函数
- 策略十一:系统地测试变更–将模型输出与黄金标准答案对比进行评估
关键提示词
先来几条基础指令,也是早期被广泛传播的「超级辅助提示词」。这些提示词超级简单,立竿见影。
提示词1:Let’s think step by step(让我们一步一步思考)
在问题后面加上这句提示词(Prompt),能大大提升 ChatGPT 等 AI 模型的逻辑思考能力。
提示词2:ake a deep breath and work on this step by step(深吸一口气,一步一步地做这件事)
这个可以说是“Let’s think step by step”的升级版。这条提示词来自于谷歌 DeepMind研究人员在2023年9月发表的一份「报告」,这项研究的核心目标是:探索如何用尽可能简单的提示,来提高人工智能的准确性。根据研究,“Take a deep breath and work on this step by step”是测试过的最有效的短语,尤其是在数学类问题时,能大大提升大语言模型(LLMs)的准确率。
指令3:What is the rationale behind this question?(这个问题背后的理由是什么?)
这条提示词来自于退一步提示法(Step-Back Prompting),退一步提示法的灵感来自于一个观察:如今,很多提示词(Prompt)都很复杂,充满大量的细节、约束,让大语言模型(LLMs)很难找到解决问题的相关信息。
有论文数据显示退一步提示法(Step-Back Prompting)在性能上最高超出链式思维提示(CoT)和深呼吸提示(TDB)达36%。
其他常用提示词
提示词4:Can you break down the process of [a specific task or phenomenon] into steps?(你能将[特定任务或现象]的过程分解成步骤吗?)
通过要求AI模型将过程细分为步骤,用户可以获得更清晰、更易于理解的解释和程序。
提示词5:Can you provide more details about [specific topic or aspect]?(你能提供关于[特定话题或方面]的更多细节吗?)
这句话帮助AI模型聚焦于问题的特定方面,进行更深入的思考并提供更为详细的信息。
提示词6:How does [concept A] compare to [concept B]?(如何比较[概念A]和[概念B]?)
这种对比问题鼓励AI模型分析和解释两个概念或情况之间的差异和相似之处。
提示词7:What are the potential consequences of [a specific action or decision]?(对于[特定行动或决定]的潜在后果是什么?)
这句提示词鼓励AI模型考虑并描述特定行动或决定可能导致的结果。
提示词8:What are the common misconceptions about [a specific topic]?(关于[特定话题]有哪些常见的误解?)
这个问题促使模型讨论关于某个主题的常见误解,从而从更全面的视角提供分析和解答。
提示词9:Could you provide historical context for [a specific event or trend]?(你能提供关于[特定事件或趋势]的历史背景吗?)
通过询问历史背景,用户可以获得关于某个事件或趋势更深入的理解。
指令10:What are the arguments for and against [a particular viewpoint or decision]?(支持和反对[特定观点或决定]的论据是什么?)
这种提示词句式鼓励AI模型提供平衡的观点,展示不同方面的论据。
最后,分享两个开源提示词工程项目,分别如下:
Mr.-Ranedeer-AI-Tutor
Mr. Ranedeer 是 JushBJJ 开发的 AI 导师,旨在通过使用大型语言模型 (LLM) 的功能提供量身定制的教育内容来增强学习体验。它适应各种学习风格和深度,确保内容保持相关性并适合个人需求。您可以调整知识深度以满足您的学习需求,并自定义您的学习风格、交流类型、语气和推理框架。
Awesome ChatGPT Prompts
Awesome ChatGPT Prompts是由JavaScript开发者Fatih Kadir Akın创建的一个网站和应用,里面收集了160多个关于ChatGPT的Prompt模板,可以让ChatGPT变成Linux终端、JavaScript控制台、Excel页面等。