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ụ 32
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 trên TypeScript và JavaScript. Một API duy nhất generateTextstreamText, truyền phát (streaming) ra UI, native tool calling, các helper có sẵn cho Next.js App Router — tất cả những gì cần thiết cho chatbot, tác tử và RAG-pipeline trên web.

Vấn đề vẫn giống như bất kỳ ứng dụng LLM nào — chi phí của nhà cung cấp. Giao diện chat streaming gửi lịch sử hội thoại cho mỗi tin nhắn, tác tử đẩy 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 nhỏ khi lên production cũng có thể trở 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 một mô hình Kimi K2.6, cùng streamText, nhưng với mức giá $0.003/1M token đầu vào — rẻ hơn hàng trăm đến hàng nghìn 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 — chúng tôi tặng ngay 10M token miễn phí khi bắt đầu. Trong Dashboard, hãy tạo một key với tiền tố jg-.

Cài đặt các gói. Đối với endpoint tương thích với OpenAI tùy chỉnh, Vercel AI SDK đề xuất sử dụng provider @ai-sdk/openai-compatible:

npm install ai @ai-sdk/openai-compatible

Kết nối tối thiểu — tạo một instance provider thông 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: 'Giải thích mạng lưới inference phi tập trung là gì',
});

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 trữ key trong biến môi trường GONKA_API_KEY (ví dụ trong .env.local), thay vì trong mã nguồn.

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

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

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

Server handler 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,
});

// cho phép stream tối đa 30 giây
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: 'Bạn là một trợ lý hữu ích. Hãy trả lời ngắn gọn và đúng trọng tâm.',
    messages: convertToModelMessages(messages),
    maxOutputTokens: 8192, // giới hạn đầu ra qua Gateway
  });

  return result.toUIMessageStreamResponse();
}

Trên client, chỉ cần sử dụng hook useChat từ @ai-sdk/react — nó sẽ tự động gọi /api/chat và render luồng tin nhắn. Trong khi đó, backend sẽ truy cập vào Gonka thay vì OpenAI.

Script không 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: 'Hãy viết một bài thơ haiku về tính toán phân tán',
});

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

Tham số mô hình. Qua Gateway, có hai mô hình khả dụng, cả hai đều có ngữ cảnh 200K token; giới hạn phản hồi (maxOutputTokens) — lên tới 8192 cho mỗi mô hình:

Nếu không thiết lập maxOutputTokens, đối với yêu cầu non-stream, Gateway sẽ trả về mặc định tối đa 1500 token — đối với chat streaming, tốt hơn hết bạn nên định nghĩa giá trị này một cách rõ ràng.

So sánh chi phí

Vercel AI SDK thường nằm sau giao diện tương tác — chat, tác tử, 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 tử lại kèm theo ngữ cảnh công cụ. Do đó, chi phí thực tế không được tính theo từng truy vấn, mà theo tải thực tế trên production. Hãy so sánh các kịch bản điển hình:

Kịch bảnSố tokenAnthropic / OpenAIJoinGonka Gonka
Một tin nhắn trong chat~3K$0.01 — $0.05$0.000014
Hội thoại 20 dòng~150K$0.50 — $2.25$0.00072
RAG-phản hồi (tìm kiếm + tạo)~5K$0.015 — $0.05$0.000024
Bước tác tử với tool calling~10K$0.03 — $0.10$0.000048
10.000 truy vấn/ngày (prod)~50M$150 — $500$0.24

Giá của JoinGonka — khoảng $0.003 cho 1 triệu token đầu vào, đầu ra đắt hơn khoảng ba lần. Đối với một ứng dụng có hàng nghìn truy vấn 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 vài xu lẻ. 10 triệu token miễn phí là đủ để chạy thử nghiệm đầy đủ và debug dự án trước khi lên production.

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

Vercel AI SDK khai báo các công cụ một cách tường minh thông qua đối tượng tools và schema zod. Kimi K2.6 hỗ trợ function calling gốc, vì vậy AI SDK nhận được các tool_calls có cấu trúc mà không cần phân tích cú pháp các câu trả lời văn bản. Tham số stopWhen: stepCountIs(n) cho phép thực hiện nhiều bước liên tiếp — mô hình gọi công cụ, nhận kết quả và 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: 'Tìm hiểu thời tiết tại một thành phố',
      inputSchema: z.object({ city: z.string() }),
      execute: async ({ city }) => ({ city, tempC: 17 }),
    }),
  },
  prompt: 'Thời tiết ở Moscow thế nào? Hãy trả lời bằng một câu.',
});

console.log(text);

Mô hình 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 có giá khoảng $0.000048 qua Gonka so với $0.03-0.10 tại Anthropic hoặc OpenAI. Đối với các ứng dụng đại lý (agentic), nơi mỗi truy vấn của người dùng phát triển thành 5-10 bước, khoản tiết kiệm khi chạy production được tính bằng hàng nghìn đô la mỗi tháng.

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

Vercel AI SDK + Gonka = các ứng dụng AI production-ready bằng TypeScript với chi phí cực thấp. 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 gốc và Next.js route handlers — tất cả chỉ với $0.003/1M token thay vì $2.5-15 tại 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 10M token miễn phí →