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 Prompts
  • assistant:助手消息就是 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 来完成更复杂的任务。

参考

发表评论