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ụ 37
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 generateTextstreamText, 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 FlashGLM-5.3 Flash — cùng là streamText, nhưng với giá $0.0069/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-khóa JoinGonka: đăng ký tại gate.joingonka.ai/register — chúng tôi tặng 3M token miễn phí khi bắt đầu. Trong Dashboard, hãy tạo một khóa với tiền tố jg-.

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

npm install ai @ai-sdk/openai-compatible

Kết nối tối thiểu — tạo một instance của trình cung cấp 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 tiêu đề Authorization: Bearer jg-your-key — không cần cấu hình riêng. Hãy lưu khóa 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 đặc thù của OpenAI.

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

Tính năng chính của Vercel AI SDK là khả năng phản hồi theo luồng (streaming). Hàm streamText bắt đầu truyền các token ngay lập tức, và helper toUIMessageStreamResponse() sẽ gửi 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à đi thẳng vào vấn đề.',
    messages: convertToModelMessages(messages),
    maxOutputTokens: 8192, // giới hạn output qua Gateway
  });

  return result.toUIMessageStreamResponse();
}

Trên client, hãy kết nối hook useChat từ @ai-sdk/react — nó sẽ tự động gọi tới /api/chat và render luồng tin nhắn. Backend lúc này sẽ kết nối tới Gonka thay vì OpenAI.

Script không có UI (Node, async-iterator qua 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: 'Viết một bài haiku về tính toán phân tán',
});

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

Thông số mô hình. Thông qua Gateway có sẵn ba mô hình: context 200K token cho MiniMax M2.7, 380K cho DeepSeek V4 Flash và 390K cho GLM-5.3 Flash; giới hạn phản hồi (maxOutputTokens) — 8192 cho MiniMax M2.7 và GLM-5.3 Flash, 32768 cho 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, mô hình reasoning — suy luận trước khi trả lời).

Nếu maxOutputTokens không được đặt, đối với các request non-stream, Gateway mặc định sẽ trả về tối đa 1500 token — đối với các chat stream, tốt hơn là nên chỉ định giá trị 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 — 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.0069 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 mô tả các công cụ một cách khai báo thông qua đối tượng tools và lược đồ zod. Các mô hình mạng lưới hỗ trợ function calling native, vì vậy AI SDK nhận các tool_calls có cấu trúc mà không cần phân tích cú pháp phản hồ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: 'Узнать погоду в городе',
      inputSchema: z.object({ city: z.string() }),
      execute: async ({ city }) => ({ city, tempC: 17 }),
    }),
  },
  prompt: 'Какая погода в Москве? Ответь одним предложением.',
});

console.log(text);

Mô hình gọi công cụ weather, nhận kết quả và tạo phản hồi cuối cùng. Toàn bộ chu kỳ có giá khoảng $0.000048 thông 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ý, nơi mỗi yêu cầu của người dùng được mở rộng thành 5-10 bước, khoản tiết kiệm trên production được tính bằng hàng ngà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ó cách tiếp cận tương tự thông 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.0069/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í →