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

ナビゲーション

▸ ここから始める 役割別

カテゴリー

ツール 37
用語集 12

ツール

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

Vercel AI SDKは、TypeScriptおよびJavaScriptでAIアプリケーションを構築するための最も人気のある SDK です。単一のAPI generateText および streamText、UIへのストリーミング出力、ネイティブのtool calling、Next.js App Router用のすぐに使えるヘルパーなど、Webでのチャットボット、エージェント、および RAG パイプラインに必要なすべてが揃っています。

どのようなLLMアプリケーションでも共通の課題はプロバイダーのコストです。ストリーミングチャットインターフェースはメッセージごとに会話履歴を送信し、エージェントは数十ステップにわたってコンテキストを処理します。Anthropic ($3-15/1M) や OpenAI ($2.5-10/1M) の価格設定では、小規模な個人プロジェクトでも本番環境では月数百ドルの請求額になってしまいます。

JoinGonka Gateway は、分散型ネットワークGonka 上のOpenAI互換エンドポイントです。Vercel AI SDKは、フォークや独自のアダプターを必要とせず、OpenAI互換プロバイダーと同様に接続できます。商用ホスティングと同じオープンモデル(MiniMax M2.7DeepSeek V4 FlashGLM-5.3 Flash)をそのまま使用でき、同じ streamText が使用可能です。入力100万トークンあたり $0.0069 であり、数十倍も安価です。

ステップ 1: キーを取得し、プロバイダーを接続する

JoinGonka APIキー: gate.joingonka.ai/register からご登録ください。初回ボーナスとして3Mの無料トークンを提供します。Dashboardでプレフィックス 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('MiniMaxAI/MiniMax-M2.7'),
  prompt: '分散型推論ネットワークとは何か説明してください',
});

console.log(text);

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

代替案createOpenAI({ baseURL, apiKey }) ファクトリを持つ @ai-sdk/openai パッケージもあります。両方の方法で動作しますが、OpenAI以外のエンドポイントに対しては、AI SDKのドキュメントでは不要なOpenAI固有の前提条件を含まない @ai-sdk/openai-compatible が推奨されています。

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

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('MiniMaxAI/MiniMax-M2.7'),
    system: 'あなたは有能なアシスタントです。簡潔に、要点を押さえて回答してください。',
    messages: convertToModelMessages(messages),
    maxOutputTokens: 8192, // Gateway経由の出力上限
  });

  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('MiniMaxAI/MiniMax-M2.7'),
  prompt: '分散コンピューティングに関する俳句を書いてください',
});

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

モデルパラメータ。Gatewayを通じて3つのモデルが利用可能です:MiniMax M2.7は200Kトークンのコンテキスト、DeepSeek V4 Flashは380K、GLM-5.3 Flashは390Kです。レスポンスの上限(maxOutputTokens)は、MiniMax M2.7とGLM-5.3 Flashが8192、DeepSeek V4 Flashが32768です:

  • MiniMaxAI/MiniMax-M2.7 — デフォルト (MiniMax M2.7);
  • deepseek-ai/DeepSeek-V4-Flash-0731 (DeepSeek V4 Flash, コンテキスト 380K);
  • zai-org/GLM-5.3-Flash (GLM-5.3 Flash, 推論モデル — 回答前に思考します)。

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

コスト比較

Vercel AI SDKは通常、アプリケーション内のチャット、エージェント、アシスタントなどのインタラクティブなUIの背後で使用されます。各メッセージは対話履歴を引き継ぎ、各エージェントステップはツールコンテキストを伴います。そのため、実際のコストは1回のリクエスト単位ではなく、本番環境の負荷に基づいて計算されます。一般的なシナリオを比較してみましょう:

シナリオトークン数Anthropic / OpenAIJoinGonka Gonka
チャットメッセージ1件~3K$0.01 — $0.05$0.000028
20往復の対話~150K$0.50 — $2.25$0.0014
RAG応答 (検索 + 生成)~5K$0.015 — $0.05$0.000048
ツール呼び出しを含むエージェントステップ~10K$0.03 — $0.10$0.000096
1日10,000リクエスト (本番)~50M$150 — $500$0.48

JoinGonkaの価格は、入力1Mトークンあたり約$0.0069で、出力はその約3倍です。1日に数千リクエストを行うアプリケーションでは、数百ドルの請求と数セントの請求の差となります。無料の3Mトークンは、プロジェクトの初期リクエストを実行するのに十分な量です。

ツール呼び出しとエージェント

Vercel AI SDKは、tools オブジェクトと zod スキーマを使用してツールを宣言的に定義します。ネットワークのモデルはネイティブなfunction callingをサポートしているため、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 ツールを呼び出し、結果を取得して最終的な回答を作成します。Gonka経由の全体のサイクルコストは約$0.000048で、AnthropicやOpenAIの$0.03~0.10と比較して非常に低コストです。ユーザーからのリクエストが5~10ステップに展開されるエージェントアプリケーションの場合、本番環境での節約効果は月額数千ドルに達します。

PythonでAIアプリケーションを構築する場合は、LangChain のガイドをご覧ください。OpenAI互換クラスを通じて同じアプローチが可能です。

Vercel AI SDK + Gonka = TypeScriptで構築された、コスト効率の高い本番環境向けAIアプリケーション。createOpenAICompatibleでフォークなしにGatewayを接続可能。generateTextとstreamTextはそのまま動作し、ネイティブなtool callingやNext.js route handlersも、OpenAIやAnthropicの$2.5-15に対し、わずか$0.0069/1Mトークンで利用可能です。

もっと知りたいですか?

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

無料トークンを取得する →