生成AI機能を本番で動かし始めたら、「利用料が想定の何倍にもなった」「ユーザーの質問は短いのに請求が膨らむ」——LLMのコストは、実装の作り方次第で大きく変わります。単価の安いモデルに変えるだけでは解決しないことも多く、どこでトークンを消費しているかを切り分けて対処する必要があります。

この記事では、LLMの利用料を最適化する実装の勘所を、コストが膨らむ原因ごとに切り分けて潰す手順で解説します。なお、外部委託した場合の費用相場や見積もりの読み方はLLMアプリ開発を外部委託する費用相場で扱っており、本記事は実装側でどう利用料を抑えるかに絞ります。Web実装の全体像は生成AI機能をWebに組み込む実装ステップもあわせてご覧ください。

なお筆者・馬込は、生成AIを使ったシステムをサーバーレス構成で構築し、運用コストを抑える設計に取り組んできました。本記事はその実務目線でまとめています。

結論:コストは「入力トークン・モデル選択・呼び出し回数」で決まる

LLMの利用料は、ざっくり「処理したトークン量 × モデル単価 × 呼び出し回数」で決まります。請求が跳ねたら、この3つのどれが効いているかを切り分けます。多くの場合、犯人は見落とされがちな入力トークンです。順に潰していきます。

手順1:入力トークンの膨張を抑える

意外に見落とされるのが、入力側のトークンです。ユーザーの入力が短くても、裏で大量のトークンを送っていることがよくあります。

膨張しやすい箇所 対処
会話履歴を毎回全部渡す 直近だけ、または要約して渡す
長いシステムプロンプト 冗長な指示を削り、簡潔にする
RAGで文書を詰め込みすぎ 上位の関連文書だけに絞る

「ユーザーの質問は1行なのに請求が想定の何倍」という事態は、たいていここが原因です。出力より入力のほうがコストを押し上げているケースは珍しくありません。

手順2:モデルを用途で使い分ける

すべての処理を最上位モデルで動かすと、利用料は跳ね上がります。タスクの難易度に応じてモデルを使い分けます

  • 分類・要約・抽出などの定型処理 → 軽量モデル
  • 最終的な回答生成など品質が要る処理 → 高精度モデル
  • 一つの機能でも、内部の工程ごとにモデルを分ける

「最終生成だけ高精度、前段の下処理は軽量」といった振り分けを設計に織り込むだけで、品質を保ったままコストを大きく下げられます。これは最初から設計に入れておくのが理想です。

手順3:呼び出し回数と無駄を減らす

同じ入力に対して何度もAPIを呼んでいないか、不要な呼び出しがないかを見直します。

  • 同一・類似の入力結果をキャッシュして再利用する
  • 不要な再生成(ユーザー操作のたびの再呼び出しなど)を減らす
  • 一度のリクエストで済むものを、分割して複数回呼んでいないか確認する

呼び出し回数はそのまま料金に効きます。キャッシュや呼び出し設計の見直しは、精度を落とさずにコストを削れる手です。

手順4:どこにいくらかかっているかを見える化する

3つの手を打つ前に——あるいは打ちながら——どこにコストが乗っているかを見えるようにすることが、実は最短距離です。見えないまま削ろうとすると、効かない場所を削って労力だけ使うことになります。

見るべき粒度は、次のとおりです。

見る単位 分かること
機能ごと どの機能が請求の大半を占めているか(削る優先順位)
入力/出力の内訳 入力側が膨らんでいるのか、出力側なのか
モデルごと 高精度モデルをどこで使いすぎているか

多くの場合、コストは一部の機能に偏ります。全機能を均等に最適化するより、いちばん食っている機能を1つ直すほうが、効果は大きく、手間は小さい。これはパフォーマンス改善と同じ発想です。

そして、削った後にもう一度測ること。「モデルを軽くしたのに、思ったほど安くならない」というときは、たいてい入力トークンが主因で、モデル単価は脇役だった、というケースです。測らずに手を打つと、こうした空振りに気づけません。まず見える化、次に一点集中——これがコスト最適化でも効く順番です。

よくある落とし穴

  • 出力トークンだけ気にする:入力側の膨張を見落とします。会話履歴やプロンプト長を先に確認します。
  • 全部を最上位モデルで処理する:料金が跳ねます。用途でモデルを使い分けます。
  • キャッシュを使わない:同じ処理を繰り返し課金されます。再利用できるものはキャッシュします。
  • 単価だけで判断する:単価の安いモデルでも、トークンを大量に使えば高くつきます。総量で見ます。
  • 見える化せずに削り始める:効かない場所を削って労力だけ使います。まずどの機能が食っているかを把握します。
  • 上限やレート制限を設けない:バグや連打で請求が跳ねます。1リクエストの上限と、利用者ごとの回数制限を先に入れます。

よくある質問

Q. 安いモデルに変えれば確実にコストは下がりますか? A. 必ずしもそうではありません。単価が下がっても、精度不足で再質問や再生成が増えれば、かえって呼び出し回数とトークンが増えることがあります。単価だけでなく「タスクに必要な品質」とのバランスで選びます。

Q. コストと精度はトレードオフですか? A. 一部はそうですが、設計で両立できる余地が大きいです。用途に応じたモデルの使い分けや、入力トークンの削減は、精度を落とさずにコストを下げられます。まず無駄なトークンと呼び出しを潰すのが先です。

Q. コストを継続的に抑えるにはどうすればいいですか? A. トークン量と呼び出し回数を記録・監視し、急増に気づける状態にしておくことです(評価・監視の始め方参照)。実装の最適化に加えて、使われ方の変化を見続けることで、請求の跳ね上がりを早期に防げます。


LLMのコスト最適化は、①入力トークンの膨張を抑える ②モデルを用途で使い分ける ③呼び出し回数と無駄を減らす、という順で切り分ければ、品質を落とさずに請求を抑えられます。単価を下げる前に、まずどこでトークンを使っているかを見る。これが効く順番です。

自社プロダクトの生成AI機能のコスト設計や実装の相談は、開発支援について相談するからお問い合わせください。