打造中国最大的
AI信息汇总平台


OpenAI API 提示词工程最佳实践

OpenAI API 提示词工程最佳实践插图

如何向GPT-3和Codex提供清晰有效的指令

翻译自OpenAI官方文档,原文链接

提示词工程的工作原理

由于指令跟随模型的训练方式或训练数据的原因,存在一些特定的提示词格式,这些格式在任务中表现出色且更好地与任务相匹配。以下是一些我们发现可靠有效的提示词格式,但你也可以自由探索不同的格式,以找到最适合你任务的方式。

经验法则和示例

注意:{在此输入文本}是实际文本/上下文的占位符。

1. 使用最新模型

为了获得最佳结果,我们通常建议使用最新、功能最强大的模型。截至2022年11月,文本生成的最佳选择是“text-davinci-003”模型,代码生成的最佳选择是“code-davinci-002”模型。

2. 将指令放在提示词的开头,并使用###或”””来分隔指令和上下文

效果较差 ❌:

复制代码将下面的文本总结为最重要的要点的项目符号列表。
{在此输入文本}

更好 ✅:

python复制代码将下面的文本总结为最重要的要点的项目符号列表。
文本:"""
{在此输入文本}
""""

3. 在所需的上下文、结果、长度、格式、风格等方面要具体、描述详细

对于上下文、结果、长度、格式、风格等要具体说明 效果较差 ❌:

复制代码写一首关于OpenAI的诗。

更好 ✅:

复制代码写一首简短的鼓舞人心的诗,关于OpenAI,重点关注最近DALL-E产品的发布(DALL-E是一种文本到图像的机器学习模型),采用{著名诗人}的风格。

4. 通过示例来明确所需的输出格式(示例1,示例2)

效果较差 ❌:

复制代码从下面的文本中提取实体。提取以下4种实体类型:公司名称、人名、具体主题和主题。
文本:{文本}

展示和说明 – 当显示特定的格式要求时,模型的响应更好。这也使得以可靠的方式程序化地解析多个输出更加容易。 更好 ✅:

xml复制代码从下面的文本中提取重要的实体。首先提取所有公司名称,然后提取所有人名,然后提取符合内容的具体主题,最后提取总体主题。

期望格式:
公司名称: <以逗号分隔的公司名称列表>
人名:-||-
具体主题:-||-
总体主题:-||-

文本:{文本}

5. 首先尝试零样本提示(zero-shot),然后进行少样本提示(few-shot)(示例),如果两者都不起作用,再进行微调。

✅ 零样本提示

复制代码从下面的文本中提取关键词。
文本:{文本}
关键词:

✅ 少样本提示 – 提供一些示例

复制代码从以下对应的文本中提取关键词。
文本 1:Stripe提供API,供Web开发人员将支付处理集成到其网站和移动应用程序中。
关键词 1:Stripe,支付处理,API,Web开发人员,网站,移动应用程序
文本 2:OpenAI训练了先进的语言模型,非常擅长理解和生成文本。我们的API提供对这些模型的访问,并可用于解决几乎涉及语言处理的任何任务。
关键词 2:OpenAI,语言模型,文本生成,API
文本 3:{文本}
关键词 3:

✅ 微调 – 参见微调的最佳实践,请点击此处

6.减少“琐碎”和不精确的描述

效果较差 ❌:

复制代码对于此产品的描述应该相对简短,只有几句话,并且不要太多。

更好 ✅:

复制代码使用3到5个句子的段落来描述这个产品。

7.不要仅仅说不要做什么,而是说明应该做什么。

效果较差 ❌:

复制代码以下是客服和客户之间的对话。请勿询问用户名或密码。请勿重复。
客户:我无法登录我的账户。
客服:

更好 ✅:

bash复制代码以下是客服和客户之间的对话。客服将尝试诊断问题并提出解决方案,同时避免询问与个人身份信息(PII)相关的问题。而是代替询问个人身份信息(例如用户名或密码),请引导用户参考帮助文章www.samplewebsite.com/help/faq。
客户:我无法登录我的账户。
客服:

8.特定于代码生成 – 使用“引导词”(leading words)来引导模型朝特定模式的方向发展

效果较差 ❌:

bash复制代码# 编写一个简单的Python函数,它能够:
# 1. 向我询问一个英里数
# 2. 将英里转换为公里

在下面的代码示例中,添加“import”提示可以让模型知道它应该以Python语言开始编写。(同样,“SELECT”是一个良好的提示,表示开始一个SQL语句。) 更好 ✅:

python复制代码# 编写一个简单的Python函数,它能够:
# 1. 向我询问一个英里数
# 2. 将英里转换为公里

import

参数

通常,我们发现模型(model)和温度(temperature)是最常用的用于修改模型输出的参数。

  1. model – 性能更高的模型更昂贵且延迟更高。
  2. temperature – 衡量模型输出较低可能性标记(token)的频率。temperature越高,输出越随机(通常更具创造力)。然而,这与“真实性”不同。对于大多数事实类用例,例如数据提取和真实问答,temperature为0最合适。
  3. max_tokens(最大标记长度)- 不控制输出的长度,而是限制生成的token数量。理想情况下,您不会经常达到此限制,因为模型会在它认为已完成时停止,或者当它遇到您定义的停止序列时停止。
  4. stop(停止序列)- 一组字符(标记),生成这些字符时,文本生成将停止。 有关其他参数说明,请参阅API参考

欢迎免费使用GPT对话,感受ChatGPT的魅力!AI爱好者 – 最具实力的中文AI交流社区平台 (aiahz.com)

长按扫描二维码进群领资源

OpenAI API 提示词工程最佳实践插图1

赞(0) 打赏
未经允许不得转载:AI爱好者 » OpenAI API 提示词工程最佳实践

评论 抢沙发

欢迎来到AI爱好者

我们旨在打造一个最具实力的中文AI交流社区平台,致力于为所有AI爱好者,创业者和使用者提供优质服务. 我们的宗旨是为广大用户提供免费解决方案,您可以通过问答形式提出与AI相关的任何问题.

AI社区AI工具

安全服务战略合作伙伴:麒麟盾 SCDN

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

微信扫一扫打赏

登录

找回密码

注册