# OpenAI API 学习笔记

By [weiwei](https://paragraph.com/@weiwei-8) · 2025-01-15

---

获得 OpenAI API Key
-----------------

### 获取 OpenAI 账号

如果你已经使用过 ChatGPT，那么你的 ChatGPT 账号就是 OpenAI 账号，直接使用即可。如果没有 OpenAI 账号，你需要先进行注册。

由于国内访问的限制，注册可能会稍显复杂。网上有很多教程可以帮助你完成注册，具体内容这里不再赘述。如果你觉得注册过程麻烦，也可以选择购买现成的账号，或者直接购买一个带额度的 API Key。

### 获取 OpenAI API Key

1.  登录后，鼠标移动到页面左侧，你会看到一个弹出的侧边栏。
    
2.    
    
3.  点击 **Create new secret key** 创建一个新的 API Key，为其命名，点击确定即可。
    
4.  系统会弹出对话框，显示你创建的 Key，记得立即保存该 Key，因为一旦关闭对话框，你将无法再次查看该 Key。
    

完成保存后，点击 **Done**，就可以在该页面查看新创建的 API Key 了。

获取 API 使用额度
-----------

### 额度查询

点击侧边栏中的 **Usage** 进入使用页面。在该页面，左侧显示的是每日花费，右侧则显示了剩余额度。

![额度查询](https://storage.googleapis.com/papyrus_images/287bd0d0580db2ad768856116a99acd1279a964b005e3d61809928f376875d0a.jpg)

额度查询

在 **Credit Grants** 区域，显示了三种颜色：

*   **灰色**：未使用
    
*   **绿色**：已使用
    
*   **红色**：已过期
    

只有在灰色区域，即未使用额度时，才能成功调用 API。

### 额度充值

点击侧边栏中的 **Setting** 下的 **Billing** 进入账单页面。在这里，你可以管理充值相关事项。

充值之前，需要先添加一种付款方式。点击 **Payment methods** 管理你的支付方式。由于国内的限制，Visa 卡可能无法使用。你可以选择使用国外的信用卡，或者使用虚拟信用卡。推荐使用 [WildCard](https://bit.ly/bewildcard) 虚拟信用卡，付款便捷，开卡费 $15.99，充值有 3.5% 的手续费，根据需求使用。

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

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

### 配置 Python

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

### 安装 OpenAI 库

你需要安装 OpenAI 的 Python 库，使用以下命令：

### 设置你的 API Key

OpenAI 默认会从环境变量中获取 **OPENAI\_API\_KEY**，作为 API Key。如果你不想每次都手动设置，可以通过以下两种方式来设置：

1.  **为所有项目设置**在系统环境变量中添加 **OPENAI\_API\_KEY**。
    
    *   在 Windows 上，可以按 Win 键搜索 “环境变量” 来打开相关设置界面。
        
    
    完成后，你可以使用命令行命令 `echo %OPENAI_API_KEY%` 来检查设置是否成功。
    
2.  **为单个项目设置**在项目目录中创建一个 `.env` 文件（如果使用 Git，请确保将该文件添加到 `.gitignore` 中）。然后在文件中写入：
    
        OPENAI_API_KEY=你的Key
        
    

完成设置后，执行项目测试，确保没有报错。

### 发送请求测试

以下是一个简单的 GPT-3.5 请求示例：

    import os
    import dotenv
    from openai import OpenAI
    
    dotenv.load_dotenv()
    
    client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))
    
    response = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[
            {"role": "system", "content": "你是一个富有创造力的编程助手，能够用诗意的方式解释复杂的编程概念。"},
            {"role": "user", "content": "请创作一首解释递归概念的诗。"}
        ]
    )
    
    print(response.choices[0].message.content)
    

在 [Usage页面](https://platform.openai.com/usage) 上，你可以查看这次请求的花费和 token 数量。

功能介绍（Python为例）
--------------

### 文本生成（Text Generation）

可以理解语言（GPT-4 也能理解图像），并返回文字。以下是一个请求示例：

    response = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[
            {"role": "system", "content": "你是一个有用的助手。"},
            {"role": "user", "content": "2025年世界大赛的冠军是谁？"},
            {"role": "assistant", "content": "洛杉矶道奇队赢得了2025年世界大赛的冠军。"},
            {"role": "user", "content": "比赛在哪里举行？"}
        ]
    )
    

主要的输入是 **messages**，它是一个消息对象的列表。每个消息对象包含 **role**（system、user 或 assistant）和 **content**（内容）。

*   **system**（可选）：用于设置 AI 的行为；
    
*   **user**：AI 要回应的信息；
    
*   **assistant**：AI 之前的回复或自己的参考信息。
    

### 图像输入（Image Input）

GPT-4 的 vision 版本可以理解图像。你只需在 **messages** 中的 **content** 添加图像 URL，并传入参数 `type="image_url"`。

以下是图像输入的示例：

![图像输入](https://storage.googleapis.com/papyrus_images/4aa5000ba0a4a1833f2ca27d4ed1e18597cd440b2f55c64adbcb277dd2929fa8.jpg)

图像输入

输出是：

### 图像生成（Image Generation）

OpenAI 还支持图像生成。你可以使用 API 请求生成图片，并获取相应的图像链接。

---

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