如何编程调用 OpenAI 的 ChatGPT API 接口

前言

最近备受关注的 ChatGPT 提供了一系列 API 接口,允许用户调用多种模型进行对话,具体应用包括:

  • 起草电子邮件或其他书面文件
  • 编写代码
  • 回答有关一组文件的问题
  • 创建会话代理
  • 为软件提供自然语言界面
  • 担任多种科目的导师
  • 进行语言翻译
  • 模拟视频游戏中的角色等

准备工作

在开始之前,您需要进行以下准备:

  • 注册一个 OpenAI 账号
  • 配置 Python 开发环境,确保 Python 版本为 >=3.7.1

获取开发 KEY

  1. 打开 OpenAI API Keys 页面
  2. 点击“Create new secret key”
  3. 输入任意 Key 名称
  4. 复制您的 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 服务器可能会被墙,直接运行可能会遇到连接错误。解决方案有两种:

  1. 全局科学上网
  2. 增加代理设置,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 有三种类型:systemuserassistant

  • system:系统角色,包含初始说明。
  • user:用户提问的文本内容。
  • assistant:ChatGPT 返回的内容。

为了进行多轮对话,需将之前的完整对话和返回消息放入 messages 参数中。

Token 的概念

OpenAI 根据对话和生成词量(Token)计费,提问时需注意长度,以免快速消耗配额。Token 是词法分析后的标识符,用于标注内容的关键部分。

可通过 max_tokens 参数控制生成返回的最大 token,以避免过度消耗。

完整示例

这是一个命令行交互式输入的示例,启动后输入问题,然后回车。

👉 野卡 | 一分钟注册,轻松订阅海外线上服务

(0)
上一篇 5天前
下一篇 5天前

相关推荐