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

ナビゲーション

▸ ここから始める 役割別

カテゴリー

ツール 32
用語集 12

ツール

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

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

問題は他のLLMアプリケーションと同じく、プロバイダーのコストです。ストリーミングチャットインターフェースはメッセージごとに会話履歴を送信し、エージェントは何十ものステップでコンテキストを処理します。Anthropic ($3〜$15/1M) や OpenAI ($2.5〜$10/1M) の価格では、本番環境のささやかな個人プロジェクトでも、月額数百ドルの請求書になりかねません。

JoinGonka Gateway は、分散型ネットワークGonka 上の OpenAI 互換エンドポイントです。Vercel AI SDK は、フォークや独自のアダプターを必要とせず、OpenAI 互換のプロバイダーとして接続できます。モデルは同じ Kimi K2.6 で、streamText も同じですが、入力コストは1Mトークンあたり$0.003と、数百倍から数千倍安くなります。

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

JoinGonka APIキー: gate.joingonka.ai/register に登録してください。初回時に 10M の無料トークンを提供します。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-ваш-ключ
});

const { text } = await generateText({
  model: gonka('MiniMaxAI/MiniMax-M2.7'),
  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のルートハンドラーから直接ストリームを返します。

サーバー側のハンドラー 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, ストリームのasyncイテレータ):

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経由で2つのモデルが利用可能で、どちらもコンテキストは200Kトークン、出力上限(maxOutputTokens)はそれぞれ8192までです:

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

コスト比較

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

シナリオトークン数Anthropic / 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
1日10,000リクエスト (本番)~50M$150 — $500$0.24

JoinGonkaの価格は入力1Mトークンあたり約$0.003で、出力はその約3倍です。1日あたり数千リクエストを行うアプリケーションであれば、これは月額数百ドルの請求と数セントの請求との違いになります。10Mトークンの無料枠で、本番環境へ移行する前にプロジェクト全体を実行しデバッグするのに十分な量です。

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

Vercel AI SDKは、toolsオブジェクトとzodスキーマを通じてツールを宣言的に定義します。Kimi K2.6はネイティブな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ツールを呼び出し、結果を受け取って最終的な回答を生成します。このプロセス全体で、AnthropicやOpenAIの$0.03-$0.10に対し、Gonka経由では約$0.000048です。ユーザーのリクエストごとに5〜10ステップを展開するエージェントアプリケーションでは、本番環境でのコスト削減額は月額数千ドル規模になります。

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

Vercel AI SDK + Gonka = TypeScriptでのコスト効率の高いproduction-readyなAIアプリケーション。createOpenAICompatibleはフォークなしでGatewayを接続し、generateTextとstreamTextは通常通り動作します。ネイティブなtool callingとNext.js route handlersも、OpenAIやAnthropicの$2.5-15に対し、$0.003/1Mトークンで利用可能です。

もっと知りたいですか?

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

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