OpenAI API
OpenAI API 用于在自己的应用中调用模型。具体模型名称、价格、速率限制和能力,以官方开发者文档和项目账户当前显示为准。
接入前检查
- 创建 API 密钥,并只放在服务端或受保护的密钥管理系统中。
- 确认项目、组织、地区和账单设置。
- 选择当前账户可用的模型,并记录模型标识。
- 为超时、限流、空响应和服务错误准备重试与日志策略。
最小请求示例
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 状态、请求标识和所选模型;含客户材料的请求正文不应默认完整写入日志。
应用正式接入前,至少准备正常输入、空输入、很长的输入以及工具失败等样本。先让错误以可理解的方式返回,再考虑扩大请求量。