最高水準のモデルを使うと、5回も使わないうちに1週間分を使い切る。その正体と、自分が見つけた3つの対策。
Photo by Stephen Dawson on Unsplash
「トークンがすぐになくなる」— これは、AIのAPIやツールを使い始めた人が最もよくぶつかる壁です。特に精度の良いモデルを使うと、あっという間に制限に引っかかります。この記事では、トークンがなくなる原因を整理し、実際にやっている対策を書きます。
- 精度の良いモデルを使うとすぐ制限に引っかかる人
- トークンがなぜそんなに早くなくなるのか知りたい人
- トークン消費を抑える具体的な方法を知りたい人
5回で1週間分を使い切る — 最高位モデルの現実
実際に体験したのは、Antigravity(GoogleのAIコーディングツール)でClaude Opusを使った時のことです。$20程度の手頃なプランで使っていたのですが、Claude Opusを使うと、下手をすると5回も使わないうちに1週間分を使い切ってしまう。指示の内容にもよりますが、これが最高位モデルの現実です。
なぜこんなに早くなくなるのか。実は、ここには2つの異なる要因が混ざっています。
1. トークン数(消費量)の問題:精度の良いモデルは、コンテキスト(文脈)を多く読み込み、長く詳細に回答するため、1回のやり取りで消費するトークンが多くなります。
2. 単価の問題:最高位モデルは、1トークンあたりの単価が高い。Claude Opus 5の出力は$25/MTok(約3,750円/100万トークン)。一方、Claude Haiku 4.5は$5/MTok(約750円)。同じトークンを消費しても、5倍のコスト差があります。
つまり、「トークンが早く減る」と感じているのは、トークン数が多いだけでなく、単価が高いから予算が早くなくなるという要因も大きい。この2つを区別して考えることが、対策の第一歩です。
トークン数の問題
精度の良いモデルは、コンテキストを多く読み込み、長く回答する。1回のやり取りで消費するトークンが多くなる。
単価の問題
最高位モデルは1トークンの単価が高い。Opus 5はHaiku 4.5の5倍。同じトークン数でも、コストが跳ね上がる。
コンテキスト問題 — 会話が長くなるほどトークンが増える
もう一つ、トークン消費を増やす大きな要因があります。それがコンテキスト問題です。
APIは前の会話を覚えていません(ステートレス)。そのため、文脈を維持するには毎回過去の会話履歴を一緒に送る必要があります。同じチャットでずっと喋り続けると、送る履歴が長くなり、入力トークンが雪だるま式に増えていきます。
例えば、1回目の質問が500トークンだとすると、10回目の質問では過去9回分の質問と回答(約5,000〜10,000トークン)を一緒に送る必要があります。これで入力コストが跳ね上がります。
OpenAIの公式ドキュメント(2026年9月時点)でも、この問題は明確に認識されており、いくつかの対策機能が用意されています。詳しくは後で書きます。
Photo by Luke Chesser on Unsplash
対策1:モデルを使い分ける — 賢いモデルは「考える時」だけ
一番効果的な対策は、モデルを使い分けることです。具体的には、賢いモデルは「考える時」だけ使い、実行は安いモデルに任せる。
実際にやっているのは以下のような使い分けです:
- 要件定義・仕様書作成:賢いモデル(Claude Opus等)で、全体の方向性を考えさせる
- 実装の計画立案:賢いモデルで、大きく実装する時の計画を立てさせる
- 実行:安いモデル(Gemini Flash等)で、計画に沿って実行させる
- 自分で方向性を考えるもの:安いモデルで十分なことが多い
- 何かを生成・考え出す必要があるもの:賢いモデルを使う
これで、賢いモデルを使う回数を減らしつつ、重要な場面では精度を確保できます。
ただし、ここで注意が必要です。安いモデルもどんどん賢くなっているということです。各社ともベースの底上げをしており、Flash等の安いモデルでも十分対応できることが増えています。だからこそ、状況を見て「これはオーバースペックではないか」と常に意識する必要があります。何をするかによって最適なモデルは変わるので、やりながら判断するしかありません。
対策2:チャットを切り替える — コンテキストを長くしない
2つ目の対策は、チャットを切り替えることです。指示の内容が変わる時は、新しいチャットを始めます。これで、過去の会話履歴が積み上がるのを防げます。
これは、OpenAIの公式ドキュメントで説明されている「Context Trimming(直近N往復だけ残す)」という手法と同じ方向性です。古い履歴を切り捨てて、直近の会話だけを残す。チャットを切り替えるのは、これの手動版と言えます。
ただし、チャットを切り替えると「AIが前の話を忘れる」という問題が起きます。これを解決するのが、次の対策です。
対策3:Markdownファイルでチャット間の整合性を取る
3つ目の対策は、Markdownファイルを活用して、チャット間で共通する情報を共有することです。これは私がAIと考えながら導き出した方法です。
具体的には以下のようにやっています:
- 共通するルールや命令をMarkdownファイルに書く
- これまでやってきたことをMarkdownファイルに随時記載する
- 新しいチャットを始める時に、そのMarkdownファイルを最初に読み込ませる
- これで、AIがチャットが変わっても「これまで何をやってきたか」「どんなルールで進めるか」を忘れにくくなる
実際にこれをやることで、AIがチャットが変わっても前の話を忘れることがグッと減りました。
ただし、これはあくまで私が見つけた我流の方法です。OpenAIの公式ドキュメント(2026年9月時点)を調べると、同じ目的を達成するための公式機能がいくつか用意されています。
- Responses API(
previous_response_id):サーバー側で会話状態を保持。毎回履歴を送る必要がない - Conversations API:永続的な会話オブジェクト。セッションをまたいで状態を保持
- Compaction:サーバー側で長い会話を自動圧縮。一定のトークン数を超えると自動的に要約
- Prompt Caching:同じプロンプトプレフィックスをキャッシュ。最大90%のコスト削減(1,024トークン以上で自動有効)
つまり、私のMarkdown共有は「手動でのContext Summarization(古い履歴を要約して残す)」と同じことをやっていました。方向性は正しいのですが、APIを使う場合は公式機能を使う方が効率的です。Markdownファイルの手動管理は、チャットAI(APIではなく)を使っている場合には有効な工夫ですが、APIを使うなら公式機能に頼る方が確実です。
Photo by Pankaj Patel on Unsplash
状況は変わる — 情報を集め続ける
最後に、すべての対策に共通して言えることがあります。それは「状況は変わる」ということです。
AIの進化は速く、安いモデルはどんどん賢くなっています。今日オーバースペックではないと思っていたモデルが、半年後には足りなくなるかもしれないし、逆に今日必要だった上位モデルが、半年後にはオーバースペックになるかもしれない。
だから、モデルの使い分けも、チャットの切り替えも、Markdown共有も、今の状況での最適解であって、ずっと正しいとは限りません。随時情報を集め、自分のやることに当てはめて、使い方が正しいかをブラッシュアップし続けるしかありません。
OpenAIの公式機能(Responses API、Compaction、Prompt Caching等)も、今後変わる可能性があります。公式ドキュメントを定期的に確認することが、最も確実な情報源です。
結論 — 3つの対策 + 情報収集
トークンがすぐなくなる問題に対して、今の自分ができる対策は以下の3つです。
1. モデルを使い分ける。賢いモデルは「考える時」(要件定義、計画立案)だけ使い、実行は安いモデルに任せる。ただし安いモデルも賢くなっているので、オーバースペックにならないよう常に意識する。
2. チャットを切り替える。指示の内容が変わる時は新しいチャットを始め、コンテキストが長くなりすぎるのを防ぐ。これは公式の「Context Trimming」と同じ方向性。
3. Markdownファイルで整合性を取る。共通のルールと経緯をMarkdownファイルにまとめ、新しいチャットの最初に読み込ませる。これは手動での「Context Summarization」。ただしAPIを使う場合は、公式機能(Responses API、Conversations API、Compaction等)を使う方が効率的。
そして、これらの対策は今の状況での最適解です。AIの進化は速いので、随時情報を集め、自分の使い方をブラッシュアップし続けることが、長期的には最も大切な対策だと思います。