如何向 GPT给出清晰有效的指令 使用 OpenAI API 进行prompt engineering 的最佳实践

来源:https://mp.weixin.qq.com/s/mHS0Ogvsq1GDqYZpOwjiIw

如何向 GPT给出清晰有效的指令  使用 OpenAI API 进行prompt engineering 的最佳实践

来自openai官方一篇文章:

《使用 OpenAI API 进行快速工程的最佳实践:如何向 GPT-3 和 Codex 给出清晰有效的指令》

https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api

懒得看长文的,我来总结一下(其实是ChatGPT总结的):


根据这篇文章,给GPT提供清晰有效指令的方法包括:

  1. 使用最新的模型,例如“text-davinci-003”或“code-davinci-002”;

  2. 将指令放在提示的开头,用###或”””将指令与上下文分开;

  3. 尽可能具体、详细地描述所需的上下文、结果、长度、格式、风格等;

  4. 通过示例阐明期望的输出格式;

  5. 优先尝试零样本和少样本方法,如无效,再进行模型微调;

  6. 减少模糊和不精确的描述;

  7. 在告知模型避免哪些行为的同时,明确指出应采取的行为;

  8. 在代码生成场景下,使用“引导词”引导模型遵循特定的模式。

遵循这些方法,可以帮助用户更有效地与GPT进行交互,从而获得更满意的结果。


全文如下:

提示工程的工作原理

由于指令跟随模型的训练方式或它们训练的数据,有一些特定的提示格式特别有效,并且与手头的任务更好地对齐。下面我们介绍了一些我们发现工作可靠的提示格式,但您可以随意探索可能最适合您的任务的不同格式。

经验法则和例子

注意:“ {text input here} ”是实际文本/上下文的占位符

1.使用最新型号

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

2.将指令放在提示符的开头,用###或“””分隔指令和上下文

如何向 GPT给出清晰有效的指令  使用 OpenAI API 进行prompt engineering 的最佳实践

3. 对期望的背景、结果、长度、格式、风格等尽可能具体、描述和详细 

具体说明上下文、结果、长度、格式、样式等

不太有效的❌:

写一首关于 OpenAI 的诗。

更好的✅:

以{著名诗人}的风格写一首关于 OpenAI 的鼓舞人心的短诗,重点介绍最近的 DALL-E 产品发布(DALL-E 是一种文本到图像的 ML 模型)

4. 通过示例(示例 1、示例 2)阐明所需的输出格式。

不太有效的❌:

提取下面文本中提到的实体。提取以下 4 种实体类型:公司名称、人名、特定主题和主题。

文字:{文字}

显示并告知 – 当显示特定格式要求时,模型会更好地响应。这也使得以编程方式可靠地解析出多个输出变得更加容易。

更好的✅:

提取下面文本中提到的重要实体。首先提取所有公司名称,然后提取所有人员姓名,然后提取适合内容的特定主题,最后提取一般总体主题所需

格式:
公司名称:
人员名称:-||-
特定主题:-||-
一般主题:-||-

文本:{text}

5. 从零镜头开始,然后是小镜头,两者都不起作用,然后进行微调。

✅ 零射击

从下面的文本中提取关键字。

文本:{text}

关键字:

✅ Few-shot – 提供几个例子

从下面相应的文本中提取关键词。

文本 1:Stripe 提供 API,网络开发人员可以使用这些 API 将支付处理集成到他们的网站和移动应用程序中。
关键字 1:Stripe、支付处理、API、Web 开发人员、网站、移动应用程序
##
文本 2:OpenAI 训练了非常擅长理解和生成文本的尖端语言模型。我们的 API 提供对这些模型的访问,可用于解决几乎任何涉及处理语言的任务。
关键词二:OpenAI,语言模型,文本处理,API。
##
文本 3:{text}
关键词 3:

✅微调:在此处查看微调最佳实践。

6. 减少“蓬松”和不精确的描述

不太有效的❌:

这个产品的描述应该很短,只有几句话,不要太多。

更好的✅:

使用 3 到 5 句话的段落来描述该产品。

7.与其说什么不该做,不如说什么该做

不太有效的❌:

以下是代理和客户之间的对话。不要询问用户名或密码。不要重复。

客户:我无法登录我的帐户。
代理人:

更好的✅:

以下是代理和客户之间的对话。代理将尝试诊断问题并提出解决方案,同时避免询问与 PII 相关的任何问题。不要询问用户名或密码等 PII,而是让用户参阅帮助文章 www.samplewebsite.com/help/faq

客户:我无法登录我的帐户。
代理人:

8. 特定于代码生成——使用“引导词”将模型推向特定模式

不太有效的❌:

# 编写一个简单的 python 函数
# 1. 问我一个以英里为单位的数字
# 2. 它将英里转换为公里

更好的✅:

# 编写一个简单的 python 函数
# 1. 问我一个以英里为单位的数字
# 2. 它将英里转换为公里

import

参数

通常,我们发现model 和是改变模型输出的最常用参数。temperature

  • model-更高性能的模型更昂贵并且具有更高的延迟。 

  • temperature-衡量模型输出不太可能的标记的频率。越高temperature,输出越随机(并且通常具有创造性)。然而,这与“真实”不同。对于大多数事实用例,例如数据提取和如实问答,temperature0 是最好的。 

  • max_tokens( maximum length) – 不控制输出的长度,而是令牌生成的硬截止限制。理想情况下,您不会经常达到此限制,因为您的模型会在它认为完成时或达到您定义的停止序列时停止。 

  • stop(停止序列) – 一组字符(标记),在生成时会导致文本生成停止。有关其他参数说明,请参阅API 参考。

有关其他参数说明,请参阅API 参考。

https://beta.openai.com/docs/api-reference/completions/create

「知识点」什么是 Prompt Engineering?

2023-03-30

如何向 GPT给出清晰有效的指令  使用 OpenAI API 进行prompt engineering 的最佳实践

「prompt 基础提问篇」如何有效的使用 prompt,简单明了的同时减少歧义?

2023-04-01

如何向 GPT给出清晰有效的指令  使用 OpenAI API 进行prompt engineering 的最佳实践

如何向 GPT给出清晰有效的指令  使用 OpenAI API 进行prompt engineering 的最佳实践

来源:https://mp.weixin.qq.com/s/mHS0Ogvsq1GDqYZpOwjiIw

本文地址:https://www.163264.com/846

(0)
上一篇 2023年4月6日 下午3:41
下一篇 2023年4月8日 上午12:35

相关推荐