非流式
import { RouterBrain } from "@routerbrain/sdk";
const client = new RouterBrain({
apiKey: process.env.ROUTERBRAIN_API_KEY!,
baseURL: "https://51kik.com/v1",
});
const result = await client.chat.send({
chatRequest: {
model: "YOUR_MODEL_ID",
messages: [{ role: "user", content: "你好" }],
},
});
console.log(result.choices[0]?.message?.content);
等价 curl 见 首次请求。
流式
const stream = await client.chat.send({
chatRequest: {
model: "YOUR_MODEL_ID",
stream: true,
messages: [{ role: "user", content: "写一首短诗" }],
},
});
for await (const chunk of stream) {
const delta = chunk.choices?.[0]?.delta?.content;
if (delta) process.stdout.write(delta);
}
stream 为 EventStream,解析 SSE 为 chat.completion.chunk。流中错误抛出 GatewaySseError。
PDF 插件(可选)
await client.chat.send({
chatRequest: {
model: "YOUR_MODEL_ID",
messages: [/* ... */],
plugins: {
pdf: { engine: "ocr", max_pages: 10 },
},
},
});
SDK 将 plugins.pdf 合并为请求体中的 pdf_preprocess(与 HTTP 文档一致)。
Tools
在 chatRequest 中传入 OpenAI 格式的 tools 与 tool_choice,与 Chat Completions 相同。
Node 多轮辅助
// 仅 @routerbrain/sdk/node — 勿在浏览器打包中引用
const messages = await client.chat.messages.fromFile({
model: "YOUR_MODEL_ID",
path: "./doc.pdf",
userText: "总结本文",
});
见 SDK 限制。