通过OpenAI API和W&B Tables在Python中使用GPT-3
在Python中使用GPT-3的指南,当然还包括Weights & Biases(权重与偏差)。
Created on December 4|Last edited on February 14
Comment
简介
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的好方法,包括总结、魔鬼辩护者和问题回答。

那么,现在就来深入研究如何在Python中使用GPT-3吧!
编码
%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 osimport openaiimport wandbopenai.api_key = os.getenv("OPENAI_API_KEY")
做完了这个,我们可以在Python中初始化一个新的名为GPT-3的Weights & Biases项目,以及一个新的W&B Table——这是一个用于交互式探索表格数据的工具——有两列:prompt和completion。
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是生成响应的最大令牌数。
可视化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,并且你喜欢这些内容!生成快乐! 😊
Add a comment
Iterate on AI agents and models faster. Try Weights & Biases today.