Перейти к содержанию

Node.js / TypeScript#

Через официальный openai npm-пакет.

Установка#

```bash npm install openai

или#

pnpm add openai ```

Базовый клиент#

```typescript import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://api.ml-router.su/v1", apiKey: process.env.ORB_API_KEY!, }); ```

Chat completion#

```typescript const resp = await client.chat.completions.create({ model: "openai/gpt-4o-mini", messages: [ { role: "system", content: "You're concise." }, { role: "user", content: "What is FastAPI?" }, ], temperature: 0.3, max_tokens: 200, });

console.log(resp.choices[0].message.content); console.log(cost: $${resp.usage?.cost}); ```

Streaming#

```typescript const stream = await client.chat.completions.create({ model: "openai/gpt-4o-mini", messages: [{ role: "user", content: "Story please" }], stream: true, });

for await (const chunk of stream) { const delta = chunk.choices[0]?.delta?.content; if (delta) process.stdout.write(delta); if (chunk.usage) { console.log(\ncost: $${chunk.usage.cost}); } } ```

Vercel AI SDK#

ai от Vercel также работает через provider-специфичный adapter. Используй @ai-sdk/openai-compatible:

bash npm install ai @ai-sdk/openai-compatible

```typescript import { createOpenAICompatible } from "@ai-sdk/openai-compatible"; import { generateText } from "ai";

const orb = createOpenAICompatible({ name: "orb", baseURL: "https://api.ml-router.su/v1", apiKey: process.env.ORB_API_KEY!, });

const { text, usage } = await generateText({ model: orb("openai/gpt-4o-mini"), prompt: "Привет", });

console.log(text); ```

Browser / Edge runtime#

В браузере не используй SDK с настоящим ключом — он утечёт в DevTools. Сделай proxy на своём backend, который держит ключ.

next.js api route — пример proxy
// app/api/chat/route.ts
import OpenAI from "openai";

export async function POST(req: Request) {
  const client = new OpenAI({
    baseURL: "https://api.ml-router.su/v1",
    apiKey: process.env.ORB_API_KEY!,  // server-only
  });
  const body = await req.json();
  const resp = await client.chat.completions.create({
    ...body,
    stream: true,
  });
  return new Response(resp.toReadableStream());
}

Тестирование без расходов#

typescript const testClient = new OpenAI({ baseURL: "https://api.ml-router.su/v1", apiKey: "orb_test_…", // /new_test_token в боте });