Bilgi Tabanı Bölümleri ▾

Araçlar

Araçlar

TanStack AI + Gonka — TypeScript'te AI Uygulamaları Kuruşlara

TanStack AI (@tanstack/ai) - TanStack ekibinden (Query, Router, Table'ın yaratıcıları) tip güvenli bir SDK TypeScript için. Sağlayıcıdan bağımsız mimari: akışlı sohbet, yerel araç çağırma, ajanlar, yapılandırılmış çıktı ve tek bir adaptör seti aracılığıyla multimodalite. React, Vue, Svelte, Solid ve Preact için hazır bağlamalar (useChat ve diğer kancalar) artı sunucu için başsız istemci.

Sorun, herhangi bir yapay zeka çerçevesinde olduğu gibi, çıkarım maliyetidir. TanStack AI, OpenAI, Anthropic ve Gemini'yi kutudan çıkar çıkmaz destekler, ancak bu sağlayıcıların doğrudan tarifeleri (1M token için 2,50-15 dolar), üretim sohbetini ve ajanlarını pahalı hale getirir: akışlı diyaloglar ve araç döngüleri hızlı bir şekilde milyonlarca token tüketir.

TanStack AI'nın temel özelliği - openaiCompatible() işlevi: herhangi bir OpenAI uyumlu uç noktayı bağlamanın birinci sınıf bir yolu. Bu, JoinGonka Gateway'in özel adaptörler olmadan entegre edilebileceği anlamına gelir - baseURL, anahtar ve model listesini belirtirsiniz. Sonuç: aynı tip güvenli sohbet ve ajanlar, ancak merkeziyetsiz Gonka ağı aracılığıyla 1M token için 0,0005 dolar karşılığında, OpenAI'de 2,50-15 dolar yerine.

Adım 1: TanStack AI'yı yükleyin ve bir anahtar alın

Paket kurulumu (çekirdek + openaiCompatible'ın bulunduğu OpenAI adaptörü):

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

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

React üzerinde bir sohbet arayüzü için istemci ve kancaları ekleyin:

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

JoinGonka API Anahtarı: Hala yoksa - gate.joingonka.ai/register adresine kaydolun, 10M ücretsiz token alın ve Kontrol Paneli → API Anahtarları bölümünde jg-xxx anahtarını oluşturun. Tek bir anahtar ve tek bir bakiye, hem OpenAI hem de Anthropic formatı için çalışır.

Adım 2: Gonka'yı openaiCompatible aracılığıyla bağlayın

TanStack AI'da, özel bir OpenAI uyumlu sağlayıcı, openaiCompatible() işlevi aracılığıyla yapılandırılır: baseURL, apiKey ve model listesini bir kez ayarlarsınız, ardından her çağrı için bir model seçersiniz. Ağ geçidimiz Sohbet Tamamlama formatını desteklediğinden, api: 'chat-completions' değerini bırakırız (bu varsayılan değerdir).

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

// Gonka Sağlayıcı — bir kez yapılandırılır
export const gonka = openaiCompatible({
  name: 'gonka',
  baseURL: 'https://gate.joingonka.ai/v1',
  apiKey: process.env.GONKA_API_KEY!, // jg-anahtarınız
  api: 'chat-completions',
  models: [
    'Qwen/Qwen3-235B-A22B-Instruct-2507-FP8', // varsayılan
    'moonshotai/Kimi-K2.6',
    'MiniMaxAI/MiniMax-M2.7',
  ],
})

Sunucuda akışlı sohbet (örneğin, herhangi bir tam yığın çerçevede bir yönlendirici işleyici veya TanStack Start). Yanıtın uzunluğunu modelOptions aracılığıyla ayarlarız - bu, yerel kablo parametreleri (max_tokens, temperature) için tek noktadır:

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 }, // Gateway aracılığıyla Qwen'in sınırı
  })

  return toServerSentEventsResponse(stream)
}

React istemcisi useChat kancası aracılığıyla - sunucudan UI'ye yanıtları akıtır:

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('Gonka nedir?')}>
        Sor
      </button>
    </div>
  )
}

Sunucusuz: Aynı sağlayıcı bir betikte veya doğrudan arka uçta çalışır - chat()'i çağırın ve akışı okuyun. Gonka'ya bağlantı tüm seçenekler için aynıdır.

Gateway aracılığıyla model parametreleri: Üç modelin tümünün bağlamı - 128K token. max_tokens sınırı: Qwen3-235B - 8192, Kimi K2.6 - 3072, MiniMax-M2.7 - 4096. max_tokens belirtilmezse, akışsız için varsayılan - 1500, bu nedenle uzun yanıtlar için açıkça belirtin.

Maliyet Karşılaştırması

TanStack AI, hem doğrudan OpenAI/Anthropic tarifeleriyle hem de Gonka aracılığıyla eşit derecede rahat çalışır – sadece baseURL değişir. Ancak fiyat kat kat farklıdır. TanStack AI'deki tipik üretim uygulaması yüklerini karşılaştıralım:

SenaryoTokenOpenAI / AnthropicJoinGonka Gonka
Tek bir akışlı sohbet yanıtı~3K$0.008 — $0.045$0.000004
Araç çağırma ile aracı döngüsü~15K$0.04 — $0.22$0.00002
Günde 1.000 diyalog~3M$7.50 — $45$0.003
Üretim bir ayı (~100M)~100M$250 — $1.500$0.10

TanStack AI'nin sağlayıcıdan bağımsız yaklaşımı, Gonka'ya geçişin sadece bir satır değişikliği (baseURL) olduğu ve kodun yeniden yazılması olmadığı anlamına gelir. Aynı zamanda, tip güvenli araçlarınız, yapılandırılmış çıktınız ve React kancalarınız değişmeden kalır. Binlerce kullanıcısı olan bir uygulama için fark ayda on binlerce dolardır.

Gonka fiyatı: giriş ~$0.0005 / 1M jeton, çıkış ×3. Bu, OpenAI ve Anthropic'in doğrudan fiyatlarından yüzlerce ila binlerce kat daha ucuzdur.

Tip güvenli araçlar ve model seçimi

TanStack AI'nin ana özelliği, birleşik toolDefinition() sözleşmesidir: bir araç bir kez tanımlanır (Zod, ArkType, Valibot veya JSON Schema aracılığıyla giriş/çıkış) ve uygulamanın, sunucuda veya istemcide bağlanması. Qwen3-235B, Kimi K2.6 ve MiniMax-M2.7, Gonka aracılığıyla yerel araç çağrısını destekler, bu nedenle aracılar güvenilir bir şekilde çalışır – metin yanıtlarını ayrıştırmadan.

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 },
})

Hangi modeli seçmelisiniz:

  • Qwen/Qwen3-235B-A22B-Instruct-2507-FP8 – varsayılan. En büyük yanıt tavanı (8192) ve güçlü araç çağrısı. Aracılar ve yapılandırılmış çıktı için uygundur.
  • moonshotai/Kimi-K2.6 – uzun diyaloglar ve akıl yürütme için mükemmeldir. Yanıt tavanı 3072'dir.
  • MiniMaxAI/MiniMax-M2.7 – hız ve kalite dengesi, tavan 4096'dır.

TanStack AI'deki runtime adaptör değiştirme sayesinde, her üç model de tek bir sağlayıcıda tutulabilir ve anında aralarında geçiş yapılabilir – örneğin, Qwen'de ağır ajan görevleri, MiniMax'ta hızlı yanıtlar gibi.

TanStack AI + Gonka = kuruşlara TypeScript'te tür güvenli yapay zeka uygulamaları. openaiCompatible üzerinden bağlantı – tek bir baseURL düzeltmesi ve akışlı sohbet, aracılar ve araçlar OpenAI'deki 2,50 – 15 $ yerine 0,0005 $ / 1M jetona çalışır. 10M ücretsiz jeton binlerce diyalog için yeterli olacaktır.

Daha fazla bilgi edinmek ister misiniz?

Diğer bölümleri keşfedin veya şimdi GNK kazanmaya başlayın.

10M ücretsiz jeton alın →