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, который держит ключ.
// 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 в боте
});