Розділи бази знань ▾

Навігація

▸ Почніть тут За ролями

Категорії

Інструменти 32
Глосарій 12

Інструменти

Vercel AI SDK + Gonka AI — AI-додатки на TypeScript за копійки

Vercel AI SDK — найпопулярніший SDK для створення AI-застосунків на TypeScript та JavaScript. Єдиний API generateText та streamText, потокова видача в UI, нативний tool calling, готові хелпери для Next.js App Router — все, що потрібно для чат-ботів, агентів і RAG-пайплайнів у вебі.

Проблема та сама, що і у будь-якого LLM-застосунку — ціна провайдера. Стрімінговий чат-інтерфейс відправляє історію діалогу на кожне повідомлення, агент ганяє контекст через десятки кроків. При цінах Anthropic ($3-15/1M) та OpenAI ($2.5-10/1M) навіть скромний pet-проєкт на проді перетворюється на рахунок на сотні доларів на місяць.

JoinGonka Gateway — OpenAI-сумісний ендпоінт поверх децентралізованої мережі Gonka. Vercel AI SDK підключається до нього як до будь-якого OpenAI-сумісного провайдера — без форку, без своїх адаптерів. Та сама модель Kimi K2.6, той самий streamText, але за $0.003/1M токенів на вході — в сотні-тисячі разів дешевше.

Крок 1: Отримати ключ та підключити провайдер

API-ключ JoinGonka: зареєструйтеся на gate.joingonka.ai/register — на старті даємо 10M безкоштовних токенів. У Dashboard створіть ключ із префіксом jg-.

Встановлення пакетів. Для кастомного OpenAI-сумісного ендпоінту Vercel AI SDK рекомендує провайдер @ai-sdk/openai-compatible:

npm install ai @ai-sdk/openai-compatible

Мінімальне підключення — створюємо інстанс провайдера через createOpenAICompatible і викликаємо generateText:

import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
import { generateText } from 'ai';

const gonka = createOpenAICompatible({
  name: 'gonka',
  baseURL: 'https://gate.joingonka.ai/v1',
  apiKey: process.env.GONKA_API_KEY, // jg-ваш-ключ
});

const { text } = await generateText({
  model: gonka('MiniMaxAI/MiniMax-M2.7'),
  prompt: 'Поясни, що таке децентралізована мережа інференсу',
});

console.log(text);

Параметр apiKey автоматично додає заголовок Authorization: Bearer jg-ваш-ключ — окреме налаштування не потрібне. Зберігайте ключ у змінній оточення GONKA_API_KEY (наприклад, у .env.local), а не в коді.

Альтернатива — пакет @ai-sdk/openai з фабрикою createOpenAI({ baseURL, apiKey }). Обидва способи робочі; для ендпоінтів, що не належать OpenAI, документація AI SDK радить саме @ai-sdk/openai-compatible — він не тягне зайвих OpenAI-специфічних припущень.

Крок 2: Стрімінг та Next.js route handler

Головна фішка Vercel AI SDK — потокова віддача відповіді. Функція streamText починає стрімити токени одразу, а хелпер toUIMessageStreamResponse() віддає готовий потік прямо з route handler у Next.js App Router.

Серверний обробник app/api/chat/route.ts:

import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
import { streamText, convertToModelMessages, type UIMessage } from 'ai';

const gonka = createOpenAICompatible({
  name: 'gonka',
  baseURL: 'https://gate.joingonka.ai/v1',
  apiKey: process.env.GONKA_API_KEY,
});

// дозволяємо стрімити до 30 секунд
export const maxDuration = 30;

export async function POST(req: Request) {
  const { messages }: { messages: UIMessage[] } = await req.json();

  const result = streamText({
    model: gonka('MiniMaxAI/MiniMax-M2.7'),
    system: 'Ти корисний асистент. Відповідай стисло та по суті.',
    messages: convertToModelMessages(messages),
    maxOutputTokens: 8192, // ліміт виводу через Gateway
  });

  return result.toUIMessageStreamResponse();
}

На клієнті підключіть хук useChat із @ai-sdk/react — він сам звертається до /api/chat і рендерить потік повідомлень. Бекенд при цьому ходить у Gonka, а не в OpenAI.

Скрипт без UI (Node, async-ітератор по потоку):

import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
import { streamText } from 'ai';

const gonka = createOpenAICompatible({
  name: 'gonka',
  baseURL: 'https://gate.joingonka.ai/v1',
  apiKey: process.env.GONKA_API_KEY,
});

const result = streamText({
  model: gonka('MiniMaxAI/MiniMax-M2.7'),
  prompt: 'Напиши хайку про розподілені обчислення',
});

for await (const chunk of result.textStream) {
  process.stdout.write(chunk);
}

Параметри моделей. Через Gateway доступні дві моделі, контекст у обох 200K токенів; ліміт відповіді (maxOutputTokens) — до 8192 у кожної:

Якщо maxOutputTokens не задано, для non-stream запиту Gateway за замовчуванням поверне до 1500 токенів — для стрімінгових чатів краще вказувати значення явно.

Порівняння вартості

Vercel AI SDK зазвичай стоїть за інтерактивним інтерфейсом — чат, агент, асистент у застосунку. Кожне повідомлення тягне за собою історію діалогу, кожен крок агента — контекст інструментів. Тому реальна вартість рахується не за один запит, а за навантаженням проду. Порівняємо типові сценарії:

СценарійТокенівAnthropic / OpenAIJoinGonka Gonka
Одне повідомлення в чаті~3K$0.01 — $0.05$0.000014
Діалог з 20 реплік~150K$0.50 — $2.25$0.00072
RAG-відповідь (пошук + генерація)~5K$0.015 — $0.05$0.000024
Крок агента з tool calling~10K$0.03 — $0.10$0.000048
10 000 запитів на день (прод)~50M$150 — $500$0.24

Ціна JoinGonka — близько $0.003 за 1M токенів на вході, вихід приблизно в три рази дорожчий. Для застосунку з тисячами запитів на день це різниця між рахунком на сотні доларів і рахунком на центи. Безкоштовних 10M токенів вистачає, щоб повністю прогнати та відлагодити проєкт до виходу в прод.

Tool calling та агенти

Vercel AI SDK описує інструменти декларативно через об'єкт tools та схему zod. Kimi K2.6 підтримує нативний function calling, тому AI SDK отримує структуровані tool_calls без парсингу текстових відповідей. Параметр stopWhen: stepCountIs(n) дозволяє кілька кроків поспіль — модель викликає інструмент, отримує результат і продовжує.

import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
import { generateText, tool, stepCountIs } from 'ai';
import { z } from 'zod';

const gonka = createOpenAICompatible({
  name: 'gonka',
  baseURL: 'https://gate.joingonka.ai/v1',
  apiKey: process.env.GONKA_API_KEY,
});

const { text } = await generateText({
  model: gonka('MiniMaxAI/MiniMax-M2.7'),
  stopWhen: stepCountIs(5),
  tools: {
    weather: tool({
      description: 'Дізнатися погоду в місті',
      inputSchema: z.object({ city: z.string() }),
      execute: async ({ city }) => ({ city, tempC: 17 }),
    }),
  },
  prompt: 'Яка погода в Москві? Відповіж одним реченням.',
});

console.log(text);

Модель викликає інструмент weather, отримує результат і формує фінальну відповідь. Весь цикл коштує близько $0.000048 через Gonka проти $0.03-0.10 у Anthropic або OpenAI. Для агентських додатків, де кожен запит користувача розгортається в 5-10 кроків, економія на продакшені вимірюється тисячами доларів на місяць.

Якщо будуєте AI-додаток на Python, подивіться гайд по LangChain — там той самий підхід через OpenAI-сумісний клас.

Vercel AI SDK + Gonka = production-ready AI-додатки на TypeScript за копійки. createOpenAICompatible підключає Gateway без форків, generateText і streamText працюють як зазвичай, нативний tool calling і Next.js route handlers — все за $0.003/1M токенів замість $2.5-15 у OpenAI і Anthropic.

Бажаєте дізнатися більше?

Вивчіть інші розділи або почніть заробляти GNK прямо зараз.

Отримати безкоштовні 10M токенів →