AIエージェントを動かし始めて、思ったより請求額が大きくて驚いたことはありませんか。エージェントはツールを呼ぶたびに、それまでの会話を丸ごと送り直します。そのため、何も考えずに作るとコストがどんどん膨らみます。
この記事では、コストを後から削るのではなく最初に設計する考え方を、公式料金を使った試算付きで解説しています。
まずは「1タスク単価」で数える
- トークン数ではなく「1タスクいくら」に換算する
- 分母は成功したタスク数にする(失敗した分の費用も含めて考える)
- 会話履歴は毎ターン送り直すので、入力はターン数の二乗に近い形で増える
プロンプトキャッシュは「並べ方」が9割
- 変わらないものを前に置く: ツール定義 → システムプロンプト → 履歴 → 今回の入力
- システムプロンプトの先頭に「現在日時」を入れると、毎回キャッシュが外れる
- 外れ続けると書き込み単価(1.25倍)で払い続けることになり、キャッシュなしより高くなる
試算(Claude Sonnet 5、10ターンのタスク):
| 構成 | 1タスク合計 |
|---|---|
| キャッシュなし | $0.425 |
| 正しく効く | $0.146 |
| 毎回外れる | $0.519 |
安いモデルが安いとは限らない
- Haiku 4.5は4,096トークン未満だとキャッシュされない
- 短いプロンプトでは、キャッシュが効くSonnet 5のほうが安くなる例がある
- 「安いモデル → ダメなら上位モデル」の二段構えは、やり直しの割合が高いと逆に高くつく
予算の上限はアプリ側で持つ
- AWS Budgetsは更新に8〜12時間かかるので、暴走を止めるには遅すぎる
- DynamoDBの条件付き更新で、呼び出し前に「最悪ケースの金額」を仮押さえする
- 70%で通知、90%で縮退、100%で停止して人に引き継ぐ
記事本文では、Pythonの実装コードと、稟議にそのまま使える月額上限の出し方まで書いています。
※2026年9月時点の公開情報に基づきます。金額は実測ではなく公式単価からの試算です。
▼記事本文
https://shinichi.noguchi.jp.net/blog/2026-09-28-agent-cost-engineering.html