# OpenAI API 学习笔记

By [xiaosu](https://paragraph.com/@xiaosu) · 2025-02-11

---

获取 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 卡可能无法使用，您可以尝试使用国外的卡，或者使用网络卡。

添加支付方式后，回到 Overview 页面点击 Add to credit balance 进行充值。充值完成后，回到 Usage 页面即可查看可用额度的变化。

Python 使用测试
-----------

### 配置 Python

确保 Python 版本为 3.7.1 以上。为了方便使用，我使用 Anaconda 创建了一个虚拟环境。

### 安装 OpenAI 库

### 设置您的 API Key

OpenAI 默认会在环境变量中查找“OPENAI\_API\_KEY”，并使用其作为 OpenAI Key。您可以通过以下两种方式设置 OpenAI Key：

1.  **为所有项目设置** 在系统环境变量中添加 OPENAI\_API\_KEY（按 Win 键搜索环境变量即可打开该页面）。添加完成后，可以打开 cmd，使用 `echo %OPENAI_API_KEY%` 检查是否设置成功。
    
    python from openai import OpenAI
    
    client = OpenAI()
    
2.  **为单个项目设置** 在项目文件夹中创建 `.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 API 可以理解语言（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 预期输出的参考。
    

每个回复中都有 **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 即可。

您可以同时添加多个图像。

### JSON 输出

若想让模型永远输出 JSON 对象，可以将 response\_format 设置为 `{ "type": "json_object" }`。

*   要使用 JSON 模式，一定要在 Prompt 中指示模型生成 JSON（比如在 system 信息中）。
    
*   在使用输出的 JSON 前先检查 finish\_reason，若是 length 则 JSON 结果是被剪裁的，不能使用。
    

### 图像生成

👉 [野卡 | 一分钟注册，轻松订阅海外线上服务](https://bit.ly/yeka)

---

*Originally published on [xiaosu](https://paragraph.com/@xiaosu/openai-api)*
