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" |
401 | apiKey 是否为完整 Bita API 密钥 |
404 | baseURL 是否包含且只包含一次 /v1 |
| 模型不存在 | 模型 ID、密钥分组和端点类型是否匹配 |
| 流式代码没有输出 | 是否设置 stream: true,是否正确使用 for await...of |
下一步:Anthropic SDK。