지식 기반 섹션 ▾

도구

도구

Vercel AI SDK + Gonka AI — 저렴한 TypeScript AI 애플리케이션

Vercel AI SDK는 TypeScript 및 JavaScript에서 AI 애플리케이션을 구축하기 위한 가장 인기 있는 SDK입니다. 단일 API generateTextstreamText, UI로의 스트리밍, 네이티브 도구 호출, Next.js App Router용 기성 도우미는 챗봇, 에이전트 및 RAG 파이프라인에 필요한 모든 것입니다.

문제는 다른 모든 LLM 애플리케이션과 동일합니다. 공급자 가격입니다. 스트리밍 채팅 인터페이스는 각 메시지에 대화 기록을 보내고, 에이전트는 수십 단계에 걸쳐 컨텍스트를 전달합니다. Anthropic($3-15/1M) 및 OpenAI($2.5-10/1M)의 가격으로는 겸손한 애완동물 프로젝트조차 한 달에 수백 달러의 청구서로 바뀝니다.

JoinGonka Gateway분산형 Gonka 네트워크 위에 있는 OpenAI 호환 엔드포인트입니다. Vercel AI SDK는 포크하거나 자체 어댑터 없이 다른 모든 OpenAI 호환 공급자처럼 여기에 연결됩니다. 동일한 Qwen3-235B 모델, 동일한 streamText이지만 입력 1M 토큰당 $0.0005로 수백에서 수천 배 저렴합니다.

1단계: 키를 받고 공급자 연결

JoinGonka API 키: gate.joingonka.ai/register에 등록하십시오. 시작 시 10M 무료 토큰을 제공합니다. 대시보드에서 jg- 접두사가 붙은 키를 생성하십시오.

패키지 설치. 사용자 지정 OpenAI 호환 엔드포인트의 경우 Vercel AI SDK는 @ai-sdk/openai-compatible 공급자를 권장합니다:

npm install ai @ai-sdk/openai-compatible

최소 연결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('Qwen/Qwen3-235B-A22B-Instruct-2507-FP8'),
  prompt: '분산 추론 네트워크가 무엇인지 설명해 주세요',
});

console.log(text);

apiKey 매개변수는 자동으로 Authorization: Bearer jg-your-key 헤더를 추가합니다. 별도의 설정이 필요하지 않습니다. 키는 코드 대신 GONKA_API_KEY 환경 변수(예: .env.local)에 저장하세요.

대안createOpenAI({ baseURL, apiKey }) 팩토리를 사용하는 @ai-sdk/openai 패키지. 두 방법 모두 작동합니다. OpenAI에 속하지 않는 엔드포인트의 경우 AI SDK 문서는 @ai-sdk/openai-compatible을 권장합니다. 이는 불필요한 OpenAI 특정 가정을 끌어오지 않기 때문입니다.

2단계: 스트리밍 및 Next.js 라우트 핸들러

Vercel AI SDK의 주요 기능은 응답 스트리밍입니다. streamText 함수는 즉시 토큰 스트리밍을 시작하며 toUIMessageStreamResponse() 도우미는 Next.js App Router의 경로 핸들러에서 직접 준비된 스트림을 반환합니다.

서버 핸들러 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('Qwen/Qwen3-235B-A22B-Instruct-2507-FP8'),
    system: '당신은 유용한 조수입니다. 간결하고 요점만 말하세요.',
    messages: convertToModelMessages(messages),
    maxOutputTokens: 8192, // Gateway를 통한 Qwen3-235B 상한
  });

  return result.toUIMessageStreamResponse();
}

클라이언트에서는 @ai-sdk/reactuseChat 훅을 연결합니다. 이 훅은 /api/chat에 자체적으로 액세스하고 메시지 스트림을 렌더링합니다. 백엔드는 OpenAI 대신 Gonka와 통신합니다.

UI 없는 스크립트 (Node, 스트림의 비동기 이터레이터):

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: '분산 컴퓨팅에 대한 하이쿠를 써줘',
});

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

모델 매개변수. Gateway를 통해 세 가지 모델을 사용할 수 있으며, 모든 모델의 컨텍스트는 128K 토큰입니다. 응답 상한선(maxOutputTokens)은 다음과 같이 다릅니다:

  • Qwen/Qwen3-235B-A22B-Instruct-2507-FP8 — 기본값, 8192 토큰까지 출력;
  • moonshotai/Kimi-K2.63072까지 (Kimi K2.6);
  • MiniMaxAI/MiniMax-M2.74096까지 (MiniMax M2.7).

maxOutputTokens가 지정되지 않은 경우, 스트림이 아닌 요청에 대해 Gateway는 기본적으로 최대 1500 토큰을 반환합니다. 스트리밍 채팅의 경우 값을 명시적으로 지정하는 것이 좋습니다.

비용 비교

Vercel AI SDK는 일반적으로 대화형 인터페이스(채팅, 에이전트, 애플리케이션의 지원) 뒤에 있습니다. 각 메시지는 대화 기록을 끌어내고, 각 에이전트 단계는 도구 컨텍스트를 끌어냅니다. 따라서 실제 비용은 단일 요청이 아닌 프로덕션 부하를 기준으로 계산됩니다. 일반적인 시나리오를 비교해 보겠습니다.

시나리오토큰Anthropic / OpenAIJoinGonka Gonka
채팅의 한 메시지~3K$0.01 — $0.05$0.000003
20개 응답으로 구성된 대화~150K$0.50 — $2.25$0.00015
RAG 응답 (검색 + 생성)~5K$0.015 — $0.05$0.000005
도구 호출을 이용한 에이전트 단계~10K$0.03 — $0.10$0.00001
하루 10,000건 요청 (프로덕션)~50M$150 — $500$0.05

JoinGonka의 가격은 입력 1M 토큰당 약 $0.0005이며, 출력은 약 3배 더 비쌉니다. 하루에 수천 개의 요청이 있는 애플리케이션의 경우, 이는 수백 달러의 청구서와 센트 단위의 청구서 사이의 차이입니다. 10M 무료 토큰은 프로젝트를 프로덕션에 출시하기 전에 완전히 실행하고 디버그하기에 충분합니다.

도구 호출 및 에이전트

Vercel AI SDK는 tools 객체와 zod 스키마를 통해 도구를 선언적으로 설명합니다. Qwen3-235B는 네이티브 함수 호출을 지원하므로 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('Qwen/Qwen3-235B-A22B-Instruct-2507-FP8'),
  stopWhen: stepCountIs(5),
  tools: {
    weather: tool({
      description: '도시의 날씨를 확인합니다.',
      inputSchema: z.object({ city: z.string() }),
      execute: async ({ city }) => ({ city, tempC: 17 }),
    }),
  },
  prompt: '모스크바 날씨는 어때? 한 문장으로 대답해줘.',
});

console.log(text);

모델은 weather 도구를 호출하고 결과를 얻은 다음 최종 답변을 생성합니다. Gonka를 통해 전체 주기 비용은 약 $0.00001이며, Anthropic 또는 OpenAI의 경우 $0.03-0.10입니다. 사용자 요청이 5-10단계로 확장되는 에이전트 애플리케이션의 경우 프로덕션에서의 절감액은 한 달에 수천 달러에 달합니다.

Python으로 AI 애플리케이션을 구축하는 경우 LangChain 가이드를 참조하십시오. 동일한 OpenAI 호환 클래스 접근 방식을 사용합니다.

Vercel AI SDK + Gonka = 프로덕션 준비 TypeScript AI 애플리케이션을 저렴하게 사용할 수 있습니다. createOpenAICompatible는 포크 없이 Gateway를 연결하고, generateText 및 streamText는 평소와 같이 작동하며, 네이티브 도구 호출 및 Next.js 경로 핸들러는 모두 OpenAI 및 Anthropic의 $2.5-15 대신 1M 토큰당 $0.0005에 불과합니다.

더 자세히 알고 싶으세요?

다른 섹션을 탐색하거나 지금 GNK를 얻기 시작하세요.

1천만 무료 토큰 받기 →