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

Công cụ

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 để tạo các ứng dụng AI bằng TypeScript và JavaScript. API thống nhất generateTextstreamText, phát trực tuyến vào giao diện người dùng, gọi công cụ gốc, các trình trợ giúp sẵn sàng cho Next.js App Router — mọi thứ bạn cần cho chatbot, tác nhân và đường ống RAG trên web.

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

JoinGonka Gateway — một điểm cuối tương thích OpenAI trên mạng Gonka phi tập trung. Vercel AI SDK kết nối với nó như với bất kỳ nhà cung cấp tương thích OpenAI nào — không cần phân nhánh, không cần bộ điều hợp riêng. Cùng một mô hình Qwen3-235B, cùng một streamText, nhưng với giá 0.0005 đô la/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 — khi bắt đầu, chúng tôi tặng 10 triệu token miễn phí. Trong Dashboard, tạo khóa với tiền tố jg-.

Cài đặt gói. Đối với điểm cuối tùy chỉnh tương thích OpenAI, Vercel AI SDK khuyến nghị 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 phiên bản 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-khóa-của-bạn
});

const { text } = await generateText({
  model: gonka('Qwen/Qwen3-235B-A22B-Instruct-2507-FP8'),
  prompt: 'Giải thích mạng suy luận phi tập trung là gì',
});

console.log(text);

Tham số apiKey tự động thêm tiêu đề Authorization: Bearer jg-khóa-của-bạn — không cần cấu hình riêng. Lưu khóa trong biến môi trường GONKA_API_KEY (ví dụ: trong .env.local), chứ không phải trong mã.

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 điểm cuối không thuộc OpenAI, tài liệu AI SDK khuyên dùng @ai-sdk/openai-compatible — nó không kéo theo các giả định đặc trư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

Tính năng chính của Vercel AI SDK là phân phối phản hồi theo luồng. Hàm streamText bắt đầu phát trực tiếp token ngay lập tức, và trình trợ giúp toUIMessageStreamResponse() gửi phản hồi luồng đã sẵn sàng trực tiếp từ trình xử lý tuyến đường trong Next.js App Router.

Trình xử lý phía máy chủ 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 phát trực tuyến 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('Qwen/Qwen3-235B-A22B-Instruct-2507-FP8'),
    system: 'Bạn là một trợ lý hữu ích. Hãy trả lời ngắn gọn và đi vào vấn đề.',
    messages: convertToModelMessages(messages),
    maxOutputTokens: 8192, // giới hạn Qwen3-235B thông qua Gateway
  });

  return result.toUIMessageStreamResponse();
}

Ở phía máy khách, hãy kết nối hook useChat từ @ai-sdk/react — nó tự động gọi /api/chat và hiển thị luồng tin nhắn. Trong khi đó, phần phụ trợ truy cập Gonka chứ không phải OpenAI.

Tập lệnh không có giao diện người dùng (Node, bộ lặp async 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('Qwen/Qwen3-235B-A22B-Instruct-2507-FP8'),
  prompt: '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ó ba mô hình, tất cả đều có 128K token ngữ cảnh; giới hạn trả lời (maxOutputTokens) khác nhau:

  • Qwen/Qwen3-235B-A22B-Instruct-2507-FP8 — mặc định, lên đến 8192 token đầu ra;
  • moonshotai/Kimi-K2.6 — lên đến 3072 (Kimi K2.6);
  • MiniMaxAI/MiniMax-M2.7 — lên đến 4096 (MiniMax M2.7).

Nếu maxOutputTokens không được đặt, đối với yêu cầu không luồng, Gateway mặc định sẽ trả về tối đa 1500 token — đối với các cuộc trò chuyện luồng, tốt hơn nên chỉ định giá trị rõ ràng.

So sánh chi phí

Vercel AI SDK thường được sử dụng cho giao diện tương tác – trò chuyện, trợ lý, hỗ trợ 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 – ngữ cảnh của các công cụ. Do đó, chi phí thực tế không được tính theo một yêu cầu, mà theo tải sản phẩm. So sánh các kịch bản điển hình:

Kịch bảnTokenAnthropic / OpenAIJoinGonka Gonka
Một tin nhắn trong trò chuyện~3K$0.01 — $0.05$0.000003
Đối thoại 20 lần trao đổi~150K$0.50 — $2.25$0.00015
Phản hồi RAG (tìm kiếm + tạo)~5K$0.015 — $0.05$0.000005
Bước tác nhân với tool calling~10K$0.03 — $0.10$0.00001
10 000 yêu cầu mỗi ngày (sản phẩm)~50M$150 — $500$0.05

Giá của JoinGonka là khoảng $0.0005 cho 1 triệu token đầu vào, đầu ra đắt hơn gấp ba lần. Đối với một ứng dụng có hàng nghì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 vài xu. 10 triệu token miễn phí đủ để chạy và gỡ lỗi toàn bộ dự án trước khi đưa vào sản phẩm.

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. Qwen3-235B hỗ trợ gọi hàm native, do đó AI SDK nhận các tool_calls có cấu trúc mà không cần phân tích văn bản phản hồi. Tham số stopWhen: stepCountIs(n) cho phép 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('Qwen/Qwen3-235B-A22B-Instruct-2507-FP8'),
  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? Trả lời trong một câu.',
});

console.log(text);

Mô hình gọi công cụ weather, nhận kết quả và tạo câu trả lời cuối cùng. Toàn bộ chu trình có giá khoảng $0.00001 thông qua Gonka so với $0.03-0.10 của Anthropic hoặc OpenAI. Đối với các ứng dụng tác nhân, nơi mỗi yêu cầu của người dùng mở ra 5-10 bước, khoản tiết kiệm này có thể lên tới hàng nghìn đô la mỗi tháng trong sản xuất.

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 — phương pháp tương tự cũng được sử dụng thông qua lớp tương thích OpenAI.

Vercel AI SDK + Gonka = ứng dụng AI sẵn sàng sản xuất trên TypeScript với chi phí 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, gọi công cụ gốc và Next.js route handlers — tất cả với giá 0.0005 đô la/1 triệu token thay vì 2.5-15 đô la 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 10M token miễn phí →