跳到主要内容

Node.js OpenAI SDK

OpenAI Node.js SDK 适合 Node.js 服务、命令行程序和使用 TypeScript 的后端项目。

安装

在项目目录中执行:

npm install openai

下面的示例使用 ES Modules。可以保存为 app.mjs,然后运行:

node app.mjs

创建客户端

import OpenAI from "openai";

const client = new OpenAI({
apiKey: "YOUR_BITA_API_KEY",
baseURL: "https://www.bita-api.com/v1",
});

注意 Node.js SDK 使用驼峰字段 baseURL,并且地址需要包含 /v1

查询模型

const models = await client.models.list();

for (const model of models.data) {
console.log(model.id);
}

Chat Completions

const completion = await client.chat.completions.create({
model: "YOUR_MODEL_ID",
messages: [
{
role: "system",
content: "你是一个简洁、准确的助手。",
},
{
role: "user",
content: "请用一句话介绍 Bita API。",
},
],
});

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

Responses

Responses 只适用于模型广场中支持 Response 端点的模型。

const response = await client.responses.create({
model: "YOUR_MODEL_ID",
instructions: "使用简体中文简洁回答。",
input: "请用一句话介绍 Bita API。",
});

console.log(response.output_text);

Chat Completions 流式输出

const stream = await client.chat.completions.create({
model: "YOUR_MODEL_ID",
messages: [
{
role: "user",
content: "请介绍流式响应的作用。",
},
],
stream: true,
});

for await (const chunk of stream) {
const text = chunk.choices[0]?.delta?.content;
if (text) {
process.stdout.write(text);
}
}

process.stdout.write("\n");

Responses 流式输出

const stream = await client.responses.create({
model: "YOUR_MODEL_ID",
input: "请介绍流式响应的作用。",
stream: true,
});

for await (const event of stream) {
if (event.type === "response.output_text.delta") {
process.stdout.write(event.delta);
}
}

process.stdout.write("\n");

错误处理

import OpenAI from "openai";

try {
const response = await client.chat.completions.create({
model: "YOUR_MODEL_ID",
messages: [{ role: "user", content: "你好。" }],
});

console.log(response.choices[0].message.content);
} catch (error) {
if (error instanceof OpenAI.APIError) {
console.error("HTTP 状态:", error.status);
console.error("错误信息:", error.message);
} else {
throw error;
}
}

常见问题

现象建议检查
Cannot use import statement outside a module使用 .mjs 文件,或在 package.json 中设置 "type": "module"
401apiKey 是否为完整 Bita API 密钥
404baseURL 是否包含且只包含一次 /v1
模型不存在模型 ID、密钥分组和端点类型是否匹配
流式代码没有输出是否设置 stream: true,是否正确使用 for await...of

下一步:Anthropic SDK