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

ナビゲーション

▸ ここから始める 役割別

カテゴリー

ツール 54
用語集 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.7、DeepSeek V4 Flash、GLM-5.3 Flash)をそのまま使用でき、同じ streamText が使用可能です。入力100万トークンあたり $0.0062 であり、数十倍も安価です。

ステップ 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: 'Explain what a decentralized inference network is',
});

console.log(text);

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

代替案 — @ai-sdk/openai パッケージと createOpenAI({ baseURL, apiKey }) ファクトリー。どちらの方法も使えますが、OpenAIに属さないエンドポイントには、AI SDKのドキュメントは @ai-sdk/openai-compatible を推奨しています — 余計なOpenAI特有の前提を持ち込まないからです。

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

Vercel AI SDKの最大の売りは、レスポンスのストリーミング配信です。streamText 関数はトークンを即座にストリーミングし始め、toUIMessageStreamResponse() ヘルパーがNext.js App Routerのroute 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,
});

// allow streaming for up to 30 seconds
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: 'You are a helpful assistant. Answer briefly and to the point.',
    messages: convertToModelMessages(messages),
    maxOutputTokens: 8192, // Gateway output cap
  });

  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: 'Write a haiku about distributed computing',
});

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

モデルパラメータ。Gatewayでは3つのモデルが利用可能です:MiniMax M2.7はコンテキスト180Kトークン、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、reasoningモデル — 回答前に推論します)。

maxOutputTokens を指定しない場合、non-streamリクエストに対して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.0062で、出力はその約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: 'Get the weather in a city',
      inputSchema: z.object({ city: z.string() }),
      execute: async ({ city }) => ({ city, tempC: 17 }),
    }),
  },
  prompt: 'What is the weather in Moscow? Answer in one sentence.',
});

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.0062/1Mトークンで利用可能です。

もっと知りたいですか?

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

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