前言
最近备受关注的 ChatGPT 提供了一系列 API 接口,允许用户调用多种模型进行对话,具体应用包括:
- 起草电子邮件或其他书面文件
- 编写代码
- 回答有关一组文件的问题
- 创建会话代理
- 为软件提供自然语言界面
- 担任多种科目的导师
- 进行语言翻译
- 模拟视频游戏中的角色等
准备工作
在开始之前,您需要进行以下准备:
- 注册一个 OpenAI 账号
- 配置 Python 开发环境,确保 Python 版本为 >=3.7.1
获取开发 KEY
- 打开 OpenAI API Keys 页面
- 点击“Create new secret key”
- 输入任意 Key 名称
- 复制您的 Secret Key,注意:此 Key 只能在此处复制,若未保存需重新生成。
开发步骤
首先,使用 pip 安装 OpenAI 库:
bash
pip install openai
接下来,创建一个新的脚本 helloai.py
,并输入以下代码:
python
import os
import openai
填入您的 OPENAI_API_KEY
openai.api_key = “OPENAI_API_KEY”
代理设置:如果您在墙内需要使用代理才能调用,支持 http 代理和 socks 代理
使用的模型为 gpt-3.5-turbo
completion = openai.ChatCompletion.create(
model=”gpt-3.5-turbo”,
messages=[
{“role”: “user”, “content”: “Hello!”}
]
)
输出生成的内容
print(completion.choices[0].message)
输出整个响应
print(completion)
运行脚本:
bash
python ./helloai.py
返回的输出示例:
Hello there, how may I assist you today?
{
“id”: “chatcmpl-123”,
“object”: “chat.completion”,
“created”: 1677652288,
“choices”: [{
“index”: 0,
“message”: {
“role”: “assistant”,
“content”: “\n\nHello there, how may I assist you today?”,
},
“finish_reason”: “stop”
}],
“usage”: {
“prompt_tokens”: 9,
“completion_tokens”: 12,
“total_tokens”: 21
}
}
调用代码非常简单,下面将简要讲解代码及 openai.ChatCompletion.create
的相关参数。
代理问题
由于众所周知的原因,OpenAI 服务器可能会被墙,直接运行可能会遇到连接错误。解决方案有两种:
- 全局科学上网
- 增加代理设置,OpenAI 库支持设置 http 代理和 socks 代理:
python
openai.proxy = “http://127.0.0.1:1080”
model 参数
model
参数指示 API 使用哪个训练模型生成对话。目前可用的对话生成模型包括:
- gpt-4
- gpt-3.5-turbo
GPT-3.5 模型说明
| 最新款 | 描述 | 最大 token | 训练数据 |
|———————–|——————————————|————|—————–|
| gpt-3.5-turbo | 功能最强大的 GPT-3.5 模型,针对聊天进行了优化 | 4,096 | 截至 2021 年 9 月 |
| gpt-3.5-turbo-0301 | 2023 年 3 月 1 日的 gpt-3.5-turbo 快照 | 4,096 | 截至 2021 年 9 月 |
messages 参数
messages
参数是当前对话的列表:
python
messages=[{“role”: “user”, “content”: “Hello!”}]
role
有三种类型:system
、user
、assistant
。
- system:系统角色,包含初始说明。
- user:用户提问的文本内容。
- assistant:ChatGPT 返回的内容。
为了进行多轮对话,需将之前的完整对话和返回消息放入 messages
参数中。
Token 的概念
OpenAI 根据对话和生成词量(Token)计费,提问时需注意长度,以免快速消耗配额。Token 是词法分析后的标识符,用于标注内容的关键部分。
可通过 max_tokens
参数控制生成返回的最大 token,以避免过度消耗。
完整示例
这是一个命令行交互式输入的示例,启动后输入问题,然后回车。