Mga Seksyon ng Base ng Kaalaman ▾

Nabigasyon

▸ Magsimula rito Ayon sa papel

Mga Kategorya

Mga Gamit 54
Glosaryo 12

Mga Tool

TanStack AI + Gonka — AI Applications sa TypeScript sa Maliit na Halaga

TanStack AI (@tanstack/ai) — type-safe SDK para sa TypeScript mula sa team ng TanStack (mga may-akda ng Query, Router, Table). Provider-agnostic na arkitektura: streaming-chat, native tool calling, agents, structured output, at multimodality sa pamamagitan ng isang set ng mga adapter. Mga handang binding para sa React, Vue, Svelte, Solid, at Preact (useChat at iba pang hooks) plus headless-client para sa server.

Ang problema ay pareho sa kahit anong AI-framework — presyo ng inference. Ang TanStack AI ay may suporta out-of-the-box para sa OpenAI, Anthropic, at Gemini, pero ang mga direct rate ng mga provider na ito ($2.50–15 kada 1M tokens) ay nagpapamahal sa production-chat at mga agent: ang streaming-dialogues at tool-cycles ay mabilis na nauubos ang milyun-milyong tokens.

Ang pangunahing feature ng TanStack AI — ang openaiCompatible() function: isang first-class na paraan para ikonekta ang kahit anong OpenAI-compatible endpoint. Ibig sabihin nito, ang JoinGonka Gateway ay nag-i-integrate nang walang custom adapters — kailangan lang ilagay ang baseURL, key, at listahan ng mga modelo. Ang resulta: parehong type-safe chat at agents, pero sa $0.0062/1M tokens sa pamamagitan ng decentralized network ng Gonka sa halip na $2.50–15 sa OpenAI.

Hakbang 1: I-install ang TanStack AI at kumuha ng susi

Pag-install ng packages (core + OpenAI-adapter, kung saan nakatira ang openaiCompatible):

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

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

Para sa chat interface sa React, idagdag ang client at hooks:

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

JoinGonka API key: kung wala pa — mag-register sa gate.joingonka.ai/register, kumuha ng 3M libreng tokens at lumikha ng jg-xxx key sa Dashboard → API Keys. Ang isang key at isang balance ay gumagana para sa OpenAI at Anthropic formats.

Hakbang 2: Ikonekta ang Gonka sa pamamagitan ng openaiCompatible

Sa TanStack AI, ang custom na OpenAI-compatible na provider ay kino-configure gamit ang function na openaiCompatible(): isang beses mong itatakda ang baseURL, apiKey at listahan ng mga model, pagkatapos ay pipiliin ang model para sa bawat tawag. Ang aming Gateway ay nagsasalita sa format na Chat Completions, kaya iiwan namin ang api: 'chat-completions' (ito ang default na halaga).

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

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

Streaming chat sa server (halimbawa, route handler sa anumang fullstack framework o TanStack Start). Itatakda natin ang haba ng sagot sa pamamagitan ng modelOptions — ito ang nag-iisang punto para sa native wire parameters (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 }, // Gateway output cap
  })

  return toServerSentEventsResponse(stream)
}

React client sa pamamagitan ng useChat hook — nag-stream ng mga sagot mula sa server patungo sa 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('What is Gonka?')}>
        Ask
      </button>
    </div>
  )
}

Walang server: gumagana nang direkta ang parehong provider sa isang script o backend — tawagin ang chat() at basahin ang stream. Pareho ang koneksyon sa Gonka para sa lahat ng variant.

Mga parameter ng model sa pamamagitan ng Gateway: ang context — 180K token sa MiniMax M2.7, 380K sa DeepSeek V4 Flash at 390K sa GLM-5.3 Flash. Ang kisame ng max_tokens — 8192 sa MiniMax M2.7 at GLM-5.3 Flash, 32768 sa DeepSeek V4 Flash. Kung hindi tinukoy ang max_tokens, ang default para sa non-stream ay 1500, kaya para sa mahahabang sagot, itakda ito nang tahasan.

Paghahambing ng Gastos

Ang TanStack AI ay kasing-daling gamitin sa mga direct rate ng OpenAI/Anthropic at sa Gonka — baseURL lang ang nagbabago. Pero ang presyo ay nagkakaiba nang malaki. Ihambing natin ang mga tipikal na load ng production-application sa TanStack AI:

SenaryoTokensOpenAI / AnthropicJoinGonka Gonka
Isang streaming-sagot sa chat~3K$0.008 — $0.045$0.000028
Cycle ng agent na may tool calling~15K$0.04 — $0.22$0.00014
1,000 dialogues kada araw~3M$7.50 — $45$0.028
Buwanang production (~100M)~100M$250 — $1,500$0.96

Ang provider-agnostic na approach ng TanStack AI ay nangangahulugang ang paglipat sa Gonka ay isang line change lang (baseURL) at hindi pag-rewrite ng code. Bukod pa rito, ang iyong type-safe tools, structured output, at React-hooks ay mananatiling pareho. Para sa application na may libu-libong users, ang pagkakaiba ay aabot ng libu-libong dolyar kada buwan.

Presyo ng Gonka: input ~$0.0062 kada 1M tokens, output ×3. Ito ay daan-daang hanggang libu-libong beses na mas mura kaysa sa mga direct rate ng OpenAI at Anthropic.

Type-safe na mga tool at pagpili ng modelo

Ang pangunahing tampok ng TanStack AI ay ang nag-iisang kontrata na toolDefinition(): isang beses lang idescribe ang tool (input/output gamit ang Zod, ArkType, Valibot o JSON Schema), at ang implementasyon ay ikinakabit sa server o client. Sinusuportahan ng MiniMax M2.7, DeepSeek V4 Flash at GLM-5.3 Flash ang native na tool calling sa pamamagitan ng Gonka, kaya maaasahan ang mga agent — walang pag-parse ng mga text na sagot.

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

const getWeather = toolDefinition({
  name: 'getWeather',
  description: 'Get the weather in a city',
  inputSchema: z.object({ city: z.string() }),
  outputSchema: z.object({ tempC: z.number() }),
}).server(async ({ city }) => {
  return { tempC: 21 } // your real API call
})

const stream = chat({
  adapter: gonka('MiniMaxAI/MiniMax-M2.7'),
  messages: [{ role: 'user', content: 'What is the weather in Moscow?' }],
  tools: [getWeather],
  modelOptions: { max_tokens: 8192 },
})

Alin ang modelong pipiliin:

  • MiniMaxAI/MiniMax-M2.7 — default, balanse sa bilis at kalidad, mahabang konteksto. 8192 ang kisame ng sagot.
  • deepseek-ai/DeepSeek-V4-Flash-0731 — isa sa pinakamahabang konteksto sa network (380K), mura para sa malalaking prompt. 32768 ang kisame ng sagot.
  • zai-org/GLM-5.3-Flash — reasoning-model: nag-iisip bago sumagot, malakas sa komplikadong lohika; pinakamahabang konteksto sa network (390K). 8192 ang kisame ng sagot; kumakain ng bahagi ng max_tokens ang pag-iisip.

Salamat sa runtime adapter switching sa TanStack AI, maaari mong hawakan ang lahat ng tatlong modelo sa isang provider at lumipat sa kanila nang real-time — halimbawa, mga gawaing may pag-iisip sa GLM-5.3 Flash, mabibilis na sagot sa MiniMax.

TanStack AI + Gonka = type-safe AI applications sa TypeScript sa napakababang halaga. Koneksyon sa pamamagitan ng openaiCompatible — isang pagbabago sa baseURL, at ang streaming-chat, agents, at tools ay gumagana sa $0.0062/1M tokens sa halip na $2.50–15 sa OpenAI. Ang starter tokens ay nagpapahintulot na subukan ito nang walang card.

Gusto mo pang matuto?

Galugarin ang iba pang mga seksyon o simulang kumita ng GNK ngayon.

Kumuha ng libreng tokens →