Bagian Basis Pengetahuan ▾

Navigasi

▸ Mulai di sini Berdasarkan peran

Kategori

Alat 37
Glosarium 12

Alat

TanStack AI + Gonka — Aplikasi AI di TypeScript dengan biaya rendah

TanStack AI (@tanstack/ai) — SDK aman-tipe untuk TypeScript dari tim TanStack (penulis Query, Router, Table). Arsitektur provider-agnostic: chat streaming, tool calling asli, agen, output terstruktur, dan multimodalitas melalui serangkaian adapter tunggal. Binding siap pakai untuk React, Vue, Svelte, Solid, dan Preact (useChat dan hook lainnya) ditambah klien headless untuk server.

Masalahnya sama dengan framework AI lainnya — harga inferensi. TanStack AI secara bawaan mendukung OpenAI, Anthropic, dan Gemini, tetapi tarif langsung dari provider ini ($2.50–15 per 1M token) membuat chat dan agen di production menjadi mahal: dialog streaming dan siklus alat dengan cepat menghabiskan jutaan token.

Fitur utama TanStack AI adalah fungsi openaiCompatible(): cara kelas satu untuk menghubungkan endpoint apa pun yang kompatibel dengan OpenAI. Artinya, JoinGonka Gateway terintegrasi tanpa adapter kustom — Anda cukup menentukan baseURL, kunci, dan daftar model. Hasilnya: chat dan agen aman-tipe yang sama, namun dengan harga $0.0069/1M token melalui jaringan terdesentralisasi Gonka, alih-alih $2.50–15 di OpenAI.

Langkah 1: Instal TanStack AI dan dapatkan kunci

Instalasi paket (core + adapter OpenAI, tempat openaiCompatible berada):

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

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

Untuk antarmuka obrolan di React, tambahkan klien dan hook:

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

API-key JoinGonka: jika belum punya — daftar di gate.joingonka.ai/register, dapatkan 3M token gratis dan buat kunci jg-xxx di Dashboard → API Keys. Satu kunci dan satu saldo berfungsi untuk format OpenAI dan Anthropic.

Langkah 2: Hubungkan Gonka melalui openaiCompatible

Dalam TanStack AI, provider kustom yang kompatibel dengan OpenAI diatur menggunakan fungsi openaiCompatible(): Anda mengatur baseURL, apiKey, dan daftar model sekali saja, lalu memilih model pada setiap pemanggilan. Gateway kami menggunakan format Chat Completions, jadi kita tetap menggunakan api: 'chat-completions' (nilai default).

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

// Provider Gonka — diatur sekali saja
export const gonka = openaiCompatible({
  name: 'gonka',
  baseURL: 'https://gate.joingonka.ai/v1',
  apiKey: process.env.GONKA_API_KEY!, // jg-kunci-anda
  api: 'chat-completions',
  models: [
    'MiniMaxAI/MiniMax-M2.7', // default
    'deepseek-ai/DeepSeek-V4-Flash-0731',
    'zai-org/GLM-5.3-Flash', // model reasoning
  ],
})

Streaming-chat di server (contohnya, route-handler di framework fullstack apa pun atau TanStack Start). Panjang respons diatur melalui modelOptions — ini adalah satu-satunya tempat untuk parameter wire asli (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('MiniMaxAI/MiniMax-M2.7'),
    messages,
    modelOptions: { max_tokens: 8192 }, // batas output melalui Gateway
  })

  return toServerSentEventsResponse(stream)
}

Klien React melalui hook useChat — melakukan stream respons dari server ke UI:

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('Apa itu Gonka?')}>
        Tanya
      </button>
    </div>
  )
}

Tanpa server: provider yang sama berfungsi langsung dalam skrip atau backend — cukup panggil chat() dan baca stream-nya. Koneksi ke Gonka sama untuk semua varian.

Parameter model melalui Gateway: konteks — 200K token untuk MiniMax M2.7, 380K untuk DeepSeek V4 Flash, dan 390K untuk GLM-5.3 Flash. Batas max_tokens — 8192 untuk MiniMax M2.7 dan GLM-5.3 Flash, 32768 untuk DeepSeek V4 Flash. Jika max_tokens tidak ditentukan, default untuk non-stream adalah 1500, jadi untuk respons panjang, tentukan secara eksplisit.

Perbandingan Biaya

TanStack AI bekerja dengan nyaman baik melalui tarif langsung OpenAI/Anthropic maupun melalui Gonka — hanya baseURL yang berubah. Namun harganya berbeda jauh. Mari bandingkan beban tipikal aplikasi production di TanStack AI:

SkenarioTokenOpenAI / AnthropicJoinGonka Gonka
Satu jawaban chat streaming~3K$0.008 — $0.045$0.000028
Siklus agen dengan tool calling~15K$0.04 — $0.22$0.00014
1.000 dialog per hari~3M$7.50 — $45$0.028
Bulan production (~100M)~100M$250 — $1 500$0.96

Pendekatan provider-agnostic dari TanStack AI berarti beralih ke Gonka hanya perlu mengubah satu baris (baseURL), bukan menulis ulang kode. Tools aman-tipe, output terstruktur, dan React-hook Anda tetap tidak berubah. Untuk aplikasi dengan ribuan pengguna, perbedaannya mencapai puluhan ribu dolar per bulan.

Harga Gonka: input ~$0.0069 per 1M token, output ×3. Ini ratusan hingga ribuan kali lebih murah daripada tarif langsung OpenAI dan Anthropic.

Alat type-safe dan pemilihan model

Fitur utama TanStack AI adalah kontrak tunggal toolDefinition(): alat dijelaskan satu kali (input/output melalui Zod, ArkType, Valibot, atau JSON Schema), dan implementasinya dihubungkan di server atau klien. MiniMax M2.7, DeepSeek V4 Flash, dan GLM-5.3 Flash mendukung tool calling native melalui Gonka, sehingga agen bekerja dengan andal — tanpa harus melakukan parsing pada respons teks.

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

const getWeather = toolDefinition({
  name: 'getWeather',
  description: 'Mendapatkan cuaca di sebuah kota',
  inputSchema: z.object({ city: z.string() }),
  outputSchema: z.object({ tempC: z.number() }),
}).server(async ({ city }) => {
  return { tempC: 21 } // panggilan API nyata Anda
})

const stream = chat({
  adapter: gonka('MiniMaxAI/MiniMax-M2.7'),
  messages: [{ role: 'user', content: 'Bagaimana cuaca di Moskow?' }],
  tools: [getWeather],
  modelOptions: { max_tokens: 8192 },
})

Model mana yang harus dipilih:

  • MiniMaxAI/MiniMax-M2.7 — default, keseimbangan antara kecepatan dan kualitas, konteks panjang. Batas respons 8192.
  • deepseek-ai/DeepSeek-V4-Flash-0731 — salah satu konteks terpanjang di jaringan (380K), prompt besar yang murah. Batas respons 32768.
  • zai-org/GLM-5.3-Flash — model penalaran (reasoning-model): berpikir sebelum menjawab, kuat dalam logika kompleks; konteks terpanjang di jaringan (390K). Batas respons 8192; penalaran menghabiskan sebagian max_tokens.

Berkat runtime adapter switching di TanStack AI, Anda dapat menyimpan ketiga model dalam satu provider dan beralih di antara mereka secara instan — misalnya, tugas penalaran pada GLM-5.3 Flash, respons cepat pada MiniMax.

TanStack AI + Gonka = aplikasi AI tipe-aman di TypeScript dengan biaya sangat murah. Koneksi melalui openaiCompatible — satu perubahan baseURL, dan streaming obrolan, agen, dan tools berfungsi dengan $0.0069/1M token daripada $2.50–15 di OpenAI. Token awal memungkinkan mencoba tanpa kartu kredit.

Ingin tahu lebih banyak?

Jelajahi bagian lain atau mulai hasilkan GNK sekarang.

Dapatkan token gratis →