Sekcje bazy wiedzy ▾

Nawigacja

▸ Zacznij tutaj Według ról

Kategorie

Narzędzia 54
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.0062/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 Dashboardzie utwórz klucz z prefiksem jg-.

Instalacja pakietów. Dla własnego endpointu zgodnego z OpenAI Vercel AI SDK poleca provider @ai-sdk/openai-compatible:

npm install ai @ai-sdk/openai-compatible

Minimalne podłączenie — tworzymy instancję providera 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-your-key
});

const { text } = await generateText({
  model: gonka('MiniMaxAI/MiniMax-M2.7'),
  prompt: 'Explain what a decentralized inference network is',
});

console.log(text);

Parametr apiKey automatycznie dodaje nagłówek Authorization: Bearer jg-your-key — osobna konfiguracja nie jest potrzebna. Klucz trzymaj w zmiennej środowiskowej GONKA_API_KEY (np. w .env.local), a nie w kodzie.

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

Krok 2: Streaming i handler trasy Next.js

Największa zaleta Vercel AI SDK to strumieniowe zwracanie odpowiedzi. Funkcja streamText zaczyna strumieniować tokeny od razu, a helper toUIMessageStreamResponse() zwraca gotowy strumień prosto z route handlera w Next.js App Router.

Handler serwerowy 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,
});

// allow streaming for up to 30 seconds
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: 'You are a helpful assistant. Answer briefly and to the point.',
    messages: convertToModelMessages(messages),
    maxOutputTokens: 8192, // Gateway output cap
  });

  return result.toUIMessageStreamResponse();
}

Na kliencie 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: 'Write a haiku about distributed computing',
});

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

Parametry modeli. Przez Gateway dostępne są trzy modele: kontekst 180K tokenów w MiniMax M2.7, 380K w DeepSeek V4 Flash i 390K w GLM-5.3 Flash; limit odpowiedzi (maxOutputTokens) — 8192 w MiniMax M2.7 i GLM-5.3 Flash, 32768 w 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 reasoningowy — rozumuje przed odpowiedzią).

Jeśli maxOutputTokens nie jest ustawiony, dla zapytania non-stream Gateway domyślnie zwróci do 1500 tokenów — w czatach strumieniowych lepiej podać 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.0062 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 poprzez obiekt tools i schemat zod. Modele sieci obsługują natywne 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: 'Get the weather in a city',
      inputSchema: z.object({ city: z.string() }),
      execute: async ({ city }) => ({ city, tempC: 17 }),
    }),
  },
  prompt: 'What is the weather in Moscow? Answer in one sentence.',
});

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 w porównaniu do $0.03-0.10 u Anthropic czy OpenAI. W przypadku aplikacji agentowych, gdzie każde zapytanie użytkownika rozkłada się na 5-10 kroków, oszczędności na produkcji liczone są w tysiącach dolarów miesięcznie.

Jeśli budujesz aplikację AI w Pythonie, sprawdź przewodnik po LangChain — tam to samo podejście przez 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.0062/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 →