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 и сохраните его в переменной окружения:

bash
npm install ai @ai-sdk/openai-compatible zod
export TEAMOROUTER_API_KEY=sk-teamo-...

Создайте провайдер один раз и используйте его везде:

ts
// 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 моделей:

Доступные ID моделейМоделей: 37

OpenAIGPT9

  • gpt-6.1-sol
  • gpt-6-astra
  • gpt-6-sol
  • gpt-6-luna
  • gpt-5.6-sol
  • gpt-5.6-terra
  • gpt-5.6-luna
  • gpt-5.5
  • gpt-5.4

ClaudeClaude12

  • claude-opus-5-5
  • claude-sonnet-5-5
  • claude-haiku-5-5
  • claude-fable-5-1
  • claude-opus-5
  • claude-fable-5
  • claude-sonnet-5
  • claude-opus-4-8
  • claude-opus-4-7
  • claude-opus-4-6
  • claude-sonnet-4-6
  • claude-haiku-4-5

GeminiGemini5

  • gemini-3.8-flash
  • gemini-3.7-flash
  • gemini-3.6-flash
  • gemini-3.5-flash-lite
  • gemini-3.1-pro-preview

DeepSeekDeepSeek6

  • deepseek-flash
  • deepseek-flash-free
  • deepseek-v4-flash-vision-exp
  • deepseek-v4-pro
  • deepseek-v4-flash
  • deepseek-v4-flash-free

ZhipuGLM4

  • glm-5.3-flash
  • glm-5.3-flash-free
  • glm-5.3
  • glm-5.2

GrokGrok1

  • grok-4.6

2. generateText и streamText

ts
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. Вызов инструментов

ts
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.

bash
npm install @ai-sdk/anthropic
ts
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.

Готовы? Три шага, чтобы начатьВойдите в консоль · пополните баланс · создайте API Key
TelegramВопросы по подключению, оплате или маршрутизации? Мы в Telegram.