Sekcje bazy wiedzy ▾

Nawigacja

▸ Zacznij tutaj Według ról

Kategorie

Narzędzia 32
Słownik 12

Narzędzia

Vercel AI SDK + Gonka AI — aplikacje AI w TypeScript za grosze

Vercel AI SDK to najpopularniejszy SDK do budowania aplikacji AI w TypeScript i JavaScript. Jednolite API generateText i streamText, streaming do UI, natywny tool calling, gotowe pomocniki dla Next.js App Router — wszystko, czego potrzebujesz do chatbotów, agentów i RAG-pipeline'ów w sieci.

Problem jest ten sam, co w każdej aplikacji LLM — cena dostawcy. Streamingowy interfejs czatu wysyła historię dialogu przy każdej wiadomości, agent przetwarza kontekst przez dziesiątki kroków. Przy cenach Anthropic ($3-15/1M) i OpenAI ($2.5-10/1M) nawet skromny pet-projekt na produkcji zamienia się w rachunek na setki dolarów miesięcznie.

JoinGonka Gateway — kompatybilny z OpenAI endpoint zbudowany na zdecentralizowanej sieci Gonka. Vercel AI SDK łączy się z nim jak z każdym dostawcą kompatybilnym z OpenAI — bez forkowania, bez własnych adapterów. Ten sam model Kimi K2.6, ten sam streamText, ale za $0.003/1M tokenów wejściowych — setki-tysiące razy taniej.

Krok 1: Uzyskaj klucz i podłącz dostawcę

Klucz API JoinGonka: zarejestruj się na gate.joingonka.ai/register — na start dajemy 10M darmowych tokenów. W Dashboard utwórz klucz z prefiksem jg-.

Instalacja pakietów. Dla niestandardowego punktu końcowego zgodnego z OpenAI, Vercel AI SDK zaleca dostawcę @ai-sdk/openai-compatible:

npm install ai @ai-sdk/openai-compatible

Minimalne połączenie — tworzymy instancję dostawcy za pomocą createOpenAICompatible i wywołujemy 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);

Parametr apiKey automatycznie dodaje nagłówek Authorization: Bearer jg-ваш-ключ — osobna konfiguracja nie jest wymagana. Przechowuj klucz w zmiennej środowiskowej GONKA_API_KEY (np. w .env.local), a nie w kodzie.

Alternatywa — pakiet @ai-sdk/openai z fabryką createOpenAI({ baseURL, apiKey }). Obie metody działają; dla punktów końcowych innych niż OpenAI, dokumentacja AI SDK zaleca właśnie @ai-sdk/openai-compatible — nie wprowadza on niepotrzebnych założeń specyficznych dla OpenAI.

Krok 2: Streaming i handler trasy Next.js

Główną zaletą Vercel AI SDK jest strumieniowa obsługa odpowiedzi. Funkcja streamText rozpoczyna przesyłanie tokenów natychmiast, a helper toUIMessageStreamResponse() przekazuje gotowy strumień bezpośrednio z route handler w Next.js App Router.

Serwerowy handler 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,
});

// zezwalamy na strumieniowanie do 30 sekund
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: 'Jesteś pomocnym asystentem. Odpowiadaj zwięźle i na temat.',
    messages: convertToModelMessages(messages),
    maxOutputTokens: 8192, // limit wyjściowy przez Gateway
  });

  return result.toUIMessageStreamResponse();
}

Po stronie klienta zaimportuj hook useChat z @ai-sdk/react — automatycznie łączy się z /api/chat i renderuje strumień wiadomości. Backend komunikuje się przy tym z Gonka, a nie z OpenAI.

Skrypt bez UI (Node, async-iterator przez strumień):

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: 'Napisz haiku o obliczeniach rozproszonych',
});

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

Parametry modeli. Przez Gateway dostępne są dwa modele, oba mają kontekst 200K tokenów; limit odpowiedzi (maxOutputTokens) wynosi do 8192 dla każdego z nich:

Jeśli maxOutputTokens nie jest zdefiniowany, dla żądania non-stream Gateway domyślnie zwróci do 1500 tokenów — w przypadku czatów strumieniowych lepiej określić tę wartość jawnie.

Porównanie kosztów

Vercel AI SDK zazwyczaj znajduje się za interaktywnym interfejsem — czatem, agentem, asystentem w aplikacji. Każda wiadomość wywołuje historię dialogu, każdy krok agenta — kontekst narzędzi. Dlatego realny koszt liczy się nie od jednego zapytania, a od obciążenia produkcyjnego. Porównajmy typowe scenariusze:

ScenariuszTokenówAnthropic / OpenAIJoinGonka Gonka
Pojedyncza wiadomość na czacie~3K$0.01 — $0.05$0.000014
Dialog z 20 wymianami zdań~150K$0.50 — $2.25$0.00072
Odpowiedź RAG (wyszukiwanie + generowanie)~5K$0.015 — $0.05$0.000024
Krok agenta z tool calling~10K$0.03 — $0.10$0.000048
10 000 zapytań dziennie (prod)~50M$150 — $500$0.24

Cena JoinGonka — około $0.003 za 1M tokenów wejściowych, wyjściowe są około trzy razy droższe. Dla aplikacji z tysiącami zapytań dziennie to różnica między rachunkiem na setki dolarów a rachunkiem na centy. Darmowe 10M tokenów wystarcza, aby w pełni przetestować i zdebugować projekt przed wejściem na produkcję.

Tool calling i agenci

Vercel AI SDK opisuje narzędzia deklaratywnie poprzez obiekt tools oraz schemat zod. Kimi K2.6 wspiera natywny function calling, dlatego AI SDK otrzymuje ustrukturyzowane tool_calls bez konieczności parsowania odpowiedzi tekstowych. Parametr stopWhen: stepCountIs(n) pozwala na wykonanie kilku kroków z rzędu — model wywołuje narzędzie, otrzymuje wynik i kontynuuje działanie.

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: 'Sprawdź pogodę w mieście',
      inputSchema: z.object({ city: z.string() }),
      execute: async ({ city }) => ({ city, tempC: 17 }),
    }),
  },
  prompt: 'Jaka jest pogoda w Moskwie? Odpowiedz jednym zdaniem.',
});

console.log(text);

Model wywołuje narzędzie weather, uzyskuje wynik i tworzy ostateczną odpowiedź. Cały cykl kosztuje około $0.000048 przez Gonka w porównaniu do $0.03-0.10 w Anthropic lub OpenAI. Dla aplikacji agentowych, w których każde zapytanie użytkownika rozbija się na 5-10 kroków, oszczędności na środowisku produkcyjnym mierzone są w tysiącach dolarów miesięcznie.

Jeśli tworzysz aplikację AI w Pythonie, sprawdź przewodnik po LangChain — tam stosowane jest to samo podejście poprzez klasę kompatybilną z OpenAI.

Vercel AI SDK + Gonka = gotowe do produkcji aplikacje AI w TypeScript za grosze. createOpenAICompatible łączy Gateway bez forków, generateText i streamText działają jak zwykle, natywny tool calling i Next.js route handlers — wszystko za $0.003/1M tokenów zamiast $2.5-15 w OpenAI i Anthropic.

Chcesz wiedzieć więcej?

Zapoznaj się z innymi sekcjami lub zacznij zarabiać GNK już teraz.

Otrzymaj 10M darmowych tokenów →