TeamoRouter в Vercel AI SDK

Vercel AI SDK (пакет ai) подключается к TeamoRouter через OpenAI-совместимый провайдер: укажите base URL TeamoRouter, передайте ваш API-ключ TeamoRouter и используйте ID моделей из нашего каталога. Код с generateText, streamText и инструментами менять не нужно.

У нового аккаунта баланс $0 — пополните его до первого запроса. Пополнить можно от $5. Если запрос возвращает 402 (400 для формата OpenAI) с текстом «wallet balance is insufficient», значит, баланс пуст, а base URL и ключ настроены правильно. Пополните баланс и повторите запрос.

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.cn/v1',
  apiKey: process.env.TEAMOROUTER_API_KEY,
  includeUsage: true, // возвращать расход токенов и при стриминге
});
Параметр Значение
Base URL https://api.teamorouter.cn/v1
API-ключ sk-teamo-..., передаётся как Authorization: Bearer
ID модели ID из нашего каталога без префикса vendor/, например deepseek-flash

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

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

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

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

Возможные ошибки

Код Что значит Что делать
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.