获取 OpenAI API Key
注册 OpenAI 账号
如果您之前使用过 ChatGPT,那么 ChatGPT 的账号即为 OpenAI 账号,您可以直接使用。如果没有账号,可以在此处注册。
由于国内的网络限制,注册过程可能会比较复杂。网上有许多注册教程,这里不再详细说明。如果觉得麻烦,可以选择在某宝上购买账号,或者直接购买一个有额度的 API Key。
获取 OpenAI API Key
登录后,将鼠标移动到页面左侧,您会看到一个弹出的侧边栏。
点击侧边栏中的“API Keys”进入 API Keys 页面。
在这里,您可以管理(创建、删除等)所有的 API Key。
点击“Create new secret key”创建新 API Key,进行命名,点击确定即可。
此时会弹出一个对话框,其中包含您创建的 Key,请务必立即保存该 Key,关闭对话框后将无法再次查看。
保存完成后,点击 Done,您就可以在该页面看到新创建的 API Key 了。
获取 API 使用额度
额度查询
点击侧边栏中的“Usage”进入使用页面。
该页面左侧显示了每天的花费,右侧则显示了额度。
在右侧的 Credit Grants 区域,分为三种颜色:灰(未使用)、绿(已使用)、红(已过期)。只有在未使用状态(灰色状态)时,才能成功调用 API。
额度充值
点击侧边栏中的“Setting”下的“Billing”进入账单页面。
在这个页面中,您可以管理充值相关事项。
要充值,首先需要添加一种付款方式,点击 Payment methods 就可以管理自己的支付方式。
由于网络限制,国内的 Visa 卡可能无法使用。您可以使用国外的卡,或者使用网络卡。这里推荐使用的卡是 ACCPAY,付款方便,但开卡费略高 $15.99,充值有手续费 3.5%,请根据需求选择。
添加支付方式后,回到 Overview 页面点击 Add to credit balance 就可以进行充值。充值完成后,回到 Usage 页面即可查看可用额度的变化。
Python 使用测试
配置 Python
确保 Python 版本为 3.7.1 以上。
为了方便使用,我使用 Anaconda 创建了一个虚拟环境。
安装 OpenAI 库
设置您的 API Key
OpenAI 默认会在环境变量中查找“OPENAI_API_KEY”,并使用其作为 OpenAI Key。您可以通过以下两种方式设置 OpenAI Key:
- 为所有项目设置
在系统环境变量中添加 OPENAI_API_KEY(按 Win 键搜索环境变量即可打开该页面)。
添加完成后,可以打开 cmd,使用 echo %OPENAI_API_KEY%
检查是否设置成功。
python
from openai import OpenAI
client = OpenAI()
- 为单个项目设置
在项目文件夹中创建.env
文件(若要用 git 进行管理,请使用 gitignore 忽略),输入OPENAI_API_KEY=(您的 Key)
。
plaintext
# Once you add your API key below, make sure to not share it with anyone! The API key should remain private.
OPENAI_API_KEY=abc123
运行测试时,如果没有报错,则表示设置成功。
如果您希望使用其他环境变量名,可以使用以下代码:
python
client = OpenAI(
api_key=os.environ.get(“CUSTOM_ENV_NAME”),
)
发送请求测试
以下是一个简单的 gpt-3.5 chat 请求示例:
python
import os
import dotenv
from openai import OpenAI
dotenv.load_dotenv()
client = OpenAI(
api_key=os.environ.get(“OPENAI_API_KEY”),
)
发送请求
completion = client.chat.completions.create(
model=”gpt-3.5-turbo”,
messages=[
{“role”: “system”, “content”: “You are a poetic assistant, skilled in explaining complex programming concepts with creative flair.”},
{“role”: “user”, “content”: “Compose a poem that explains the concept of recursion in programming.”}
]
)
打印回复
print(completion.choices[0].message.content)
现在您可以在 Usage 页面 查看此次请求的花费、token 数量等信息(可能会有延迟)。
功能介绍(Python 为例)
文本生成
官方教程:文本生成指南
OpenAI 可以理解语言(GPT-4 也可以理解图像),并返回文字。
python
response = client.chat.completions.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?”}
]
)
主要的输入是 messages
,它是一个 message 对象的列表。message 对象由 role(system, user 或 assistant)和 content 组成。一般来说,对话都是由一个 system 信息开头,然后跟着数个 user 或 assistant 信息。
- system(可选):用于设置 AI 的行为,如个性或对话过程中的行为指示;
- user:AI 要回应的信息;
- assistant:之前 AI 回复的信息,也可以自己写,以给 AI 预期输出的参考。
python
response[‘choices’][0][‘message’][‘content’]
每个回复中都有 finish_reason:
- stop:API 返回信息已完成,或触发了 stop 参数传入的 stop sequence;
- length:到达了 max_token 参数或模型的 token 限制;
- tool_call:模型决定调用工具;
- content_filter:由于内容过滤器,内容被隐藏;
- null:还没完成。
图像输入
GPT-4 的 vision 版本可以理解图像。
在 user message 的 content 中,添加 type 为 image_url 的图像 URL 即可。
可以同时添加多个图像。
image_url 中的 detail 参数可以控制模型处理图像的方式:
- 默认为 auto;
- low 时会使用 512*512 的低质量图像(65 token);
- high 会先让模型看 512 的低质量图像,然后将图像分成多个 512 的正方形图像逐一查看(每个 129 token)。
JSON 输出
若想让模型永远输出 JSON 对象,可以将 response_format 设置为 { "type": "json_object" }
。
- 要使用 JSON 模式,一定要在 Prompt 中指示模型生成 JSON(比如在 system 信息中)。
- 在使用输出的 JSON 前先检查 finish_reason,若是 length 则 JSON 结果是被剪裁的,不能使用。