Sekcje bazy wiedzy ▾

Nawigacja

▸ Zacznij tutaj Według ról

Kategorie

Narzędzia 37
Słownik 12

Narzędzia

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

Vercel AI SDK to najpopularniejszy SDK do tworzenia 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, co potrzebne do chatbotów, agentów i RAG-pipeline'ów w sieci.

Problem jest taki sam jak w każdej aplikacji LLM — cena dostawcy. Streamingowy interfejs czatu wysyła historię dialogu przy każdej wiadomości, agent przepuszcza 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 na bazie zdecentralizowanej sieci Gonka. Vercel AI SDK łączy się z nim jak z każdym innym dostawcą kompatybilnym z OpenAI — bez forka, bez własnych adapterów. Te same otwarte modele, co u komercyjnych hostów — MiniMax M2.7, DeepSeek V4 Flash i GLM-5.3 Flash — ten sam streamText, ale za $0.0069/1M tokenów na wejściu — dziesiątki razy taniej.

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

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

Instalacja pakietów. Dla niestandardowego endpointu kompatybilnego z OpenAI, Vercel AI SDK zaleca dostawcę @ai-sdk/openai-compatible:

npm install ai @ai-sdk/openai-compatible

Minimalne połączenie — tworzymy instancję dostawcy przez 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-twój-klucz
});

const { text } = await generateText({
  model: gonka('MiniMaxAI/MiniMax-M2.7'),
  prompt: 'Wyjaśnij, czym jest zdecentralizowana sieć inferencji',
});

console.log(text);

Parametr apiKey automatycznie dodaje nagłówek Authorization: Bearer jg-twój-klucz — dodatkowa konfiguracja nie jest wymagana. Przechowuj klucz w zmiennej środowiskowej GONKA_API_KEY (na przykład w .env.local), a nie w kodzie.

Alternatywa — pakiet @ai-sdk/openai z fabryką createOpenAI({ baseURL, apiKey }). Oba sposoby działają; dla endpointów, które nie należą do OpenAI, dokumentacja AI SDK zaleca właśnie @ai-sdk/openai-compatible — nie narzuca on zbędnych założeń specyficznych dla OpenAI.

Krok 2: Streaming i handler trasy Next.js

Główną zaletą Vercel AI SDK jest strumieniowanie odpowiedzi. Funkcja streamText zaczyna strumieniować tokeny 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 krótko i na temat.',
    messages: convertToModelMessages(messages),
    maxOutputTokens: 8192, // limit wyjściowy przez Gateway
  });

  return result.toUIMessageStreamResponse();
}

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

Skrypt bez UI (Node, async-iterator po strumieniu):

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ą trzy modele: kontekst 200K tokenów dla MiniMax M2.7, 380K dla DeepSeek V4 Flash i 390K dla GLM-5.3 Flash; limit odpowiedzi (maxOutputTokens) — 8192 dla MiniMax M2.7 i GLM-5.3 Flash, 32768 dla DeepSeek V4 Flash:

  • MiniMaxAI/MiniMax-M2.7 — domyślny (MiniMax M2.7);
  • deepseek-ai/DeepSeek-V4-Flash-0731 (DeepSeek V4 Flash, kontekst 380K);
  • zai-org/GLM-5.3-Flash (GLM-5.3 Flash, model reasoning — rozważa przed udzieleniem odpowiedzi).

Jeśli maxOutputTokens nie jest ustawione, dla zapytania non-stream Gateway domyślnie zwróci do 1500 tokenów — dla czatów strumieniowych lepiej podawać wartość jawnie.

Porównanie kosztów

Vercel AI SDK zazwyczaj stoi za interaktywnym interfejsem — czat, agent, asystent w aplikacji. Każda wiadomość ciągnie za sobą historię dialogu, każdy krok agenta — kontekst narzędzi. Dlatego rzeczywisty koszt jest liczony nie od pojedynczego zapytania, a od obciążenia produkcyjnego. Porównajmy typowe scenariusze:

ScenariuszTokenówAnthropic / OpenAIJoinGonka Gonka
Jedna wiadomość na czacie~3K$0.01 — $0.05$0.000028
Dialog z 20 replikami~150K$0.50 — $2.25$0.0014
RAG-odpowiedź (wyszukiwanie + generowanie)~5K$0.015 — $0.05$0.000048
Krok agenta z tool calling~10K$0.03 — $0.10$0.000096
10 000 zapytań dziennie (prod)~50M$150 — $500$0.48

Cena JoinGonka — około $0.0069 za 1M tokenów wejściowych, wyjściowe są mniej więcej 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 3M tokenów wystarcza, aby wykonać pierwsze zapytania projektu.

Tool calling i agenci

Vercel AI SDK opisuje narzędzia deklaratywnie przez obiekt tools i schemat zod. Modele sieci wspierają natywny function calling, więc AI SDK otrzymuje ustrukturyzowane tool_calls bez parsowania odpowiedzi tekstowych. Parametr stopWhen: stepCountIs(n) pozwala na kilka kroków pod rząd — model wywołuje narzędzie, otrzymuje wynik i kontynuuje.

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, otrzymuje wynik i tworzy finalną odpowiedź. Cały cykl kosztuje około $0.000048 przez Gonka wobec $0.03-0.10 w Anthropic lub OpenAI. W przypadku aplikacji agentskich, gdzie każde zapytanie użytkownika rozbija się na 5-10 kroków, oszczędności na produkcji mierzy się w tysiącach dolarów miesięcznie.

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

Vercel AI SDK + Gonka = aplikacje AI gotowe do produkcji 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.0069/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.

Odbierz darmowe tokeny →