我正在参加「掘金·启航计划」
除了通过网页使用ChatGPT,OpenAI还提供了ChatGPT的开放接口API,让开发者可以通过程序直接获取ChatGPT的回答。这样,其他开发者就可以在自己的程序和系统中接入ChatGPT,提供智能应答的功能。
进入OpenAI的开放平台(platform.openai.com ),可以看到接口相关文档和演示代码。
调用ChatGPT的接口需要先申请一个API key,登录账号之后,点击页面右上角的用户名,选择【View API keys】,在弹出的页面上点击【Create new secret key】,创建一个新的API key。请注意,API key生成成功后需要复制下来并妥善保存,在页面上无法再次查看,后面在代码中调用时会用到。
ChatGPT的接口不是免费的,费用以token为单位计算,1000个token大约相当于750个英文单词,费用为0.002美元。通常一次问答会消耗几百个token,也就是约人民币1分钱左右。目前每个账号注册后会赠送一定的额度,可以在页面上查看API额度的使用情况。
下面介绍3种接入方式。
1. 通过SDK接入
有了API key,就可以在代码中使用ChatGPT了。OpenAI官方提供了SDK,也就是一个现成的Python模块供开发者使用,名字就叫 openai。可以在命令行通过pip命令进行安装:
pip install openai
导入openai模块,将创建的API Key赋值给openai的api_key属性。
构造请求内容,格式是一个字典,其中role的值为user,content的值为向ChatGPT提问的内容。
通过openai.ChatCompletion.create函数调用ChatGPT接口,参数model设定为gpt-3.5-turbo,messages参数是对话列表,这里只包含一个元素,就是前面构造的请求内容。你也可以传入多个对话作为上下文。
响应结果中会包含很多信息,如对话ID、时间、消耗的token数等等,我们这里只提取其中的内容部分。
import openai
openai.api_key = '在网页上创建的APIKey'
prompt = input('提问:')
msg = {'role':'user', 'content':prompt}
result = openai.ChatCompletion.create(model='gpt-3.5-turbo', messages=[msg])
answer = result.choices[0].message['content']
print(answer)
2. 通过命令行调用
在安装了openai模块之后,会同时自动配置好一个命令行工具,于是也就可以通过如下命令调用ChatGPT:
openai -k 你的APIKey api chat_completions.create -m gpt-3.5-turbo -g user 提问内容
3. 通过命令行调用
不管是通过SDK接入还是命令行调用ChatGPT,本质上都是向ChatGPT的API接口发送网络请求,在此基础之上做了不同形式的封装。所以,我们也可以直接通过Python代码向接口发送请求,实现与ChatGPT的对话。
使用requests模块向ChatGPT的API接口地址发送请求,在头部信息中包含请求的数据格式及API key。请求的数据内容结构及含义与之前SDK中使用的参数相同。
import openai
openai.api_key = '在网页上创建的API Key'
def ask(prompt):
msg = {'role':'user', 'content':prompt}
result = openai.ChatCompletion.create(model='gpt-3.5-turbo', messages=[msg])
answer = result.choices[0].message['content']
return answer
while True:
ques = input('提问:')
if not ques:
break
print('AI思考中……')
ans = ask(ques)
print('回答:', ans)
以上就是在程序中接入OpenAI API的几种方法,可根据实际的开发需要调节传递的参数从而实现更加完善的交互功能。这里不做进一步演示,大家可参考开放平台上文档和示例进行深入学习。