提示词是用于与人工智能(AI)对话系统进行交互时提供的指导性文本。Prompt 就像是一把引导对话的魔杖,它可以帮助我们更好地与AI进行交流。通过编写清晰、明确的提示词,我们能够准确表达自己的意图和问题,从而得到系统更精确的回答。
提示工程(PE)是什么
提示工程(Prompt Engineering)是一门较新的学科,关注提示词开发和优化, 帮助用户将大语言模型(Large Language Model, LLM)用于各场景和研究领域。
• 普通用户可使用提示工程来快速、高效、准确地解决棘手问题。
• 研究人员可利用提示工程来提升大语言模型处理复杂任务场景的能力,如问答和算术推理能力。
• 开发人员可通过提示工程设计、研发强大的工程技术,实现和大语言模型或其他生态工具的高效接轨。
提示工程不仅仅是关于设计和研发提示词。它包含了与大语言模型交互和研发的各种技能和技术。提示工程在实现和大语言模型交互、对接,以及理解大语言模型能力方面都起着重要作用。用户可以通过提示工程来提高大语言模型的安全性,也可以赋能大语言模型, 比如借助专业领域知识和外部工具来增强大语言模型能力。
基本概念
在使用 AI 工具的时候,您以通过简单的提示词(Prompts)获得大量结果,但结果的质量与您提供的信息数量和完善度有关。一个提示词可以包含您传递到模型的指令或问题等信息,也可以包含其他详细信息, 如上下文、输入或示例等。通过这些元素来更好地指导模型,并因此获得更好的结果。
你给他上句,他会接上下句
大语言模型(LLM)能够基于我们给出的上下文内容 锄禾日当午 完成续写。而输出的结果可能是出人意料的,或远高于我们的任务要求。
你提问他来回答
你提出问题他给你答案。
有时候他的回答可能远高于我们的任务要求
这个时候可以完善一下内心的想法,告诉他你的需求:
对话格式
我们一般的提示都是告诉 AI 问题 或者 指令,然后他给你回答。
Q: 问题?
A: 回答
而 问题 也就是提示词的质量,也决定了回答的质量。怎么用构建好的问题,也就是今天讨论的内容:提示工程。
上面的一问一答,也称作无样本提示。就是你没有给他示例作为参考。
提示要素
如果您接触过大量提示工程相关的示例和应用,您会注意到优秀的提示词是由一些要素组成的。
• 角色:你想让 AI 扮演的角色。
• 指令:想要模型执行的特定任务或指令。
• 上下文:包含外部信息或额外的上下文信息,引导语言模型更好地响应。
• 输入数据:用户输入的内容或问题。
• 输出指示:指定输出的类型或格式。
提示词所需的格式取决于您想要语言模型完成的任务类型,并非所有以上要素都是必须的。
提示工程的最佳实践
下面介绍几个提示工程的最佳实践。
使用占位符指定格式
以 OpenAI 为例,我们一般用 {some text} 来表示占位符,来指定你要求 AI 返回的内容格式。
效果较差 ❌
从下面文本中提取联系人信息:
此次大会共有。。。
更好 ✅
从下面文本中提取联系人信息:
文本:{此次大会共有10人参加:张三 2533421, 李四(23423522) }
联系人格式: 姓名:{联系人姓名} ; 电话:{联系人电话}
将指令放在提示符的开头,并使用###或“””分隔指令和上下文
效果较差 ❌
将下面的文本总结为最重要点的要点列表。
{此处输入文字}
更好 ✅
将下面的文本总结为最重要点的要点列表。
文本:"""
{此处输入文本}
"""
对所需的背景、结果、长度、格式、风格等尽可能具体详细描述
具体说明上下文、结果、长度、格式、风格等
效果较差 ❌
写一首关于 OpenAI 的诗。
更好 ✅
以{著名诗人}的风格写一首关于 OpenAI 的鼓舞人心的短诗,
重点关注最近推出的 ChatGPT4 新模型
通过示例阐明所需的输出格式(示例 1、示例 2)。
效果较差 ❌
提取下面文本中提到的实体。提取以下 4 种实体类型:公司名称、人名、特定主题和主题。
文本:{文本}
更好 ✅
展示和讲述 - 当展示特定的格式要求时,模型会做出更好的反应。这也使得以编程方式可靠地解析多个输出变得更加容易。
提取下面文本中提到的重要实体。首先提取所有公司名称,然后提取所有人名,然后提取适合内容的特定主题,最后提取一般总体主题
所需格式:
公司名称:<comma_separated_list_of_company_names>
人名:-||-
特定主题:-||-
一般主题:-||-
文本:{text}
从零样本开始,然后是少量样本(示例),两者都不起作用,然后进行微调
✅ 零样本
从下面的文本中提取关键字。
文本:{text}
关键字:
✅ 少样本 - 提供几个例子
从下面相应的文本中提取关键词。
文本 1:Stripe 提供 API,Web 开发人员可以使用这些 API 将支付处理集成到他们的网站和移动应用程序中。
关键词 1:Stripe、支付处理、API、网络开发人员、网站、移动应用程序
##
文本 2:OpenAI 训练了非常擅长理解和生成文本的尖端语言模型。我们的 API 提供对这些模型的访问,并且可用于解决几乎任何涉及处理语言的任务。
关键词2:OpenAI、语言模型、文本处理、API。
##
文本 3:{text}
关键字 3:
✅ 微调:
OpenAI 仅仅需要几十条对话数据即可完成微调,如果少样本提示无法满足您的需求,可以使用模型微调。参考OpenAI微调最佳实践[1]。
ChatGPT 提供了很方便的微调方法,如果是其他LLM(包括开源 LLM),微调还是一件稍显复杂的事情。
减少模棱两可和不精确的描述
效果较差 ❌
该产品的描述应该相当简短,只有几句话,而不是太多。
更好 ✅
使用 3 到 5 句话的段落来描述该产品。
关注做什么而不是不做什么
与其只说不该做什么,不如说该做什么
效果较差 ❌
以下是代理与客户之间的对话。不要询问用户名或密码。不要重复。
客户:我无法登录我的帐户。
代理人:
更好 ✅
以下是代理与客户之间的对话。代理将尝试诊断问题并提出解决方案,
同时避免询问任何与 PII 相关的问题。不要询问用户名或密码等 PII,
而是让用户参阅帮助文章 www.samplewebsite.com/help/faq
客户:我无法登录我的帐户。
代理人:
特定于代码生成 - 使用“引导词”将模型推向特定模式
效果较差 ❌
# 编写一个简单的 python 函数
# 1. 向我询问一个以英里为单位的数字
# 2. 将英里转换为公里
在下面的代码示例中,向模型添加 import 提示,表明它应该开始用 Python 编写。(类似地,SELECT 是 SQL 语句开始的一个很好的提示。)
更好 ✅
# 编写一个简单的 python 函数
# 1. 向我询问一个以英里为单位的数字
# 2. 它将英里转换为公里
import
结语
了解了提示工程的基本概念之外,一个更大的领域就呈现在了我们面前。后面我们逐一介绍提示工程用到的一些技术,比如:
• 链式思考(COT)
• 检索增强(RAG)
• LangChain 使用的提示技术 ReAct 等。
引用链接
[1] OpenAI微调最佳实践: https://docs.google.com/document/d/1h-GTjNDDKPKU_Rsd0t1lXCAnHltaXTAzQ8K2HRhQf9U/edit#
--- END ---

