LLMアプリの立ち上げで最も議論が荒れるのは、機能ではなく予算です。「月額でどれくらいかかりますか」と聞かれて即答できるエンジニアは多くありません。本記事ではDAU × 1人あたりリクエスト数 × 平均トークン数 × トークン単価という基本式をベースに、コスト試算フレームワーク、シナリオ別シミュレーション、予算超過を防ぐ監視設計までを実装付きで解説します。最後まで読めば、経営層への予算報告で堂々と数字を出せるようになります。

LLMアプリのコスト予測が難しい理由

LLMアプリのコスト予測が難しい理由は、大きく3つあります。第一に従量課金の世界だからです。従来のSaaSが月額固定だったのに対し、LLMはトークン単位の従量課金で、利用量が読めないとコストも読めません。第二にトークン数の見積もりが直感に反することです。日本語は英語よりトークン数が増えやすく、同じ文字数でも単価換算が1.5〜2倍違うケースがあります。第三に利用量の変動です。ユーザーのエンゲージメントが上がると利用量が跳ね上がり、コストも比例します。

加えて、初期設計の段階では「プロンプトが長くなる」「リトライが増える」「ツール呼び出しが連鎖する」といった、現実にしか分からないコスト増要因が見積もりに入りません。このため、初期は見積もりの1.5〜2倍の予算をバッファとして確保するのが実務的な安全策です。

コスト試算のフレームワーク

コスト試算の基本は、変数を分解して掛け合わせることです。下表の変数をそれぞれ見積もり、積算します。

変数定義見積もり方法注意点
DAU(日次アクティブユーザー)1日に利用するユニークユーザー数類似サービスのKPIから推定急成長時の過小見積に注意
リクエスト数/ユーザー/日1ユーザーが1日に投げるリクエスト数ユーザーリサーチ、ベータ計測ヘビーユーザーとの乖離
平均入力トークン数1リクエストあたりのプロンプト長テストケースの計測RAGコンテキストを含めると急増
平均出力トークン数1リクエストあたりの応答長ベータでの実測max_tokens設定で上限
モデル単価入力/出力の1Mトークン単価ベンダー価格表価格改定の履歴を把握
リトライ率エラー・検証失敗で再実行される割合オブザーバビリティで計測初期は2〜5%が典型
ツール呼び出し係数エージェントでのLLM呼び出しの連鎖数実運用から逆算数倍〜数十倍に膨らむ

これらを元にしたコスト試算スクリプトの例です。

from dataclasses import dataclass

@dataclass
class ModelPrice:
    name: str
    input_per_1m: float   # USD per 1M input tokens
    output_per_1m: float  # USD per 1M output tokens

PRICES = {
    "gpt-4o": ModelPrice("gpt-4o", 2.50, 10.00),
    "gpt-4o-mini": ModelPrice("gpt-4o-mini", 0.15, 0.60),
    "claude-3-5-sonnet": ModelPrice("claude-3-5-sonnet", 3.00, 15.00),
}

def monthly_cost(dau: int, req_per_user: int, input_tokens: int, output_tokens: int,
                 model: str, retry_rate: float = 0.03, days: int = 30) -> float:
    p = PRICES[model]
    requests_per_month = dau * req_per_user * days * (1 + retry_rate)
    input_cost = requests_per_month * input_tokens / 1_000_000 * p.input_per_1m
    output_cost = requests_per_month * output_tokens / 1_000_000 * p.output_per_1m
    return input_cost + output_cost

cost = monthly_cost(dau=1000, req_per_user=5, input_tokens=800, output_tokens=300, model="gpt-4o-mini")
print(f"月額コスト: ${cost:,.2f}")

シナリオ別コストシミュレーション

典型的なLLMアプリのシナリオごとに、月額コストの目安を試算します。いずれも2026年初頭のGPT-4o系の価格を前提としています。

シナリオDAUリクエスト/日平均I/Oトークンモデル月額コスト(USD)
社内FAQボット5003600 / 200gpt-4o-mini約$12
社内RAGチャット1,00053,000 / 500gpt-4o約$1,350
顧客向けサポートbot5,00041,500 / 400gpt-4o-mini約$270
文書分析バッチ10万件/日2,500 / 400gpt-4o-mini約$1,800
AIエージェント(5ステップ)20023,000 / 600(×5)gpt-4o約$1,620
コード生成アシスタント300202,000 / 800gpt-4o約$5,220

この表を見ると、AIエージェントやコード生成系はコストが跳ね上がりやすいことが分かります。特にエージェントは「1ユーザーリクエストあたりのLLM呼び出し数」が設計次第で5〜20倍になるため、見積もり時に内部ステップ数を必ず含めてください。

コスト監視とアラート設計

事前試算も大事ですが、本番運用ではリアルタイムの監視がより重要です。LLMのコストは急に跳ね上がることがあります――RAGのインデックスに巨大文書が入り、1リクエストで数十万トークンを消費するといった事故は実際に起きます。

import datetime
from collections import defaultdict

daily_cost = defaultdict(float)
DAILY_BUDGET_USD = 100.0

def log_request(model: str, input_tokens: int, output_tokens: int):
    p = PRICES[model]
    cost = (input_tokens * p.input_per_1m + output_tokens * p.output_per_1m) / 1_000_000
    today = datetime.date.today().isoformat()
    daily_cost[today] += cost
    if daily_cost[today] > DAILY_BUDGET_USD:
        send_alert(f"日次予算${DAILY_BUDGET_USD}超過: 現在${daily_cost[today]:.2f}")
    return cost

def send_alert(msg: str):
    # Slack Webhook等で通知
    print(f"ALERT: {msg}")

実運用では、日予算の80%到達で警告、100%で自動スロットリング、150%で自動停止、といった段階的な制御を実装することが多いです。特に「自動停止」の閾値は、ビジネスと協議して事前に合意しておくことが重要です。

予算超過を防ぐ5つの施策

  • レートリミット――ユーザーごと・APIキーごとに、時間あたりのリクエスト数を制限します。乱用や想定外のバースト利用を防げます
  • モデルルーティング――簡単な質問は軽量モデル、複雑な質問は高性能モデルに振り分けるLLMゲートウェイを導入します。平均コストが50〜80%下がるケースもあります
  • キャッシュの積極活用――セマンティックキャッシュとプロンプトキャッシュを併用し、繰り返しクエリのコストをゼロ近くにします
  • 出力トークン上限――max_tokensで出力長を制限します。タスクに合った適切な上限を設定するだけで、無駄な冗長出力を抑えられます
  • バッチAPIの活用――リアルタイム不要なタスクはバッチAPIに回し、50%程度の割引を受けます。特に文書分析バッチには必須です

まとめ

LLMアプリのコスト管理は「試算で備え、監視で守り、施策で攻める」の三段構えです。見積もりの精度は経験で上がるため、最初は保守的な見積もりと十分なバッファを置いてスタートすることをおすすめします。関連記事としてトークンとはLLMコスト構造推論コスト削減LLMオブザーバビリティもあわせてご参照ください。

よくある質問(FAQ)

Q1. LLMアプリの月額コストはどう見積もりますか?

A. 「DAU × 1人あたりリクエスト数 × 平均トークン数 × トークン単価」で基本コストを算出し、インフラ費用とサポートコストを加算します。初期は見積もりの1.5〜2倍の予算を確保することを推奨します。特にエージェント系はLLM呼び出しが連鎖するため、内部ステップ数も試算に含めてください。

Q2. コストが予算を超えないようにするには?

A. レートリミットの設定、コスト上限アラートの導入、モデルルーティング(軽量モデルの活用)、キャッシュの導入、出力トークン数の制限の5つが効果的な施策です。これらは単独で効きますが、組み合わせると相乗効果でコストを大幅に削減できます。

Q3. LLMアプリのコストは今後下がりますか?

A. はい、トークン単価は年々低下傾向にあります。GPT-4のリリース時と比較して、同等性能のモデルの料金は1年で50〜80%低下しています。ただし、利用量の増加がコスト削減を相殺する場合もあるため、継続的な監視が必要です。料金改定のたびに試算モデルを更新する運用を推奨します。