Node.js SDK 接入
使用 OpenAI 官方 Node.js SDK 时,只需要把 apiKey、baseURL 和 model 换成 CoreRouter 信息。
安装
bash
npm install openai
也可以使用 Bun:
bash
bun add openai
如果要直接读取 .env 文件,再安装 dotenv:
bash
npm install dotenv
或:
bash
bun add dotenv
基础使用
typescript
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.COREROUTER_API_KEY,
baseURL: "https://api.corerouter.tech/v1",
});
const completion = await client.chat.completions.create({
model: "claude-sonnet-4-5",
messages: [
{ role: "user", content: "你好,请介绍一下你自己。" },
],
});
console.log(completion.choices[0].message.content);
流式输出
typescript
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.COREROUTER_API_KEY,
baseURL: "https://api.corerouter.tech/v1",
});
const stream = await client.chat.completions.create({
model: "claude-sonnet-4-5",
messages: [
{ role: "user", content: "用三句话介绍 CoreRouter。" },
],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}
多轮对话
typescript
import type { ChatCompletionMessageParam } from "openai/resources/chat/completions";
const messages: ChatCompletionMessageParam[] = [
{ role: "user", content: "你好" },
];
let completion = await client.chat.completions.create({
model: "claude-sonnet-4-5",
messages,
});
messages.push({
role: "assistant",
content: completion.choices[0].message.content ?? "",
});
messages.push({ role: "user", content: "请写一个 TypeScript hello 函数。" });
completion = await client.chat.completions.create({
model: "claude-sonnet-4-5",
messages,
});
console.log(completion.choices[0].message.content);
工具调用
typescript
const completion = await client.chat.completions.create({
model: "claude-sonnet-4-5",
messages: [{ role: "user", content: "北京天气怎么样?" }],
tools: [
{
type: "function",
function: {
name: "get_weather",
description: "获取指定城市的天气信息",
parameters: {
type: "object",
properties: {
city: { type: "string", description: "城市名称" },
},
required: ["city"],
},
},
},
],
});
const toolCall = completion.choices[0].message.tool_calls?.[0];
if (toolCall) {
console.log(toolCall.function.name);
console.log(toolCall.function.arguments);
}
Responses API
这段示例要求 Model ID 支持 Responses。普通聊天模型不一定可用。 如果 client.responses 不存在,请先升级 openai 包,或者直接按 Responses API 的 curl 示例调用。
typescript
const response = await client.responses.create({
model: "responses-model-id",
input: "请用三句话介绍 CoreRouter。",
});
console.log(response.output_text);
Embeddings
typescript
const result = await client.embeddings.create({
model: "embedding-model-id",
input: ["第一段文本", "第二段文本"],
});
console.log(result.data[0].embedding.length);
使用 .env
bash
COREROUTER_API_KEY=sk-xxxxxxxxxxxxxxxx
COREROUTER_BASE_URL=https://api.corerouter.tech/v1
COREROUTER_MODEL=claude-sonnet-4-5
typescript
import "dotenv/config";
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.COREROUTER_API_KEY,
baseURL: process.env.COREROUTER_BASE_URL,
});
const completion = await client.chat.completions.create({
model: process.env.COREROUTER_MODEL ?? "claude-sonnet-4-5",
messages: [{ role: "user", content: "Hello" }],
});
console.log(completion.choices[0].message.content);
请把 .env 加入 .gitignore,不要把 API Key 提交到仓库。
常见问题
COREROUTER_API_KEY为空:确认从同一个终端启动程序,或部署平台已配置环境变量。- 返回
model not found:确认model是控制台中的 Model ID。 - 普通对话可用但工具调用失败:换用支持 Tool Calling 的模型。
CoreRouter API 文档