はじめに
最近、AIエージェントを使って実装や調査をする機会が増えました。
非常に便利なのですが、使い続けていると利用上限に達することがあります。
「トークンを節約したほうがいい」とは聞くものの、その仕組みを理解しないまま使っていました。
今回はトークンに焦点を当てて、整理していきます。
そもそもトークンとは?
トークンとは、簡単に言うと
「AIが文章を読み書きするときに使う単位」
です。
AIは文章をそのまま扱っているわけではなく、一定のルールで細かく分割して処理しています。
たとえば、
今日はいい天気ですね
という文章も、そのまま1つのデータとして扱うのではなく、
いくつかのトークンに分割されます。
ここで注意したいのが、
1文字 = 1トークンではない
1単語 = 1トークンでもない
ということです。
文章がどのようにトークンへ分割されるかは、使用するモデルやTokenizerによって異なります。
そのため、まずは
「AIは文字数ではなく、トークンという単位で文章を扱っている」
と理解しておけば十分です。
トークンはどこで使われる?
AIとのやり取りでは、大きく分けて2つのトークンがあります。
Input Token
AIが読む情報です。
たとえば、
- 自分が入力したプロンプト
- 会話の履歴
- AIに読ませたコード
- ドキュメント
- ツールの実行結果
などです。
Output Token
AIが生成する情報です。
たとえば、AIから返ってくる説明やコードなどが該当します。
つまり、
入力
↓
Input Token
↓
AI
↓
Output Token
↓
回答
というイメージです。
「AIに長い文章を書かせるとトークンを使う」というのは分かりやすいですが、
大量の情報を読ませることでもトークンは使われます。
短い質問でもトークンを使う?
長いやり取りをしたあとに、
じゃあ、それ修正して
とだけ送ったとします。
入力した文章自体はとても短いのですが、AIが回答するためには、
これまでの会話
+
コードやドキュメント
+
各種指示
+
今回の質問
などの情報が必要になる場合があります。
この、AIが回答するために参照する情報を コンテキスト(Context) と呼びます。
つまり、
今回入力した文字数 ≠ AIが今回処理する情報量
ということです。
AIエージェントはなぜトークンを多く使うのか?
通常のチャットなら、
質問
↓
AI
↓
回答
というやり取りが中心です。
一方、AIエージェントに
この不具合を調査して修正して
とお願いすると、裏側では、
コードを調べる
↓
必要なファイルを読む
↓
原因を考える
↓
コードを修正する
↓
テストする
↓
結果を確認する
↓
必要なら再度修正する
といった処理が行われることがあります。
その過程で、AIはコードやツールの実行結果などを何度も読みながら判断します。
そのため、
自分は1回しか指示していなくても、AI側では多くの情報を処理している
ということがあります。
AIエージェントが便利な一方で、トークン消費が大きくなりやすい理由の一つです。
では、どうやってトークンを節約する?
単純にプロンプトを短くすればよいわけではありません。
たとえば、
いい感じに直して
とだけ伝えると、AIは「どこを?」「どう直す?」を判断するために、
広い範囲を調査する必要があるかもしれません。
逆に、
UserService.java の updateUser() を修正してください。
目的:〇〇
変更対象:updateUser()
変更対象外:DB設計
と伝えたほうが入力自体は長くなりますが、AIの無駄な探索ややり直しを減らせる可能性があります。
トークンを無駄にしないポイントは、大きく4つです。
- 読ませすぎない
:対象ファイルや調査範囲を限定する - 考えさせすぎない
:目的・ゴール・変更対象を明確にする - 出力させすぎない
:「説明は簡潔に」など必要な出力だけ求める - やり直させない
:必要な条件を最初に伝え、認識違いによる再実装を減らす
AIが必要な情報に集中できるようにすることが重要です。
まとめ
今回調べてみて、トークンについて次のように整理できました。
トークン
└─ AIが文章を扱う単位
Input Token
└─ AIが読む情報
Output Token
└─ AIが生成する情報
Context
└─ AIが回答するために参照する情報
AI Agent
└─ 調査・判断・実行・確認などを繰り返すため、
多くの情報を処理することがある
AIエージェントを使っていると、つい
「とりあえずAIに全部渡して考えてもらおう」
となりがちでした。
目的やゴールを人間が言語化し、そのうえで必要な情報はしっかり渡す。
不要な情報や処理は減らし、進む手段をAIに任せる。
それがトークンの節約だけでなく、AIを上手く使うことにもつながるのかもしれないな
と思いました。