
AI機能のコスト上限を設計する|使いすぎを止める予算ガード
朝いちばんにAIの利用画面を開いたら、昨夜の分だけグラフが跳ね上がっていた。
誰も使っていないはずの時間帯です。ログをたどると、バッチのリトライが夜通し回っていた、あるいはエージェントが同じ作業を延々と繰り返していた——。原因が分かってほっとする一方で、「これ、月末の請求でどう説明しよう」と胃が重くなる。AIを業務システムに組み込んでいると、一度はこういう朝があるものです。
AIの呼び出しは、1回ごとにお金がかかり、しかも回数に天井がない。ここが普通のサーバー代と違うところです。だから「使われすぎない作り」を、機能そのものと同じくらい大事に設計しておく必要があります。
結論:AI機能のコストは、1か所の上限だけで守ろうとしない。①呼び出しごと(1回の出力の長さ・入力の大きさ・エージェントのステップ数)、②利用者ごと(1人あたり1日の回数やトークン量)、③機能全体(日次・月次の予算)の3段で上限を置くのが基本です。提供元の管理画面にある上限・通知は最後の砦として併用し、それだけに頼らない。そして上限に当たったときの振る舞い(軽いモデルに切り替える・後で処理する・正直に伝える)と、人がその場で止められる手順を先に決めておく。上限は「AIを使わせない仕組み」ではなく、安心して使ってもらうための仕組みです。
全部を一度に入れなくて大丈夫です。 今日は「1回の出力の上限が設定されているか」を確かめるだけでも、いちばん大きな穴はふさがります。
何が起きているのか——AIのコストは「静かに、一晩で」膨らむ
まず、使いすぎがどこから来るのかを整理させてください。現場でよく見かけるのは、だいたい次のどれかです。
- リトライの暴走:タイムアウトやエラーのたびに再試行する作りで、回数の上限がない。相手側が混み合っている間、ずっと投げ続けてしまいます。
- エージェントのループ:「直す→試す→また直す」を自分で回すAIエージェントが、終わりの条件に届かず同じ作業を繰り返す。1回ごとに前の会話を抱えて送るので、回を追うごとに1回あたりの量も増えていくのが厄介なところです。
- 入力が大きすぎる:添付ファイルや検索結果を丸ごと渡していて、たまに来る巨大な入力で1回の量が跳ね上がる。
- 想定外の使われ方:便利だと分かった人が、スクリプトで大量に呼ぶ。悪意がなくても、1人で全体の大半を使ってしまうことがあります。
- 外からの悪用:公開している機能に、大量の問い合わせが機械的に送られる。
どれも、昼間に人が見ていれば気づけるのに、夜や休日に起きると朝まで誰も気づかないという共通点があります。そして多くの提供元の請求・利用量の画面は、反映までに時間差があることが多い。「画面を見て止める」だけでは、間に合わない場面が出てきます。
ここで、仮の数字で一度だけ計算してみます(単価はあくまで説明用です。実際の料金は利用中サービスの公式情報で確認してください)。
- 社内300人が、1日平均10回、1回あたり約2円の機能を使う → 300人 × 10回 × 2円 = 1日6,000円。営業日22日で 月132,000円。
- 予算を月15万円で取っていたとします。
- ある夜、リトライの暴走で 1秒に1回 の呼び出しが 8時間 続いた → 28,800回 × 2円 = 57,600円。
一晩で、月の予算の約4割(57,600 ÷ 150,000 ≒ 38%)が消える計算です。金額の大小は現場ごとに違いますが、「一晩で月の予算の何割かが溶ける」という構造は、AI機能ならどこでも起こりえます。
だからこそ、人が寝ている間も効く上限が要ります。順番に見ていきましょう。料金そのものの見積もり方はAI APIの料金とレート制限を見積もる|本番前の型に整理しているので、「1回あたり何円か」がまだ分からない場合は、先にそちらで原価を出しておくと話が早いです。
上限は3段で置く——呼び出しごと・利用者ごと・機能全体

上限は、守る範囲の違う3段で置くと考えやすくなります。どれか1つで全部を守ろうとすると、厳しすぎて普段使いを邪魔するか、緩すぎて暴走を止められないか、のどちらかになりがちです。
① 呼び出しごとの上限——1回が大きくなりすぎないように
いちばん内側で、いちばん効くのがここです。しかも、設定を1行足すだけで済むものが多い。
- 出力の長さの上限:多くのAPIには、1回に生成する出力の最大トークン数を指定する設定があります。用途に見合った値を必ず入れておきます。要約なら短め、文書の下書きなら長め。未指定のまま本番に出ていないか、まず確かめたいところです。
- 入力の大きさの上限:添付や検索結果を渡す前に、文字数やトークン数を数えて、上限を超えたら切り詰めるか、利用者に「長すぎます」と返す。巨大な入力が1回来ただけで跳ね上がる、を防ぎます。
- リトライ回数の上限:再試行は「最大3回まで、間隔を少しずつ空ける」のように、回数の天井を必ず決める。リトライの作り方はAI出力が不安定なときのフォールバック設計|リトライの型、二重実行を避ける考え方はAIに冪等性の設計を相談する|リトライで二重実行させない型にまとめています。
- エージェントのステップ数の上限:自分で何度も呼び出しを重ねるエージェントには、「最大何ステップまで」「1つのタスクで使ってよい量はここまで」を必ず持たせます。届かなければ、そこで止めて人に返す。止め方の全体像はAIエージェントの自走はどこまで任せる?止め方と戻し方と地続きです。
② 利用者ごとの上限——1人で全体を使い切らないように
次は、人ごと(またはAPIキーごと・テナントごと)の上限です。
- 1人あたり1日の回数、またはトークン量に天井を置く。先ほどの例なら、平均10回の機能に「1人1日50回まで」と置いておけば、ある人の画面でリトライが暴走しても、その人の分は50回 × 2円 = 100円で止まります。
- 天井は「普段の利用の数倍」から始める:普段の使い方を邪魔しない高さに置くのがコツです。実際の利用分布を1〜2週間見てから決めると、外しにくくなります。
- 当たった人には、理由と戻る時刻を伝える:「本日の利用上限に達しました。明日0時に戻ります」と出るだけで、問い合わせはかなり減ります。
- 必要な人には引き上げられる道を用意する:一律に絞ると、本当に必要な人の仕事が止まります。申請で上げられる、役割ごとに上限を変えられる、くらいの柔らかさがあると揉めません。
外部に公開している機能なら、ここに短い時間あたりの回数制限(1分に何回まで、など)も加えます。機械的な大量アクセスは、1日の上限より先にこちらで止まります。
③ 機能全体の上限——予算そのものを守る
いちばん外側が、機能全体(またはサービス全体)の日次・月次の予算です。
- アプリ側で使った量を数える:多くのAPIは、応答にその回の入力・出力のトークン数を返してくれます。これに単価をかけて、自分たちの側で積み上げておく。提供元の請求画面より早く、正確に近い数字が手元に持てます。
- 段階で動きを変える:たとえば月の予算に対して 50%で通知、80%で担当者に警告、100%で新しい呼び出しを止める(または軽い動きに切り替える)。いきなり止めるのではなく、手前で気づける段を作っておくと、慌てずに済みます。
- 日次の上限も置く:月の予算だけだと、一晩の暴走に気づくのが月末になります。「1日に使っていいのは月予算の何割か」を決めておくと、先ほどの例のような夜の跳ね上がりを、その日のうちに止められます。
数え方や、どの指標をログに残すかはAI機能の効果測定|導入後に見るログと指標の設計の考え方がそのまま使えます。
提供元の上限・通知は「最後の砦」として
多くのAI提供元やクラウドの管理画面には、月の利用上限や、使用額の通知を設定できる仕組みがあります。これは必ず設定しておきたいものです。ただし、現場で押さえておきたい点があります。
- 「止まる」のか「通知だけ」なのかは、サービスによって違う:上限に達したら呼び出しを拒否するもの、メールで知らせるだけのもの、両方あります。クラウドの予算機能は通知が中心のことも多いです。
- 反映に時間差があることがある:利用量の集計が数分〜それ以上遅れて反映される場合、その間の分は止まりません。
- 止まり方を選べない:提供元側で止まると、すべての機能が一斉に止まることがあります。大事な機能も、そうでない機能も一緒にです。
ここは仕様が更新されやすい部分なので、いま使っているサービスの公式ドキュメントで、上限の効き方と反映のタイミングを一度確認してください。そのうえで、提供元の上限は「アプリ側の上限をすり抜けたときの最後の砦」として、アプリ側の上限より少し高めに置いておくのが落ち着く形です。
あわせて、APIキーを機能ごと・環境ごとに分けておくと、どの機能が使いすぎているかがすぐ分かり、問題のキーだけを止められます。キーの分け方と権限の絞り方はAIエージェントに本番環境と認証情報を渡す前に|権限の絞り方が参考になります。
上限に当たったとき、どう振る舞うか
上限を置いたら、次に決めたいのが当たったときの振る舞いです。ここを決めずに上限だけ入れると、利用者から見て「突然壊れた」機能になってしまいます。
選択肢は、だいたいこの4つです。機能の性質に合わせて選びます。
- 軽いモデルに切り替える:品質は少し落ちても、止まらないほうがいい機能に。切り替えたことは、ログに残しておきます。
- 後で処理する(キューに積む):急がない要約や分類なら、翌日の予算で処理する、という逃げ方ができます。
- キャッシュ済みの答えを返す:よくある問い合わせなら、過去の答えで十分なことも。作り方はAI応答のキャッシュでコストと速度を改善|効かせ所の見極めにまとめています。
- 正直に伝えて止める:「現在、利用が集中しているため一時的に停止しています。○時に再開します」。止まった理由と戻る時刻が書いてあるだけで、利用者の受け止め方はずいぶん変わります。
どれを選ぶにしても、上限で止まったことは必ず担当者に届くようにしておきます。止まったこと自体が、何かが起きているサインだからです。
人がその場で止められる手順を、先に作る
最後に、いちばん地味で、いちばん心強いのがこれです。「おかしい」と気づいた人が、その場でAI機能だけを止められる手順。
- 機能ごとのオン・オフのスイッチ:設定ひとつでAI呼び出しを止め、上の「止まったときの振る舞い」に切り替わるようにしておく。フィーチャーフラグで作っておくと、デプロイなしで切り替えられます(AI機能を本番に出すのが怖い|機能フラグと段階リリースの型の仕組みがそのまま使えます)。
- APIキーを無効化する手順:管理画面のどこで、誰が、どう止めるかを1枚にまとめておく。夜中に探さなくて済むように。
- 誰が止めていいかを決めておく:「止めていいのか迷って、結局朝まで待った」がいちばんもったいない。おかしいと思ったら止めていい、と先に合意しておくと、気づいた人が迷わず動けます。
具体例——社内向けAI要約機能に3段の上限を入れてみる
イメージしやすいように、先ほどの数字の機能で追ってみます。社内300人、1日平均10回、1回約2円、月予算15万円の要約機能です。
- 呼び出しごと:出力の上限を要約に見合った長さに設定。入力は一定の文字数を超えたら「長すぎるので分けてください」と返す。リトライは最大3回、間隔を空けて。
- 利用者ごと:普段の利用を2週間見たら、多い人でも1日30回前後だった。そこで1人1日50回を上限に。当たったら「本日の上限に達しました。明日0時に戻ります」と表示し、必要な人は申請で引き上げ。
- 機能全体:応答のトークン数から金額を積み上げ、日次で7,500円(月予算の5%)を超えたら担当者に通知、日次1万円で新規呼び出しをキューに回す。月次は50%・80%で通知、100%で停止。
- 提供元側:月の上限を18万円程度、アプリ側より少し高めに設定し、通知先を担当者2人に。
- 止める手順:機能のオン・オフをフラグで用意し、手順を1枚にまとめて共有。
この形なら、あの「一晩で57,600円」のケースは、夜のうちに日次の通知が飛び、1万円に届いた時点でキューに切り替わります。朝に見るのは、跳ね上がったグラフではなく、「昨夜、上限で止まりました」という1件の通知です。原因を直す時間は、ちゃんと残っています。
明日からやること(まずこの3つ)
大がかりな仕組みは要りません。順番はこれで大丈夫です。
- 出力の上限とリトライ回数の上限が入っているか、コードを確かめる(30分):未設定の呼び出しが見つかったら、そこに値を入れるだけ。いちばん効いて、いちばん簡単です。
- 提供元の管理画面で、月の上限と使用額の通知を設定する:通知先は1人ではなく2人に。止まるのか通知だけなのかも、このとき公式ドキュメントで確認します。
- 応答のトークン数を、機能ごとにログへ1行残す:これがあれば、次に「利用者ごと」「機能全体」の上限を決めるときの材料がそろいます。
一度で全部そろえなくて大丈夫です。 今日1つ目を確かめて「ちゃんと入っていた」と分かったなら、それも立派な前進です。
AI機能のコスト上限チェックリスト
入れる前と、入れた後にさっと確認します。全部に○が要るわけではなく、気になる所だけで十分です。
呼び出しごと
- すべての呼び出しに、出力の長さの上限を設定しているか
- 入力の大きさを数えて、上限を超えたら切り詰める・断る処理があるか
- リトライに回数の上限と、間隔を空ける仕組みがあるか
- エージェントに、ステップ数や1タスクあたりの使用量の上限があるか
利用者ごと
- 1人(またはキー・テナント)あたりの1日の上限を決めたか
- 上限は、普段の利用を見たうえで、邪魔しない高さに置いたか
- 上限に当たった人に、理由と戻る時刻が表示されるか
- 必要な人が上限を引き上げてもらえる道があるか
- 外部公開しているなら、短い時間あたりの回数制限もあるか
機能全体
- 応答のトークン数から、アプリ側で使用額を積み上げているか
- 日次の上限も置いているか(月次だけになっていないか)
- 50%・80%など、止まる手前で気づける段があるか
提供元側
- 月の上限と使用額の通知を設定したか(通知先は2人以上か)
- 「止まる」のか「通知だけ」なのか、反映の遅れを公式ドキュメントで確認したか
- APIキーを機能ごと・環境ごとに分けているか
止まったとき・止めるとき
- 上限に当たったときの振る舞い(軽いモデル・キュー・キャッシュ・正直に伝える)を決めたか
- 上限で止まったことが担当者に届くか
- 機能ごとにAI呼び出しを止められるスイッチがあるか
- 誰が止めていいかを、先に合意しているか
この記事のまとめ
AIのコストが一晩で膨らんでしまったとしても、それはあなたの不注意ではありません。回数に天井のない呼び出しを、天井のないまま動かしていた——まだその手当てをしていなかっただけです。
やることは、意外と地味です。出力の上限を入れて、リトライに天井を置いて、人ごとと全体の上限を足して、止まったときの振る舞いを決める。 提供元の上限は最後の砦として、少し高めに。
そして、上限があるからこそ、「好きに使ってみてください」と胸を張って言えるようになります。「AIを活用しろ」と言われる現場で、安心して使ってもらう土台を作る。それは、AIに追われるのではなく、AIを自分たちの手で扱える状態にしておく仕事だと思います。

AIの使いすぎを止める仕組みは、誰かに褒められることの少ない仕事です。でも、何も起きなかった朝は、ちゃんとあなたが作ったものです。
今日、出力の上限を1行確かめたなら、それはもう予算ガードの始まりです。