Skip to main content

通过OpenAI API和W&B Tables在Python中使用GPT-3

在Python中使用GPT-3的指南,当然还包括Weights & Biases(权重与偏差)。
Created on December 4|Last edited on February 14
本报告是作者Ivan Goncharov所写的"Use GPT-3 in Python With the OpenAI API and W&B Tables"的翻译



简介

GPT-3是OpenAI开发的一个非常强大的模型,可以应用于许多自然语言处理任务。
通常,最好从OpenAI的Playground开始,大家来尝试一下模型的预测,了解这是怎么回事。
例如,这是 GPT-3 在介绍自己:


然而,一旦想更认真地使用该模型,可将其作为某些项目或应用程序的一部分,在Python中部署。
在本文中,我想展示在Python中使用GPT-3的最简单方法,以及如何查看所获得的不同模型预测,并使用W&B Tables以交互方式进行探索。
如果不熟悉Tables功能,要知道这是生态系统中的工具之一,可使大家直接在浏览器中以交互方式探索表格数据。我们马上就会看到这对使用GPT-3有什么帮助。

使用GPT-3可以做什么?

正如上面提到的,我们很难准确地统计出GPT-3所能用于的任务数量。老实说,GPT-3对很多东西都很有效。但如果需要一些灵感,我最近写了另一篇文章,题为《GPT-3提示工程的五个创意贴士》(5 Creative Tips for GPT-3 Prompt Engineering),其中分享了一些使用GPT-3的好方法,包括总结、魔鬼辩护者和问题回答。
OpenAI在此提供了大量关于各种不同GPT-3任务的示例。对我们来说最棒的是,所有这些例子都有一个Python API代码片段。

那么,现在就来深入研究如何在Python中使用GPT-3吧!

编码

如果想在Python中使用OpenAI API,必须首先将API密钥添加为环境变量。在OpenAI的网站注册后,会获得一个API密钥,可于此处查看。
%env OPENAI_API_KEY=YOUR_OPENAI_API_KEY
我们通常不应该向他人展示自己的API密钥,我会在完成本文后,创建一个新密钥。
💡
接下来,我们将安装两个依赖项:OpenAI的Python客户端和wandb,这是一个Weights & Biases的Python客户端,我们将用此来探索GPT-3的预测。
!pip install --upgrade openai wandb
然后,我们将导入这些模块,并将API密钥传递给OpenAI的Python客户端。
import os
import openai
import wandb

openai.api_key = os.getenv("OPENAI_API_KEY")
做完了这个,我们可以在Python中初始化一个新的名为GPT-3的Weights & Biases项目,以及一个新的W&B Table——这是一个用于交互式探索表格数据的工具——有两列:promptcompletion
run = wandb.init(project='GPT-3 in Python')
prediction_table = wandb.Table(columns=["prompt", "completion"])
现在,这是本教程的重点:在接下来的一大段代码中,我们将通过API来发送提示,以获得GPT-3的预测!(OpenAI在其终端处理所有大规模GPT-3模型的计算,所以具有什么硬件并不重要,因此无需担心)
gpt_prompt = "Correct this to standard English:\n\nShe no went to the market."

response = openai.Completion.create(
engine="text-davinci-002",
prompt=gpt_prompt,
temperature=0.5,
max_tokens=256,
top_p=1.0,
frequency_penalty=0.0,
presence_penalty=0.0
)

print(response['choices'][0]['text'])

prediction_table.add_data(gpt_prompt,response['choices'][0]['text'])
请注意,GPT-3 模型的请求/响应硬限制为2049个“令牌”。这里,“令牌”是指大约4个字符的文本。这意味着可能无法处理提示,或生成百科全书式长度的响应,但实际上可能会生成与正在阅读的文章类似的长度
💡
因此,在engine="text-davinci-002"行中,指定了想要使用的GPT-3变体。目前功能最强大的是text-davinci-002,但也有更小(更便宜)的,可于此处的OpenAI文档中,了解有关不同GPT-3 engines的更多信息。
然后,我们需要指定一些超参数(hyperparameters)。
  • temperature会控制随机性;降低temperature会导致更少的随机completions。
  • max_tokens是生成响应的最大令牌数。
大家可以使用《API 参考文档》(API Reference)来了解有关其他超参数的更多信息。

可视化GPT-3模型预测

对提示执行推理后,我们从OpenAI的API响应中提取文本,并使用这行代码将其添加到W&B Table中。
prediction_table.add_data(gpt_prompt,response['choices'][0]['text'])
我们可以随时重复这个过程——甚至可以让其在提示数组上循环运行——并继续以这种方式向table中添加数据。
而且,在完成实验后,我们可以直接调用wandb.log来记录W&B Table,并能够在浏览器中以交互方式将其可视化:
wandb.log({'predictions': prediction_table})
wandb.finish()
这样就可以确保永远不会忘记GPT-3的prompt-and-completion实验! 😉
这是我使用GPT-3琢磨了一段时间,并用Python手动输入各种提示后得到的示例。


Run set
4


想更好地利用GPT-3吗?

结语

感谢阅读,希望这份报告能帮助大家在Python中使用GPT-3,并且你喜欢这些内容!生成快乐! 😊
Iterate on AI agents and models faster. Try Weights & Biases today.