Các phần cơ sở kiến thức ▾

Điều hướng

▸ Bắt đầu tại đây Theo vai trò

Danh mục

Công cụ 54
Bảng thuật ngữ 12

Công cụ

Vercel AI SDK + Gonka AI — Ứng dụng AI trên TypeScript giá rẻ

Vercel AI SDK là SDK phổ biến nhất để xây dựng các ứng dụng AI bằng TypeScript và JavaScript. API thống nhất generateText và streamText, truyền phát trực tiếp (streaming) ra UI, tool calling native, các helper có sẵn cho Next.js App Router — tất cả những gì cần thiết cho chatbot, đại lý (agents) và các quy trình RAG trên web.

Vấn đề cũng giống như bất kỳ ứng dụng LLM nào — giá của nhà cung cấp. Giao diện trò chuyện streaming gửi lịch sử hội thoại cho mỗi tin nhắn, đại lý di chuyển ngữ cảnh qua hàng chục bước. Với mức giá của Anthropic ($3-15/1M) và OpenAI ($2.5-10/1M), ngay cả một dự án pet-project khi đưa vào môi trường production cũng biến thành hóa đơn hàng trăm đô la mỗi tháng.

JoinGonka Gateway — endpoint tương thích với OpenAI chạy trên mạng lưới phi tập trung Gonka. Vercel AI SDK kết nối với nó như bất kỳ nhà cung cấp tương thích OpenAI nào — không cần fork, không cần adapter riêng. Cùng các mô hình mở như tại các nhà cung cấp thương mại — MiniMax M2.7, DeepSeek V4 Flash và GLM-5.3 Flash — cùng là streamText, nhưng với giá $0.0062/1M token đầu vào — rẻ hơn hàng chục lần.

Bước 1: Nhận khóa và kết nối nhà cung cấp

API key JoinGonka: đăng ký tại gate.joingonka.ai/register — khi khởi đầu chúng tôi tặng 3M token miễn phí. Trong Dashboard, hãy tạo key với tiền tố jg-.

Cài đặt gói. Đối với endpoint tùy chỉnh tương thích OpenAI, Vercel AI SDK khuyến nghị provider @ai-sdk/openai-compatible:

npm install ai @ai-sdk/openai-compatible

Kết nối tối thiểu — tạo instance provider qua createOpenAICompatible và gọi 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-your-key
});

const { text } = await generateText({
  model: gonka('MiniMaxAI/MiniMax-M2.7'),
  prompt: 'Explain what a decentralized inference network is',
});

console.log(text);

Tham số apiKey tự động thêm header Authorization: Bearer jg-your-key — không cần cấu hình riêng. Hãy lưu key trong biến môi trường GONKA_API_KEY (ví dụ trong .env.local), đừng để trong code.

Lựa chọn thay thế — gói @ai-sdk/openai với factory createOpenAI({ baseURL, apiKey }). Cả hai cách đều hoạt động; với các endpoint không thuộc OpenAI, tài liệu AI SDK khuyên dùng đúng @ai-sdk/openai-compatible — nó không mang theo những giả định riêng của OpenAI không cần thiết.

Bước 2: Phát trực tuyến và trình xử lý tuyến đường Next.js

Điểm đặc sắc nhất của Vercel AI SDK là khả năng trả về phản hồi dạng stream. Hàm streamText bắt đầu stream token ngay lập tức, còn helper toUIMessageStreamResponse() trả về luồng hoàn chỉnh trực tiếp từ route handler trong Next.js App Router.

Trình xử lý phía server 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,
});

// allow streaming for up to 30 seconds
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: 'You are a helpful assistant. Answer briefly and to the point.',
    messages: convertToModelMessages(messages),
    maxOutputTokens: 8192, // Gateway output cap
  });

  return result.toUIMessageStreamResponse();
}

Ở phía client, hãy kết nối hook useChat từ @ai-sdk/react — nó tự gọi /api/chat và render luồng tin nhắn. Backend khi đó sẽ gọi đến Gonka chứ không phải OpenAI.

Script không có UI (Node, async-iterator trên luồng):

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: 'Write a haiku about distributed computing',
});

for await (const chunk of result.textStream) {
  process.stdout.write(chunk);
}

Tham số model. Qua Gateway có ba model khả dụng: context 180K token với MiniMax M2.7, 380K với DeepSeek V4 Flash và 390K với GLM-5.3 Flash; giới hạn phản hồi (maxOutputTokens) — 8192 với MiniMax M2.7 và GLM-5.3 Flash, 32768 với DeepSeek V4 Flash:

  • MiniMaxAI/MiniMax-M2.7 — mặc định (MiniMax M2.7);
  • deepseek-ai/DeepSeek-V4-Flash-0731 (DeepSeek V4 Flash, context 380K);
  • zai-org/GLM-5.3-Flash (GLM-5.3 Flash, model reasoning — suy luận trước khi trả lời).

Nếu không đặt maxOutputTokens, với request non-stream Gateway mặc định trả về tối đa 1500 token — với chat dạng stream nên chỉ định giá trị rõ ràng.

So sánh chi phí

Vercel AI SDK thường nằm sau giao diện tương tác — trò chuyện, tác nhân, trợ lý trong ứng dụng. Mỗi tin nhắn kéo theo lịch sử hội thoại, mỗi bước của tác nhân kéo theo ngữ cảnh công cụ. Do đó, chi phí thực tế không được tính theo một yêu cầu đơn lẻ, mà theo tải trọng production. Hãy so sánh các kịch bản điển hình:

Kịch bảnTokenAnthropic / OpenAIJoinGonka Gonka
Một tin nhắn trò chuyện~3K$0.01 — $0.05$0.000028
Cuộc hội thoại 20 dòng~150K$0.50 — $2.25$0.0014
Phản hồi RAG (tìm kiếm + tạo)~5K$0.015 — $0.05$0.000048
Bước tác nhân với tool calling~10K$0.03 — $0.10$0.000096
10 000 yêu cầu mỗi ngày (prod)~50M$150 — $500$0.48

Giá của JoinGonka là khoảng $0.0062 cho mỗi 1M token đầu vào, đầu ra đắt hơn khoảng ba lần. Đối với một ứng dụng với hàng ngàn yêu cầu mỗi ngày, đây là sự khác biệt giữa hóa đơn hàng trăm đô la và hóa đơn chỉ vài xu. 3M token miễn phí là đủ để chạy các yêu cầu đầu tiên của dự án.

Gọi công cụ và tác nhân

Vercel AI SDK khai báo các công cụ theo kiểu khai báo thông qua đối tượng tools và schema zod. Các model trong mạng hỗ trợ function calling gốc, nhờ đó AI SDK nhận được tool_calls có cấu trúc mà không cần parse văn bản trả về. Tham số stopWhen: stepCountIs(n) cho phép nhiều bước liên tiếp — model gọi công cụ, nhận kết quả rồi tiếp tục.

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: 'Get the weather in a city',
      inputSchema: z.object({ city: z.string() }),
      execute: async ({ city }) => ({ city, tempC: 17 }),
    }),
  },
  prompt: 'What is the weather in Moscow? Answer in one sentence.',
});

console.log(text);

Model gọi công cụ weather, nhận kết quả và tạo ra câu trả lời cuối cùng. Toàn bộ vòng lặp chỉ tốn khoảng $0.000048 qua Gonka, so với $0.03-0.10 ở Anthropic hay OpenAI. Với các ứng dụng agent, nơi mỗi yêu cầu của người dùng triển khai thành 5-10 bước, khoản tiết kiệm trên môi trường production lên tới hàng nghìn đô la mỗi tháng.

Nếu bạn đang xây dựng ứng dụng AI bằng Python, hãy xem hướng dẫn về LangChain — ở đó cũng dùng cách tiếp cận tương tự qua lớp tương thích OpenAI.

Vercel AI SDK + Gonka = ứng dụng AI sẵn sàng cho sản xuất trên TypeScript với chi phí tối thiểu. createOpenAICompatible kết nối Gateway mà không cần fork, generateText và streamText hoạt động như bình thường, tool calling nguyên bản và Next.js route handlers — tất cả chỉ với $0.0062/1M token thay vì $2.5-15 của OpenAI và Anthropic.

Muốn tìm hiểu thêm?

Khám phá các phần khác hoặc bắt đầu kiếm GNK ngay bây giờ.

Nhận token miễn phí →