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 helpery dla Next.js App Router — wszystko, czego potrzebujesz do chatbotów, agentów i potoków RAG w sieci.

Problem jest taki sam, jak w każdej aplikacji LLM — koszt dostawcy. Interfejs czatu strumieniowego przesył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 projekt typu pet-project na produkcji zamienia się w rachunek na setki dolarów miesięcznie.

JoinGonka Gateway — to punkt końcowy kompatybilny z OpenAI działający w oparciu o zdecentralizowaną sieć 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.0047/1M tokenów na wejściu — 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 1.5M 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ą funkcją Vercel AI SDK jest strumieniowanie odpowiedzi. Funkcja streamText rozpoczyna strumieniowanie tokenów natychmiast, a pomocnik toUIMessageStreamResponse() przesyła gotowy strumień bezpośrednio z route handler w Next.js App Router.

Obsługa serwerowa 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ę on z /api/chat i renderuje strumień wiadomości. Backend przy tym komunikuje się 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ą trzy modele: kontekst 200K tokenów w Kimi K2.6 i MiniMax M2.7, 380K w DeepSeek V4 Flash; limit odpowiedzi (maxOutputTokens) — do 8192 dla każdego:

Jeśli maxOutputTokens nie zostanie określony, dla zapytań non-stream Gateway domyślnie zwróci do 1500 tokenów — w przypadku czatów strumieniowych lepiej określać 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.0047 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 1.5M tokenów wystarcza, aby wykonać pierwsze zapytania projektu.

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 = 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.0047/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 →