跳到主要内容

ChatGPT

在本节中,我们将介绍ChatGPT的最新提示工程技术,包括技巧、应用、限制、论文以及额外阅读材料。

主题:


ChatGPT介绍

ChatGPT是由OpenAI训练的一种新模型,具有进行对话的能力。该模型经过训练,可以按照提示中的指令在对话环境中提供适当的回复。ChatGPT可以帮助回答问题、建议食谱、以特定风格写歌词、生成代码等。

ChatGPT是使用人类反馈强化学习(RLHF)进行训练的。虽然这个模型比以前的GPT版本更强大(还经过训练以减少有害和不真实的输出),但它仍然存在一些限制。让我们通过具体示例来了解一些能力和限制。

您可以在这里使用ChatGPT的研究预览,但在下面的示例中,我们将在OpenAI Playground上使用Chat模式。


审查对话任务

在之前的指南中,我们简要介绍了一些关于对话能力和角色提示的内容。我们介绍了如何指导LLM以特定风格进行对话,具有特定意图、行为和身份。

让我们回顾一下我们之前的基本示例,其中我们创建了一个对话系统,能够对问题生成更多技术和科学性回复。

提示:

以下是与AI研究助手的对话。助手的语气是技术性和科学性的。

Human: 你好,你是谁?
AI: 你好!我是一个AI研究助手。我今天能为你做些什么呢?
Human: 你能告诉我黑洞是如何形成的吗?
AI:

从上面的示例中,您可以看到两个重要组成部分:

  • 意图 或解释聊天机器人的内容
  • 身份 指示聊天机器人将用于回复的风格或语气

上面的简单示例适用于使用text-davinci-003的文本完成API。最近,OpenAI宣布了ChatGPT API,这是一个更强大、更便宜的模型,名为gpt-3.5-turbo,专门为这种功能(聊天完成)而构建。事实上,OpenAI推荐这个模型,即使是非聊天用例也是他们最好的模型。使用ChatGPT API的其他好处包括显著降低成本(90%)和提高效率。

像Snap Inc.和Instacart这样的大公司已经在其产品中整合了由ChatGPT提供支持的对话功能,这些功能从个性化推荐到开放式购物目标等各种功能。


与ChatGPT对话

多轮对话

为了开始展示ChatGPT的能力,我们将使用上面的聊天机器人助手示例并讨论结果。与text-davinci-003相比,为ChatGPT提供动力的gpt-3.5-turbo模型使用聊天格式作为输入。该模型期望一系列消息作为输入,并使用这些消息生成回复。

输入:

SYSTEM: 你是一个AI研究助手。你使用技术性和科学性的语气。
USER: 你好,你是谁?
ASSISTANT: 你好!我是一个AI研究助手。我今天能为你做些什么呢?
USER: 你能告诉我黑洞是如何形成的吗?

输出:

ASSISTANT: 当然!黑洞是在一个巨大的恒星耗尽燃料并在自身引力下坍缩时形成的。这种坍缩使恒星变得极其密集,具有强大的引力场,甚至连光都无法逃脱。这个不可逆转的点被称为事件视界。一旦一颗恒星越过事件视界,它就被认为是一个黑洞...

请注意,在上面的示例中,我已简化了输入和输出,但ChatGPT聊天完成API要求消息以特定格式输入。我在下面添加了一个快照,展示了在OpenAI Playground中使用Chat Mode的示例:

CHATGPT1

我们示例的更正式API调用将类似于下面的示例:```

import openai

openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "你是一位 AI 研究助理。你的语气要求是技术性和科学性的。"},
{"role": "user", "content": "你好,你是谁?"},
{"role": "assistant", "content": "你好!我是一位 AI 研究助理。今天我能为你做些什么呢?"},
{"role": "user", "content": "你能告诉我关于黑洞的形成吗?"}
]
)

实际上,未来开发者与 ChatGPT 互动的方式预计将通过聊天标记语言(简称 ChatML)来实现。

单轮任务

聊天格式支持多轮对话,同时也支持类似我们在 text-davinci-003 中使用的单轮任务。这意味着我们可以使用 ChatGPT 执行类似我们为原始 GPT 模型演示过的任务。例如,让我们尝试使用 ChatGPT 来执行以下问答任务:

输入:

USER: 根据下面的内容回答问题。答案要简短明了。如果不确定答案,请回答“不确定”。

背景:Teplizumab 的起源可以追溯到一个名为 Ortho Pharmaceutical 的新泽西药品公司。在那里,科学家们生成了一种名为 OKT3 的抗体的早期版本。这种分子最初是从老鼠中提取的,它能够与 T 细胞的表面结合并限制它们的细胞杀伤潜力。1986年,它获得批准用于帮助预防肾移植后的器官排斥,成为第一种允许人类使用的治疗性抗体。

问题:OKT3 最初是从哪里提取的?

答案:

输出:

ASSISTANT: 老鼠。

请记住,我添加了 USERASSISTANT 标签,以更好地演示如何使用 ChatGPT 执行任务。以下是在 Playground 中的示例:

CHATGPTCLASSIC

更正式地说,这是 API 调用(我只包含了请求的消息组件):

CONTENT = """根据下面的内容回答问题。答案要简短明了。如果不确定答案,请回答\"不确定\"。

背景:Teplizumab 的起源可以追溯到一个名为 Ortho Pharmaceutical 的新泽西药品公司。在那里,科学家们生成了一种名为 OKT3 的抗体的早期版本。这种分子最初是从老鼠中提取的,它能够与 T 细胞的表面结合并限制它们的细胞杀伤潜力。1986年,它获得批准用于帮助预防肾移植后的器官排斥,成为第一种允许人类使用的治疗性抗体。

问题:OKT3 最初是从哪里提取的?

答案:
"""

response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": CONTENT},
],
temperature=0,
)

指导聊天模型

根据官方 OpenAI 文档,gpt-3.5-turbo 模型的快照也将提供。例如,我们可以访问 3 月 1 日的快照 gpt-3.5-turbo-0301。这使开发者可以选择特定的模型版本。这也意味着指导模型的最佳实践可能会随着版本的变化而改变。

对于 gpt-3.5-turbo-0301,目前的建议是在 user 消息中添加指导,而不是使用可用的 system 消息。

笔记本

以下是一个笔记本,了解如何使用官方的 openai 库调用 ChatGPT API:


参考文献