非流式

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);
}

streamEventStream,解析 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 格式的 toolstool_choice,与 Chat Completions 相同。

Node 多轮辅助

// 仅 @routerbrain/sdk/node — 勿在浏览器打包中引用
const messages = await client.chat.messages.fromFile({
  model: "YOUR_MODEL_ID",
  path: "./doc.pdf",
  userText: "总结本文",
});

SDK 限制

相关

流式响应 · 错误响应