ส่วนของฐานความรู้ ▾

การนำทาง

▸ เริ่มต้นที่นี่ ตามบทบาท

หมวดหมู่

เครื่องมือ 32
อภิธานศัพท์ 12

เครื่องมือ

Vercel AI SDK + Gonka AI — แอปพลิเคชัน AI บน TypeScript ราคาถูก

Vercel AI SDK เป็น SDK ยอดนิยมที่สุดสำหรับการสร้างแอปพลิเคชัน AI บน TypeScript และ JavaScript ด้วย API เดียวอย่าง generateText และ streamText, การสตรีมผลลัพธ์สู่ UI, การทำ tool calling แบบ native, และตัวช่วยสำหรับ Next.js App Router — ครบทุกอย่างสำหรับแชทบอท, เอเจนต์ และ RAG-pipelines บนเว็บ

ปัญหาที่พบบ่อยก็เหมือนกับแอป LLM ทั่วไป คือราคาของผู้ให้บริการ อินเทอร์เฟซแชทแบบสตรีมมิ่งต้องส่งประวัติการสนทนาทุกครั้งที่ข้อความใหม่ถูกส่ง และเอเจนต์ต้องจัดการกับบริบทผ่านขั้นตอนจำนวนมาก ด้วยราคาของ Anthropic ($3-15/1M) และ OpenAI ($2.5-10/1M) แม้แต่โปรเจกต์ pet project เล็กๆ ก็อาจกลายเป็นค่าใช้จ่ายหลายร้อยดอลลาร์ต่อเดือนเมื่อขึ้นสู่การใช้งานจริง

JoinGonka Gateway คือ endpoint ที่รองรับ OpenAI บน เครือข่ายกระจายศูนย์ Gonka Vercel AI SDK สามารถเชื่อมต่อได้เหมือนกับผู้ให้บริการที่รองรับ OpenAI ทั่วไปโดยไม่ต้องแก้ไขซอร์สโค้ด (fork) หรือทำ adapter เพิ่มเติม ใช้รุ่น Kimi K2.6 เดิม และ streamText เดิม แต่จ่ายเพียง $0.003/1M tokens — ประหยัดกว่าเดิมหลายร้อยถึงหลายพันเท่า

ขั้นตอนที่ 1: รับคีย์และเชื่อมต่อผู้ให้บริการ

API-key ของ JoinGonka: ลงทะเบียนได้ที่ gate.joingonka.ai/register — เรามอบ 10M tokens ฟรี เพื่อเริ่มต้นใช้งาน สร้างคีย์ที่มีคำนำหน้า jg- ได้ใน Dashboard

การติดตั้งแพ็กเกจ: สำหรับ endpoint ที่เข้ากันได้กับ OpenAI แบบปรับแต่งเอง Vercel AI SDK แนะนำให้ใช้ provider @ai-sdk/openai-compatible:

npm install ai @ai-sdk/openai-compatible

การเชื่อมต่อเบื้องต้น — สร้าง instance ของ provider ผ่าน createOpenAICompatible และเรียกใช้ 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: 'อธิบายว่าเครือข่ายอินเฟอเรนซ์แบบกระจายศูนย์คืออะไร',
});

console.log(text);

พารามิเตอร์ apiKey จะเพิ่ม Header Authorization: Bearer jg-your-key โดยอัตโนมัติ ไม่จำเป็นต้องตั้งค่าแยกต่างหาก ควรเก็บคีย์ไว้ในตัวแปรสภาพแวดล้อม GONKA_API_KEY (เช่น ใน .env.local) แทนการเขียนลงในโค้ดโดยตรง

ทางเลือกอื่น — แพ็กเกจ @ai-sdk/openai พร้อม factory createOpenAI({ baseURL, apiKey }) ทั้งสองวิธีใช้งานได้จริง สำหรับ endpoint ที่ไม่ใช่ของ OpenAI เอกสารของ AI SDK แนะนำให้ใช้ @ai-sdk/openai-compatible เป็นหลัก เพราะไม่ได้รวมการตั้งค่าเฉพาะของ OpenAI ที่ไม่จำเป็นไว้

ขั้นตอนที่ 2: การสตรีมและ Next.js route handler

จุดเด่นหลักของ Vercel AI SDK คือการสตรีมคำตอบ ฟังก์ชัน streamText จะเริ่มสตรีม token ทันที และตัวช่วย toUIMessageStreamResponse() จะส่งสตรีมที่พร้อมใช้งานโดยตรงจาก route handler ใน 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,
});

// ตั้งค่าเวลาสตรีมสูงสุด 30 วินาที
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: 'คุณคือผู้ช่วยที่มีประโยชน์ ตอบให้สั้นและตรงประเด็น',
    messages: convertToModelMessages(messages),
    maxOutputTokens: 8192, // จำกัดผลลัพธ์ผ่าน Gateway
  });

  return result.toUIMessageStreamResponse();
}

บนฝั่ง client ให้เชื่อมต่อ hook useChat จาก @ai-sdk/react ซึ่งจะเรียกใช้งาน /api/chat และเรนเดอร์สตรีมข้อความให้อัตโนมัติ โดยเบื้องหลังจะเชื่อมต่อไปยัง Gonka แทน OpenAI

สคริปต์แบบไม่มี UI (Node, async-iterator สำหรับสตรีม):

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: 'เขียนไฮกุเกี่ยวกับการประมวลผลแบบกระจาย (distributed computing)',
});

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

พารามิเตอร์ของโมเดล ผ่าน Gateway มีโมเดลให้ใช้งานสองโมเดล ซึ่งทั้งคู่รองรับบริบท 200K tokens และจำกัดการตอบ (maxOutputTokens) สูงสุดถึง 8192 ต่อโมเดล:

  • moonshotai/Kimi-K2.6 — ค่าเริ่มต้น (Kimi K2.6);
  • MiniMaxAI/MiniMax-M2.7 (MiniMax M2.7).

หากไม่ได้กำหนด maxOutputTokens สำหรับคำขอที่ไม่ใช่สตรีม Gateway จะคืนค่าเริ่มต้นที่ 1500 tokens — สำหรับแชทแบบสตรีมมิ่งแนะนำให้กำหนดค่าไว้อย่างชัดเจน

การเปรียบเทียบค่าใช้จ่าย

Vercel AI SDK มักจะอยู่เบื้องหลังอินเทอร์เฟซแบบโต้ตอบ เช่น แชท, เอเจนต์, หรือผู้ช่วยในแอปฯ ข้อความแต่ละข้อความต้องดึงประวัติการสนทนาและขั้นตอนของเอเจนต์แต่ละขั้นก็ต้องใช้ context สำหรับเครื่องมือ ดังนั้นค่าใช้จ่ายจริงต้องคำนวณจากการโหลดงานจริง มาดูตัวอย่างเปรียบเทียบกัน:

สถานการณ์TokensAnthropic / OpenAIJoinGonka Gonka
ข้อความแชท 1 ครั้ง~3K$0.01 — $0.05$0.000014
สนทนา 20 รอบ~150K$0.50 — $2.25$0.00072
คำตอบ RAG (ค้นหา + สร้าง)~5K$0.015 — $0.05$0.000024
ขั้นตอนเอเจนต์พร้อม tool calling~10K$0.03 — $0.10$0.000048
10,000 คำขอต่อวัน~50M$150 — $500$0.24

ราคาของ JoinGonka อยู่ที่ประมาณ $0.003 ต่อ 1M tokens สำหรับ input และ output ราคาแพงกว่าประมาณสามเท่า สำหรับแอปที่มีการเรียกใช้งานหลายพันครั้งต่อวัน นี่คือความแตกต่างระหว่างบิลหลักหลายร้อยดอลลาร์กับบิลหลักไม่กี่เซนต์ ด้วยโควตาฟรี 10M tokens ก็เพียงพอที่จะทดสอบและปรับจูนโปรเจกต์ของคุณจนกว่าจะพร้อมใช้งานจริง

Tool calling และเอเจนต์

Vercel AI SDK อธิบายเครื่องมือต่างๆ ผ่านวัตถุ tools และ Schema zod แบบ declarative Kimi K2.6 รองรับการเรียกใช้ฟังก์ชันแบบเนทิฟ ดังนั้น AI SDK จึงได้รับ tool_calls ที่มีโครงสร้างโดยไม่ต้องพาร์สคำตอบที่เป็นข้อความ พารามิเตอร์ stopWhen: stepCountIs(n) อนุญาตให้ทำหลายขั้นตอนต่อเนื่องกัน โดยโมเดลจะเรียกใช้เครื่องมือ รับผลลัพธ์ และดำเนินการต่อ

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);

โมเดลจะเรียกใช้เครื่องมือ weather รับผลลัพธ์ และสร้างคำตอบสุดท้าย วงจรทั้งหมดมีค่าใช้จ่ายประมาณ $0.000048 ผ่าน Gonka เทียบกับ $0.03-0.10 ที่ Anthropic หรือ OpenAI สำหรับแอปพลิเคชัน Agent ที่คำขอของผู้ใช้แต่ละครั้งขยายเป็น 5-10 ขั้นตอน การประหยัดค่าใช้จ่ายในการผลิตสามารถวัดได้เป็นหลายพันดอลลาร์ต่อเดือน

หากคุณกำลังสร้างแอปพลิเคชัน AI ด้วย Python ลองดูแนวทางเกี่ยวกับ LangChain ซึ่งใช้แนวทางเดิมผ่านคลาสที่รองรับ OpenAI ได้

Vercel AI SDK + Gonka = แอปพลิเคชัน AI บน TypeScript ที่พร้อมใช้งานจริงในราคาประหยัด createOpenAICompatible เชื่อมต่อ Gateway ได้โดยไม่ต้อง fork, generateText และ streamText ทำงานได้ตามปกติ ส่วนการเรียกใช้ tool แบบเนทิฟและ Next.js route handlers ทั้งหมดนี้มีค่าใช้จ่ายเพียง $0.003/1M tokens แทนที่จะเป็น $2.5-15 จาก OpenAI และ Anthropic

ต้องการเรียนรู้เพิ่มเติมหรือไม่?

สำรวจส่วนอื่นๆ หรือเริ่มรับ GNK ทันที

รับ 10M โทเคนฟรี →