Abschnitte der Wissensbasis ▾

Werkzeuge

Werkzeuge

TanStack AI + Gonka – KI-Anwendungen mit TypeScript für kleines Geld

TanStack AI (@tanstack/ai) – ein typensicheres SDK für TypeScript vom TanStack-Team (Autoren von Query, Router, Table). Provider-unabhängige Architektur: Streaming-Chat, nativer Tool-Calling, Agenten, strukturierte Ausgabe und Multimodalität über einen einheitlichen Satz von Adaptern. Vorgefertigte Bindings für React, Vue, Svelte, Solid und Preact (useChat und andere Hooks) sowie ein Headless-Client für den Server.

Das Problem ist dasselbe wie bei jedem KI-Framework – der Preis der Inferenz. TanStack AI unterstützt sofort OpenAI, Anthropic und Gemini, aber die direkten Tarife dieser Anbieter (2,50–15 $ pro 1 Mio. Token) machen Produktions-Chat und Agenten teuer: Streaming-Dialoge und Tool-Zyklen verbrauchen schnell Millionen von Token.

Das Hauptmerkmal von TanStack AI ist die Funktion openaiCompatible(): eine erstklassige Möglichkeit, jeden OpenAI-kompatiblen Endpunkt zu verbinden. Das bedeutet, dass JoinGonka Gateway ohne benutzerdefinierte Adapter integriert werden kann – Sie geben baseURL, den Schlüssel und eine Liste von Modellen an. Ergebnis: Derselbe typensichere Chat und Agenten, aber für 0,0005 $/1 Mio. Token über das dezentrale Gonka-Netzwerk statt 2,50–15 $ bei OpenAI.

Schritt 1: TanStack AI installieren und Schlüssel erhalten

Pakete installieren (Kern + OpenAI-Adapter, in dem sich openaiCompatible befindet):

# pnpm
pnpm add @tanstack/ai @tanstack/ai-openai

# npm
npm install @tanstack/ai @tanstack/ai-openai

Für die Chat-Oberfläche in React fügen Sie den Client und Hooks hinzu:

pnpm add @tanstack/ai-client @tanstack/ai-react

JoinGonka API-Schlüssel: Falls noch nicht vorhanden – registrieren Sie sich unter gate.joingonka.ai/register, erhalten Sie 10 Mio. kostenlose Token und erstellen Sie einen Schlüssel jg-xxx im Dashboard → API Keys. Ein Schlüssel und ein Guthaben funktionieren sowohl für das OpenAI- als auch für das Anthropic-Format.

Schritt 2: Gonka via openaiCompatible verbinden

In TanStack AI wird ein benutzerdefinierter OpenAI-kompatibler Anbieter mit der Funktion openaiCompatible() konfiguriert: Sie legen einmal baseURL, apiKey und eine Liste von Modellen fest und wählen dann bei jedem Aufruf ein Modell aus. Unser Gateway verwendet das Chat Completions-Format, daher belassen wir api: 'chat-completions' (dies ist der Standardwert).

import { openaiCompatible } from '@tanstack/ai-openai'

// Gonka-Provider – wird einmal konfiguriert
export const gonka = openaiCompatible({
  name: 'gonka',
  baseURL: 'https://gate.joingonka.ai/v1',
  apiKey: process.env.GONKA_API_KEY!, // jg-Ihr-Schlüssel
  api: 'chat-completions',
  models: [
    'Qwen/Qwen3-235B-A22B-Instruct-2507-FP8', // Standard
    'moonshotai/Kimi-K2.6',
    'MiniMaxAI/MiniMax-M2.7',
  ],
})

Streaming-Chat auf dem Server (z. B. ein Route-Handler in einem beliebigen Fullstack-Framework oder TanStack Start). Die Antwortlänge wird über modelOptions festgelegt – dies ist der einzige Punkt für native Wire-Parameter (max_tokens, temperature):

import { chat, toServerSentEventsResponse } from '@tanstack/ai'
import { gonka } from './gonka'

export async function POST(request: Request) {
  const { messages } = await request.json()

  const stream = chat({
    adapter: gonka('Qwen/Qwen3-235B-A22B-Instruct-2507-FP8'),
    messages,
    modelOptions: { max_tokens: 8192 }, // Qwen-Schwellenwert über Gateway
  })

  return toServerSentEventsResponse(stream)
}

React-Client über den Hook useChat – streamt Antworten vom Server an die Benutzeroberfläche:

import { useChat } from '@tanstack/ai-react'

function Chat() {
  const { messages, sendMessage, status } = useChat({ api: '/api/chat' })

  return (
    <div>
      {messages.map((m) => (
        <p key={m.id}><b>{m.role}:</b> {m.content}</p>
      ))}
      <button onClick={() => sendMessage('Was ist Gonka?')}>
        Fragen
      </button>
    </div>
  )
}

Ohne Server: Derselbe Anbieter funktioniert direkt in einem Skript oder Backend – rufen Sie chat() auf und lesen Sie den Stream. Die Verbindung zu Gonka ist für alle Varianten gleich.

Modellparameter über das Gateway: Der Kontext aller drei Modelle beträgt 128K Token. Das Limit für max_tokens: Qwen3-235B – 8192, Kimi K2.6 – 3072, MiniMax-M2.7 – 4096. Wenn max_tokens für Nicht-Streaming-Anfragen nicht angegeben ist, ist der Standardwert 1500, daher sollten Sie ihn für lange Antworten explizit festlegen.

Kostenvergleich

TanStack AI funktioniert gleichermaßen bequem über direkte OpenAI/Anthropic-Tarife und über Gonka – nur die baseURL ändert sich. Aber der Preis unterscheidet sich um Größenordnungen. Vergleichen wir typische Lasten einer Produktionsanwendung auf TanStack AI:

SzenarioTokenOpenAI / AnthropicJoinGonka Gonka
Eine Streaming-Chat-Antwort~3K$0.008 — $0.045$0.000004
Agentenzyklus mit Tool-Aufruf~15K$0.04 — $0.22$0.00002
1.000 Dialoge pro Tag~3M$7.50 — $45$0.003
Produktionsmonat (~100M)~100M$250 — $1.500$0.10

Der Provider-agnostic-Ansatz von TanStack AI bedeutet, dass der Wechsel zu Gonka eine einzige Zeilenänderung (baseURL) ist und keine Code-Neuschreibung. Dabei bleiben Ihre typsicheren Tools, strukturierten Ausgaben und React-Hooks unverändert. Für eine Anwendung mit Tausenden von Benutzern macht der Unterschied Zehntausende von Dollar pro Monat aus.

Preis von Gonka: Eingang ~$0.0005 pro 1M Token, Ausgang ×3. Das ist Hunderte bis Tausende Male billiger als die direkten Tarife von OpenAI und Anthropic.

Typsichere Tools und Modellauswahl

Das Hauptmerkmal von TanStack AI ist der einheitliche Vertrag toolDefinition(): Ein Tool wird einmal beschrieben (Eingabe/Ausgabe über Zod, ArkType, Valibot oder JSON Schema), und die Implementierung wird auf dem Server oder Client gebunden. Qwen3-235B, Kimi K2.6 und MiniMax-M2.7 unterstützen nativen Tool-Aufruf über Gonka, sodass Agenten zuverlässig arbeiten – ohne das Parsen von Textantworten.

import { chat, toolDefinition } from '@tanstack/ai'
import { gonka } from './gonka'
import { z } from 'zod'

const getWeather = toolDefinition({
  name: 'getWeather',
  description: 'Узнать погоду в городе',
  inputSchema: z.object({ city: z.string() }),
  outputSchema: z.object({ tempC: z.number() }),
}).server(async ({ city }) => {
  return { tempC: 21 } // ваш реальный вызов API
})

const stream = chat({
  adapter: gonka('Qwen/Qwen3-235B-A22B-Instruct-2507-FP8'),
  messages: [{ role: 'user', content: 'Какая погода в Москве?' }],
  tools: [getWeather],
  modelOptions: { max_tokens: 8192 },
})

Welche Modell wählen:

  • Qwen/Qwen3-235B-A22B-Instruct-2507-FP8 – Standard. Die höchste Antwortgrenze (8192) und starke Tool-Aufrufe. Geeignet für Agenten und strukturierte Ausgaben.
  • moonshotai/Kimi-K2.6 – Hervorragend für lange Dialoge und Argumentationen. Antwortgrenze 3072.
  • MiniMaxAI/MiniMax-M2.7 – Balance zwischen Geschwindigkeit und Qualität, Grenze 4096.

Dank des Runtime-Adapter-Switching in TanStack AI können alle drei Modelle in einem Anbieter gehalten und im laufenden Betrieb zwischen ihnen gewechselt werden – zum Beispiel schwere Agentenaufgaben auf Qwen, schnelle Antworten auf MiniMax.

TanStack AI + Gonka = typsichere KI-Anwendungen in TypeScript für Peanuts. Verbindung über openaiCompatible – eine baseURL-Korrektur, und Streaming-Chat, Agenten und Tools funktionieren für 0,0005 $ / 1 Mio. Token statt 2,50 $ – 15 $ bei OpenAI. 10 Mio. kostenlose Token reichen für Tausende von Dialogen.

Möchten Sie mehr erfahren?

Erkunden Sie andere Abschnitte oder beginnen Sie jetzt GNK zu verdienen.

Erhalten Sie 10 Mio. kostenlose Token →