知識ベースのセクション ▾

ツール

ツール

Vercel AI SDK + Gonka AI — TypeScript での超低コスト AI アプリケーション

Vercel AI SDK は、TypeScript および JavaScript で AI アプリケーションを構築するための最も人気のある SDK です。generateText および streamText の統一された API、UI へのストリーミング配信、ネイティブなツール呼び出し、Next.js App Router 用の既製ヘルパーなど、チャットボット、エージェント、および RAG パイプラインを Web で構築するために必要なすべてが含まれています。

問題は、他の 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-あなたのキー
});

const { text } = await generateText({
  model: gonka('Qwen/Qwen3-235B-A22B-Instruct-2507-FP8'),
  prompt: '分散型推論ネットワークとは何か説明してください',
});

console.log(text);

apiKey パラメータは自動的に Authorization: Bearer jg-あなたのキー ヘッダーを追加します — 個別の設定は不要です。キーは環境変数 GONKA_API_KEY (例: .env.local) に保存し、コードには直接記述しないでください。

代替案createOpenAI({ baseURL, apiKey }) ファクトリを持つ @ai-sdk/openai パッケージ。どちらの方法も機能します。OpenAI に属さないエンドポイントの場合、AI SDK のドキュメントでは @ai-sdk/openai-compatible を推奨しています。これは、不要な OpenAI 固有の仮定を引きずらないためです。

ステップ 2: ストリーミングと Next.js Route Handler

Vercel AI SDK の主な特徴は、応答のストリーミング配信です。streamText 関数はトークンのストリーミングをすぐに開始し、toUIMessageStreamResponse() ヘルパーは Next.js App Router のルートハンドラからストリームを直接 UI に配信します。

サーバー側のハンドラ 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/react から useChat フックを接続します。これは自動的に /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 経由で3つのモデルが利用可能で、すべてのコンテキストは 128K トークンです。出力の上限 (maxOutputTokens) は異なります。

  • Qwen/Qwen3-235B-A22B-Instruct-2507-FP8 — デフォルト、最大 8192 トークンの出力。
  • moonshotai/Kimi-K2.6 — 最大 3072 (Kimi K2.6)。
  • MiniMaxAI/MiniMax-M2.7 — 最大 4096 (MiniMax M2.7)。

maxOutputTokens が指定されていない場合、非ストリームリクエストの場合、Gateway はデフォルトで最大 1500 トークンを返します。ストリーミングチャットの場合は、値を明示的に指定することをお勧めします。

コスト比較

Vercel AI SDK は通常、インタラクティブなインターフェース (チャット、エージェント、アプリケーション内のアシスタント) の背後で機能します。各メッセージは対話履歴を引き継ぎ、エージェントの各ステップはツールのコンテキストを引き継ぎます。したがって、実際のコストは1つのリクエストではなく、本番環境の負荷に基づいて計算されます。典型的なシナリオを比較してみましょう:

シナリオトークンAnthropic / OpenAIJoinGonka Gonka
チャットでの1つのメッセージ~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
1日あたり 10,000 リクエスト (本番環境)~50M$150 — $500$0.05

JoinGonka の料金は、入力トークン 1M あたり約 $0.0005 で、出力は約3倍高くなります。1日あたり数千のリクエストを処理するアプリケーションの場合、これは、数百ドルの請求と数セントの請求の差になります。無料の 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 で実現します。

もっと知りたいですか?

他のセクションを探索するか、Gonkaを今すぐ獲得し始めましょう。

10M の無料トークンを取得 →