作者:Luis Quintanilla - Program Manager, Developer Division
翻译:Alan Wang
排版:Alan Wang
欢迎回来,继续查看有关 OpenAI 和 .NET 的博客系列!
如果您是新来的,请查看我们的第一篇文章,我们在其中介绍了系列内容,并向您展示如何在 .NET 中开始使用 OpenAI。
本文的重点是 Prompt Engineering,以及如何改进您提供给 OpenAI 模型的输入,以产生更加贴切的响应。让我们开始吧!
什么是 Prompt?
Prompt 是提供给模型以生成 Completion 的用户输入。Prompt 是指导模型生成称为 Completion 的响应的东西。
想要了解更多有关 Prompt 和 Completion 的详细信息,请参阅使用 .NET 开始 OpenAI Completions。
提示的结构
一条 Prompt 至少由两个部分组成:
- 上下文
- 任务/提问
给定以下 Prompt:
为二年级学生总结:
木星是距离太阳第五近的行星,也是太阳系中最大的行星。它是一个气态巨大行星,其质量是太阳的千分之一,却是太阳系其他所有行星质量总和的2.5倍。在夜空中,肉眼可见的最亮物体之一就是木星,早在有记载的历史以前就已被古代文明所知晓。木星得名于罗马神话中的主神朱庇特[19]。从地球上观察,木星足够明亮,以至于它反射的光可以投射出可见的阴影[20],通常是夜空中继月亮和金星之后第三亮的自然天体。
它可以拆分为:
-
背景:木星是距离太阳第五近的行星,也是太阳系中最大的行星。它是一个气态巨大行星,其质量是太阳的千分之一,却是太阳系其他所有行星质量总和的2.5倍。在夜空中,肉眼可见的最亮物体之一就是木星,早在有记载的历史以前就已被古代文明所知晓。木星得名于罗马神话中的主神朱庇特[19]。从地球上观察,木星足够明亮,以至于它反射的光可以投射出可见的阴影[20],通常是夜空中继月亮和金星之后第三亮的自然天体。
-
任务/提问:为二年级学生总结这一内容:
什么是 Prompt Engineering?
Prompt Engineering 是编写 Prompt 以产生更接近您期望意图的输出的过程和技术。
撰写 prompt 的技巧
虽不算详尽,但以下是提高 prompt 和 completion 质量的小技巧:
- 表达清晰明确
- 提供样例输出
- 提供相关上下文
- 不断改进、改进、改进
表达清晰明确
当设计 prompt 时,提供的细节越少,模型需要做出的假设越多。在 prompt 中设置边界和约束,以引导模型输出您想要的结果。
例如,假设您想使用以下 prompt 对一则社交媒体帖子的情绪进行分类:
对这篇帖子进行分类
“My cat is adorable ❤️❤️”
您可能会得到一个类似以下的回复:这条帖子将被归类为一则声明或意见。
可以看到,这篇文章被任意划分了一个类别。但是,该类别与情绪无关。通过在 prompt 中提供更多的指导和约束,您可以引导模型产生您想要的输出。
当您更新 prompt 以求更加精确时,您正在告知模型您希望一个代表这篇帖子情绪的输出,并在积极、中立或消极三个类别中选择。
请按照积极、中立、消极对这篇帖子的情绪进行分类
“我的猫很可爱 ❤️❤️”
在这种情况下,您会得到一个积极
的结果,这更接近您最初情绪分类的意图。
提供样例输出
最快的开始生成输出的方法是使用模型训练时预先配置的设置。这被称为零样本学习。通过提供示例,最好使用与您将要使用的数据相似的数据,您可以更好地指导模型以产生更好的输出。这种技术被称为小样本学习。
例如,假设您想从一份电子邮件这样的文档中提取信息,并生成一个 JSON 对象。
从此文本中提取城市和机场代码并生成 JSON:
“I want to fly from Los Angeles to Miami.”
您可能会得到如下响应:
{
"From": {
"City": "Los Angeles",
"Airport Code": "LAX"
},
"To": {
"City": "Miami",
"Airport Code": "MIA"
}
}
虽然这是正确的,但生成的 JSON 对象的模式与我的应用程序所期望的模式并不匹配。在这种情况下,我可以提供一个我期望的输出示例,以指导模型正确地格式化我的输出。给出以下提示:
从此文本中提取城市和机场代码并生成 JSON:
Text: “I want to fly from Los Angeles to Miami.” JSON Output: {
“Origin”: { “CityName”: “Los Angeles”, “AirportCode”: “LAX” },
“Destination”: { “CityName”: “Miami”, “AirportCode”: “MIA” } }Text: “I want to fly from Orlando to Boston” JSON Output:
您可以期待模型产生类似以下的输出:
{
"Origin": {
"CityName": "Orlando",
"AirportCode": "MCO"
},
"Destination": {
"CityName": "Boston",
"AirportCode": "BOS"
}
}
提供相关上下文
像 GPT 这样的模型是基于互联网上数百万份文档和文物上进行训练的。因此,当您要求它执行像回答问题这样的任务时,如果您不限制它生成响应所能使用的资源范围,最好的情况下,您会得到一个可行的答案(尽管可能是错误的),而最坏的情况下,答案是虚构的。
例如,如果您要求某人写一篇《哈利·波特》的摘要,您可能指的是几件事:电影、书籍或视频游戏。虽然这些媒介中的角色和一些元素可能是相似的,但故事情节却是不同的。因此,您可能会得到不同的看似合理却不正确的答案。
零样本和小样本学习提供了您期望模型生成的输出示例,您可以在 prompt 中提供事实和其他相关信息,以指导模型回答问题和执行其他任务。这种技术被称为 grounding,因为您正在基于事实对模型进行落地。在非常高的层次上,这就是 Bing 中的 AI 功能的工作原理。首先执行搜索以找到最相关的文档来回答您的提问。然后,从最相关的网页中提取的内容作为 prompt 中的附加上下文,AI 模型使用此信息来生成更贴切的响应。
假设您想回答一些关于文档的问题。这个文档可以是像维基百科这样的公共网页,也可以是来自您公司内部知识库的文档。您的 prompt 包含了上下文中的附加信息,看起来大概会像下面这样:
木星是距离太阳第五近的行星,也是太阳系中最大的行星。它是一个气态巨大行星,其质量是太阳的千分之一,却是太阳系其他所有行星质量总和的2.5倍。在夜空中,肉眼可见的最亮物体之一就是木星,早在有记载的历史以前就已被古代文明所知晓。木星得名于罗马神话中的主神朱庇特[19]。从地球上观察,木星足够明亮,以至于它反射的光可以投射出可见的阴影[20],通常是夜空中继月亮和金星之后第三亮的自然天体。
回答以下问题:
Q:太阳系中的第五大行星?A:木星
Q:木星的质量与太阳相比如何?
您可能会得到一个类似以下的回复:A:木星的质量是太阳的千分之一。
在这个例子中,你不仅为模型提供了用作其回复部分的事实和信息,而且还提供了你希望它如何回复的示例。
不断改进、改进、改进
生成输出可能是一个试错的过程。如果首次尝试没有得到你想要的结果,不要气馁。尝试本文及链接资源中的一种或多种技术,找到最适合您用例的方法。复用模型生成的初始输出集,以为您的 prompt 提供更多的上下文和指引。
开始自己撰写 prompt
既然您已经知道了几种改进 prompt 和 completion 的方法,现在是时候开始自己的生成了。开始吧:
- 注册或请求访问 OpenAI 或 Azure OpenAI 服务。
- 使用您的认证信息开始尝试 OpenAI .NET 示例。
接下来是什么?
在下一篇文章中,我们将更详细地介绍 ChatGPT 以及如何在更多的会话环境中使用 OpenAI 模型。
我们想要听到您的声音
帮助我们更多地了解您在应用程序中如何使用 AI。请花几分钟时间完成一份简短的调查问卷。
参与调研
还有哪些您想要进一步了解的话题?欢迎告诉我们。文章来源:https://www.toymoban.com/news/detail-526330.html
其他资源
如果您想要了解更多构建自己的 prompt 的技术,请查看文章 Prompt Engineering 技巧 以及 Prompt 的艺术:如何用生成式 AI 得到最佳输出。文章来源地址https://www.toymoban.com/news/detail-526330.html
到了这里,关于使用 Prompt Engineering 提升你的 GPT的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!