使用 OpenAI SDK

使用 OpenAI SDK

选好语言与终端,设置密钥和模型,再运行一条最小请求。

内容核对:2026-10-10 真实接入尚未实测

查看验证范围

适用范围:OpenAI JavaScript / Python SDK 示例。示例使用环境变量读取密钥,分别提供 Responses 和 Chat Completions 调用。内容核对日期为 2026-10-10;本地模拟接口检查不代表线上能力已验证,未执行真实 1A1API 模型接入测试。

1. 安装所选语言的 SDK

只需选择一门语言,在自己的测试目录操作。

代码语言
运行终端
JavaScript:在测试目录安装 SDK
npm install openai
Python · macOS / Linux / WSL
python3 -m pip install openai
Python · Windows PowerShell
py -m pip install openai

2. 设置密钥与模型

在运行脚本的同一终端设置变量,把 YOUR_MODEL_ID 替换为当前密钥可用且支持目标接口的模型。每次执行示例都会产生实际请求;首次测试关闭 SDK 自动重试。

macOS / Linux:设置环境变量
export OPENAI_API_KEY="sk-your-api-key"
export OPENAI_MODEL="YOUR_MODEL_ID"
Windows PowerShell:当前会话
$env:OPENAI_API_KEY="sk-your-api-key"
$env:OPENAI_MODEL="YOUR_MODEL_ID"
不要把真实 API 密钥提交到 Git、写进浏览器前端代码或放进公开截图。生产环境请使用部署平台的密钥管理功能。
接口地址与运行环境说明
baseURLhttps://1a1api.top/v1
API 密钥保存到 OPENAI_API_KEY 环境变量,不要写进源码。
模型 ID设置 OPENAI_MODEL,把 YOUR_MODEL_ID 换成当前密钥可用、支持所选接口的模型。
接口根地址不要把 /v1/responses 或 /v1/chat/completions 写进 baseURL。

仅安装所选语言的 SDK。JavaScript 使用 SDK 支持的 Node.js 版本;Python 的安装与运行要使用同一解释器。提示“找不到命令”时先安装运行环境,要求见 JavaScript SDK与Python SDK。

推荐 · Responses API

3. 保存并运行 JavaScript 脚本

用编辑器把完整示例保存为 first-response.mjs,放在刚安装 SDK 的目录。使用 .mjs 可以直接运行下方 import 与顶层 await。

first-response.mjs
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY,
  baseURL: "https://1a1api.top/v1",
  maxRetries: 0,
  timeout: 60_000,
});

const model = process.env.OPENAI_MODEL;
if (!model || model === "YOUR_MODEL_ID") {
  throw new Error("请先把 OPENAI_MODEL 设置为当前密钥可用的模型 ID");
}

const response = await client.responses.create({
  model,
  input: "Reply with exactly: ok",
});

console.log(response.output_text);
在同一目录和终端运行
node first-response.mjs

成功时终端应显示 ok。随后按执行时间到控制台核对模型、状态和费用;收到 JSON 或 HTTP 200 还不能代替这一步。

推荐 · Responses API

3. 保存并运行 Python 脚本

把完整示例保存为 first_response.py。文件名不要叫 openai.py,避免遮蔽安装的 SDK。

first_response.py
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["OPENAI_API_KEY"],
    base_url="https://1a1api.top/v1",
    max_retries=0,
    timeout=60.0,
)

model = os.environ["OPENAI_MODEL"]
if model == "YOUR_MODEL_ID":
    raise ValueError("请先把 OPENAI_MODEL 设置为当前密钥可用的模型 ID")

response = client.responses.create(
    model=model,
    input="Reply with exactly: ok",
)

print(response.output_text)
macOS / Linux / WSL:运行
python3 first_response.py
Windows PowerShell:运行
py first_response.py

看到 ok 后核对调用日志。若提示找不到 openai,用运行脚本的同一解释器重新执行 -m pip install openai,不要重复发送请求解决安装问题。

4. 核对输出与调用日志

终端应显示 ok。到控制台按执行时间核对模型、状态和费用;收到 JSON 或 HTTP 200 还不能代替这一步。

日志找不到请求时先核对筛选与客户端配置,日志有失败记录时按错误原文排查。先完成一条短请求,再考虑流式输出或实际任务。

可选:Chat Completions(JavaScript 示例)
兼容旧项目

保留 Chat Completions 调用

现有代码使用 messages 和 choices 时,可以保留调用方式并配置同一 Base URL;先确认目标模型与当前分组支持该接口。

OpenAI 官方建议新项目使用 Responses,Chat Completions 仍受支持,见接口迁移说明。官方 API 的能力不等于当前 1A1API 分组已开放全部能力。

chat-completion.mjs
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY,
  baseURL: "https://1a1api.top/v1",
  maxRetries: 0,
  timeout: 60_000,
});

const model = process.env.OPENAI_MODEL;
if (!model || model === "YOUR_MODEL_ID") {
  throw new Error("请先把 OPENAI_MODEL 设置为当前密钥可用的模型 ID");
}

const response = await client.chat.completions.create({
  model,
  messages: [{ role: "user", content: "Reply with exactly: ok" }],
});

console.log(response.choices[0]?.message?.content);

保存为 chat-completion.mjs,在已设置变量的终端运行 node chat-completion.mjs,再核对回复和日志。

可选:逐段读取 Responses 输出
可选 · 流式输出

逐段读取 Responses 输出

先跑通上方非流式示例。需要流式输出时,使用下面完整脚本;流式返回的是事件序列,不能继续直接打印 response.output_text。两个示例任选一个执行。

stream-response.mjs
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY,
  baseURL: "https://1a1api.top/v1",
  maxRetries: 0,
  timeout: 60_000,
});
const model = process.env.OPENAI_MODEL;
if (!model || model === "YOUR_MODEL_ID") {
  throw new Error("请先把 OPENAI_MODEL 设置为当前密钥可用的模型 ID");
}

const stream = await client.responses.create({
  model,
  input: "Reply with exactly: ok",
  stream: true,
});
for await (const event of stream) {
  if (event.type === "response.output_text.delta") {
    process.stdout.write(event.delta);
  }
}
process.stdout.write("\n");

保存后运行 node stream-response.mjs。输出应逐段出现,随后核对对应日志。

stream_response.py
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["OPENAI_API_KEY"],
    base_url="https://1a1api.top/v1",
    max_retries=0,
    timeout=60.0,
)
model = os.environ["OPENAI_MODEL"]
if model == "YOUR_MODEL_ID":
    raise ValueError("请先把 OPENAI_MODEL 设置为当前密钥可用的模型 ID")

with client.responses.stream(
    model=model,
    input="Reply with exactly: ok",
) as stream:
    for event in stream:
        if event.type == "response.output_text.delta":
            print(event.delta, end="", flush=True)
print()

macOS / Linux / WSL 运行 python3 stream_response.py;Windows PowerShell 运行 py stream_response.py。连接中断或已收到部分输出时先保存结果和错误状态,不自动重放整个任务。流式输出不能保证解决首次输出前的超时。

常见错法

请求失败时检查

404 /v1/v1baseURL 被重复加了 /v1,或把完整接口路径填到了 Base URL。
401 UnauthorizedSDK 未读取到 API 密钥、密钥复制不完整,或自定义 HTTP 客户端没有发送 Authorization: Bearer ... 请求头。使用官方 SDK 时,请先确认环境变量已经生效。
429先区分临时限流和额度限制,见 429 排查。SDK 示例关闭自动重试;生产重试需另外设置次数、总时限和停止条件。
522 / 524522 先查源站连接;524 再考虑拆分任务或完整流式调用。见 两类超时的处理,不要只添加 stream: true 后沿用非流式读取代码。
自定义 HTTP 请求只有自己拼 HTTP 请求时,才需要手动检查 Bearer 请求头;官方 SDK 会从配置或环境变量组装认证信息。