跳到主要内容

OpenAI API

OpenAI API 用于在自己的应用中调用模型。具体模型名称、价格、速率限制和能力,以官方开发者文档和项目账户当前显示为准。

接入前检查​

  1. 创建 API 密钥,并只放在服务端或受保护的密钥管理系统中。
  2. 确认项目、组织、地区和账单设置。
  3. 选择当前账户可用的模型,并记录模型标识。
  4. 为超时、限流、空响应和服务错误准备重试与日志策略。

最小请求示例​

curl https://api.openai.com/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "<your-model-id>",
"input": "用一句话说明 API 调用成功。"
}'

示例中的模型标识是占位符,请替换为账户当前可用的模型。不要把真实 API 密钥提交到代码仓库、前端 bundle 或公共日志。

用 Python 读取第一条回复​

先在自己的开发环境安装官方 SDK:

python -m pip install openai

通过本地环境变量或部署平台的密钥配置设置 OPENAI_API_KEY,并将 OPENAI_MODEL 设置为账户可用的模型标识。下面的程序只读取环境变量,不在源码里保存密钥。环境变量不会自动从任意 .env 文件加载,需要由你的运行环境负责加载。

把下面内容保存为 example.py:

import os
from openai import OpenAI

client = OpenAI()
response = client.responses.create(
model=os.environ["OPENAI_MODEL"],
input="把这句话改得更清楚:本周我们已经完成了初稿的编写工作。",
)

print(response.output_text)
print(response.usage)

运行 python example.py。response.output_text 是 SDK 提供的文本提取方式,response.usage 可以帮助观察请求用量。若提示缺少 OPENAI_MODEL,先设置模型变量;若提示认证失败,检查密钥是否加载到当前进程,不要把完整密钥打印到终端日志。

Node.js 的对应写法​

在自己的项目目录执行 npm install openai,将以下代码保存为 example.mjs,设置上述环境变量后运行 node example.mjs:

import OpenAI from 'openai';

if (!process.env.OPENAI_MODEL) {
throw new Error('请先设置 OPENAI_MODEL');
}

const client = new OpenAI();
const response = await client.responses.create({
model: process.env.OPENAI_MODEL,
input: '请列出整理会议纪要时最重要的三个字段。',
});

console.log(response.output_text);

两种示例都用于本地或服务端运行。示例依据 OpenAI 官方快速入门,查阅于 2026-09-24;需要有效密钥和模型权限才能完成真实调用。

收到响应之后检查什么​

直接使用 HTTP 接口时,响应中的 output 可能包含不同类型的条目,不能假定第一项永远就是最终回答。SDK 的文本辅助属性更适合简单文本任务;包含工具调用时,需要按对应条目类型处理。

流式输出是逐步接收响应的方式,收到第一段文字不等于整次请求完成。应用应区分接收中、成功结束和中途失败,避免把半段内容当作最终结果保存。函数调用则表示模型提出执行请求,实际执行和权限校验仍由应用负责。

需要表格字段或 JSON 时,除了结构正确,还应检查业务含义。例如金额字段是数字,也可能使用了错误币种;日期格式合法,也可能并非来源中的日期。结构化输出不能代替事实验证。

如何估算调用费用​

基本思路是分别计算输入与输出:输入 tokens ÷ 1,000,000 × 输入单价,加上输出 tokens ÷ 1,000,000 × 输出单价。缓存、工具、地区和处理模式可能另有规则,应再逐项核对。

假设某模型输入单价为每百万 $2、输出为 $10,一次请求使用 10,000 输入 tokens 和 1,000 输出 tokens,按这个简化公式估算为 $0.03。这只是算术示例,不含额外工具费用,也不是账户账单承诺。实际预算应根据响应报告的用量和当前定价页计算。

排查顺序​

  • 401:检查密钥是否有效、环境变量是否加载,以及请求是否发往正确项目。
  • 403:检查项目权限、组织设置、地区或模型访问权限。
  • 429:检查速率限制、余额和重试退避策略。
  • 4xx 参数错误:对照当前接口文档检查模型标识、输入结构和参数类型。
  • 5xx:记录 request id 和时间,采用有限次数的指数退避后再判断是否为服务事件。

让错误处理可控​

先阅读错误体中的具体类型,再决定是否重试。认证失败或参数不支持通常需要修改配置,重复发送同一请求不会自动恢复。429 既可能与请求速率有关,也可能与额度有关;额度问题不应使用无限重试处理。

对可重试的临时错误,设置次数上限、等待间隔和超时,并检查 SDK 是否已自带重试,避免多层重试叠加。记录发生时间、HTTP 状态、请求标识和所选模型;含客户材料的请求正文不应默认完整写入日志。

应用正式接入前,至少准备正常输入、空输入、很长的输入以及工具失败等样本。先让错误以可理解的方式返回,再考虑扩大请求量。

官方资料​