TeamoRouter в Vercel AI SDK
Vercel AI SDK (пакет ai) подключается к TeamoRouter через OpenAI-совместимый провайдер: укажите base URL TeamoRouter, передайте ваш API-ключ TeamoRouter и используйте ID моделей из нашего каталога. Код с generateText, streamText и инструментами менять не нужно. Модели Claude подключаются через нативный провайдер Anthropic (раздел 4).
У нового аккаунта баланс $0 — пополните его до первого запроса. Пополнить можно от $5. Если запрос возвращает 402 (400 для формата OpenAI) с текстом «wallet balance is insufficient», значит, баланс пуст, а base URL и ключ настроены правильно. Пополните баланс и повторите запрос.
Нет зарубежной карты? Если в окне пополнения есть кнопка «Оплатить криптовалютой», можно заплатить USDT, USDC или ETH переводом с биржи или из любого кошелька, без расширения. Подробнее — Как оплатить Claude API в USDT.
1. Установка и настройка
Создайте API-ключ в панели TeamoRouter и сохраните его в переменной окружения:
npm install ai @ai-sdk/openai-compatible zod
export TEAMOROUTER_API_KEY=sk-teamo-...
Создайте провайдер один раз и используйте его везде:
// teamorouter.ts
import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
export const teamorouter = createOpenAICompatible({
name: 'teamorouter',
baseURL: 'https://api.teamorouter.com/v1',
apiKey: process.env.TEAMOROUTER_API_KEY,
includeUsage: true, // возвращать расход токенов и при стриминге
});
| Параметр | Значение |
|---|---|
| Base URL | https://api.teamorouter.com/v1 |
| API-ключ | sk-teamo-..., передаётся как Authorization: Bearer |
| ID модели | ID из нашего каталога без префикса vendor/, например deepseek-flash |
Доступные ID моделей:
GPT9
gpt-6.1-solgpt-6-astragpt-6-solgpt-6-lunagpt-5.6-solgpt-5.6-terragpt-5.6-lunagpt-5.5gpt-5.4
Claude12
claude-opus-5-5claude-sonnet-5-5claude-haiku-5-5claude-fable-5-1claude-opus-5claude-fable-5claude-sonnet-5claude-opus-4-8claude-opus-4-7claude-opus-4-6claude-sonnet-4-6claude-haiku-4-5
Gemini5
gemini-3.8-flashgemini-3.7-flashgemini-3.6-flashgemini-3.5-flash-litegemini-3.1-pro-preview
DeepSeek6
deepseek-flashdeepseek-flash-freedeepseek-v4-flash-vision-expdeepseek-v4-prodeepseek-v4-flashdeepseek-v4-flash-free
GLM4
glm-5.3-flashglm-5.3-flash-freeglm-5.3glm-5.2
Grok1
grok-4.6
2. generateText и streamText
import { generateText, streamText } from 'ai';
import { teamorouter } from './teamorouter';
const { text, usage } = await generateText({
model: teamorouter('deepseek-flash'),
prompt: 'Объясни в одном предложении, что делает API-шлюз.',
});
console.log(text, usage);
const result = streamText({
model: teamorouter('deepseek-flash'),
prompt: 'Напиши хайку о задержках в сети.',
});
for await (const chunk of result.textStream) {
process.stdout.write(chunk);
}
3. Вызов инструментов
import { generateText, tool, stepCountIs } from 'ai';
import { z } from 'zod';
import { teamorouter } from './teamorouter';
const { text } = await generateText({
model: teamorouter('deepseek-flash'),
tools: {
getWeather: tool({
description: 'Узнать текущую температуру в городе',
inputSchema: z.object({ city: z.string() }),
execute: async ({ city }) => ({ city, temperatureC: 22 }),
}),
},
stopWhen: stepCountIs(3), // модель сначала вызывает инструмент, потом отвечает
prompt: 'Какая сейчас погода в Шанхае?',
});
console.log(text);
4. Claude: провайдер Anthropic
Claude работает по нативному протоколу Anthropic. Используйте @ai-sdk/anthropic с base URL TeamoRouter: при вызове Claude через OpenAI-совместимый провайдер можно потерять кэширование промптов и thinking.
npm install @ai-sdk/anthropic
import { createAnthropic } from '@ai-sdk/anthropic';
import { generateText } from 'ai';
const anthropic = createAnthropic({
baseURL: 'https://api.teamorouter.com/v1', // запросы идут на /v1/messages
apiKey: process.env.TEAMOROUTER_API_KEY, // передаётся как x-api-key
});
const { text } = await generateText({
model: anthropic('claude-sonnet-5-5'),
prompt: 'Найди ошибки в этой функции: ...',
});
streamText, инструменты и специфичные для Anthropic providerOptions (кэширование промптов, thinking) работают так же, как с официальным API Anthropic. Используйте ID вроде claude-opus-5-5, claude-sonnet-5-5 или claude-haiku-5-5.
Модели GPT можно и дальше вызывать через OpenAI-совместимый провайдер выше.
Возможные ошибки
| Код | Что значит | Что делать |
|---|---|---|
| 401 | Ключ не передан или неверный | Проверьте TEAMOROUTER_API_KEY: ключ должен начинаться с sk-teamo- |
| 402 (400 для формата OpenAI) с «wallet balance is insufficient» | Баланс $0 | Пополните баланс и повторите |
400 model_not_available |
ID модели нет в каталоге или у него префикс vendor/ |
Возьмите ID из списка выше без префикса |
Сырые HTTP-эндпоинты, стриминг и кэширование описаны в руководстве по API.