Python + ChatGPT API开发 | 基于 gpt-3.5-turbo 模型
背景
ChatGPT 是一个基于云端的人工智能聊天机器人,它使用了 OpenAI 的 GPT-3.5-turbo
模型,可以实现自然语言处理(NLP)和语言生成的任务。新的 GPT-3.5-turbo
模型是在 GPT-3 模型的基础上进行的升级和改进,具有更高的准确性和表现力,它可以自动识别文本的语义和上下文,并生成更加准确和自然的回复。
OpenAI 团队发布了最新的智能聊天机器人 ChatGPT API 以及声音转文字 Whisper API。ChatGPT API 提供了一种方便易用的方式,让开发者可以轻松地使用这一强大的 NLP 模型。最新发布的 ChatGPT API 使用的模型系列 gpt-3.5-turbo
与 ChatGPT 产品中使用的模型是相同的。
ChatGPT API
介绍
小编之前写过一篇关于 使用 Python 和 ChatGPT API 开发一个智能聊天程序 的文章,介绍了下使用 text-davinci-002
(或者 text-davinci-003
)模型来做 Python 开发的示例,这一次 ChatGPT 官方更新的gpt-3.5-turbo
模型,接口上会有一些调整,提供了更多的 API 参数和选项,让开发者可以根据自己的需求来定制和优化 API 的表现。
如果使用新的模型,价格为每 1000 次 token 花费 0.002 美元,比现在用的 GPT-3.5
模型便宜 10 倍,具有高可用性和可伸缩性,也能够应对高流量的应用场景。官方的测试工程师从 text-davinci-003
迁移到 gpt-3.5-turbo
,只需要少量的调整就能完成开发,提供了非常友好的开发文档和示例代码,可以帮助开发者快速上手。
使用
如果只是想快速验证 ChatGPT API 是否可用,可以尝试使用 curl 来发送请求。
curl https://api.openai.com/v1/chat/completions
-H "Authorization: Bearer $OPENAI_API_KEY"
-H "Content-Type: application/json"
-d '{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "What is the OpenAI mission?"}]
}'
如果需要深入 ChatGPT API 的开发,小编接下来给大家展示下如何使用 Python + ChatGPT API,快速地构建基于 ChatGPT 的软件。
以下是基本用法的代码示例:
# 注意检查你的OpenAI版本必须为v0.27.0以上
import openai
# 首先,你需要设置你的 API 密钥
openai.api_key = "YOUR_API_KEY"
# 然后,你可以调用 "gpt-3.5-turbo" 模型
model_engine = "gpt-3.5-turbo"
# 设置你的输入文本
input_text = "2014年世界杯在哪里举办的?"
# 发送 API 请求并获取响应,注意接口和参数相比较旧版模型有变化
response = openai.ChatCompletion.create(
model=model_engine,
messages=[{"role": "user", "content": input_text }]
)
# response将会得到一个类似这样结构的json消息
# {
# 'id': 'chatcmpl-6p9XYPYSTTRi0xEviKjjilqrWU2Ve',
# 'object': 'chat.completion',
# 'created': 1677649420,
# 'model': 'gpt-3.5-turbo',
# 'usage': {'prompt_tokens': 56, 'completion_tokens': 31, 'total_tokens': 87},
# 'choices': [
# {
# 'message': {
# 'role': 'assistant',
# 'content': '2014年世界杯足球赛在巴西举办。'},
# 'finish_reason': 'stop',
# 'index': 0
# }
# ]
# }
# 解析响应并输出结果
output_text = response['choices'][0]['message']['content']
print("ChatGPT API 回复:", output_text)
在上面的代码中,我们首先设置了我们的 API 密钥,然后指定了要使用的 GPT-3.5-turbo
模型,设置了输入文本并发送了 API 请求,最后解析响应并输出了 ChatGPT 的回复。有几个注意事项
新接口: 原本使用text-davinci-002
模型,我们使用的是openai.Completion.create
接口,现在新的 gpt-3.5-turbo
应该使用 openai.ChatCompletion.create
接口。
新参数: 第一个参数设置 model
模型名称,第二个参数是一个对话列表
为什么要提供一个对话列表呢?因为 API 调用都是单次的接口请求,不会自动记录之前的聊天信息,没有上下文,要让 ChatGPT 在单次的请求中了解你的上下文,就需要提供这样一个完整的对话列表,比如这样一个对话
import openai
openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Who won the world series in 2020?"},
{"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
{"role": "user", "content": "Where was it played?"}
]
)
每条对话消息都需要提供角色和内容,角色分三种:系统system
、用户user
或者 助手assistant
。
system
:系统消息相当于一个管理员,可以设置助手的行为和特征。在上面的例子中,助手被指示你是一个有用的助手
。user
:用户消息就是我们自己,可以由用户发出提问,或者直接让开发者提前内置一些 Prompts 指令。一些可以参考的 ChatGPT Promptsassistant
:助手消息就是 ChatGPT API 在之前提供的回复,在这里存储起来。这个回复也可以自己修改或者自己编一段对话出来,来让整个对话更通顺。
如果不需要对话的话,只需要提供单个的user
消息即可,就像刚刚 Python 代码里演示的。
更多开发文档请参考 Chat completions
Whisper API
OpenAI 还一同发布了支持语音转文本的 Whisper API。它提供了 large-v2 模型,使用方便,价格为 0.006 美元/分钟,可以按需访问,高度优化的服务堆栈可以确保更快的性能。
Whisper 的 API 接口支持以源语言转录或翻译(转录成英语),并接受多种格式(m4a、mp3、mp4、mpeg、mpga、wav、webm):
一个简单的 curl 示例
curl https://api.openai.com/v1/audio/transcriptions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: multipart/form-data" \
-F model="whisper-1" \
-F file="@/path/to/file/openai.mp3"
接口响应格式
{
"text": "Imagine the wildest idea that you've ever had, and you're curious about how it might scale to something that's a 100, a 1,000 times bigger..."
}
在 Python 中使用
import openai
file = open("/path/to/file/openai.mp3", "rb")
transcription = openai.Audio.transcribe("whisper-1", f)
print(transcription)
更多开发文档请参考 Speech to text
总结
以上只是展示如何使用 Python 结合 ChatGPT API 发送请求的简单例子,你可以根据你的需求使用 ChatGPT API 来完成更复杂的任务。
ChatGPT API 使用源码参考:https://github.com/openHacking/ChatGPT-API-Demo
评论