日頃からChatGPT、Claude、Gemini、またはAPI経由のAIモデルを使っているなら、トークンという言葉を頻繁に目にするでしょう。
トークンとは、AIが処理するテキストの断片です。会話、プロンプト、ドキュメント、生成された応答が長ければ長いほど、使用されるトークンは増えます。
たまにしかAIを使わないなら、それほど気にならないかもしれません。しかし、アプリケーション、自動化、チャットボット、翻訳機、文章の大量生成などにAIを使う場合、トークンの使用量を制御しないとコストが膨らむことがあります。
ここでは、出力品質をあまり犠牲にせずにAIトークンを節約する簡単な方法をいくつか紹介します。
1. プロンプトを長くしすぎない
かなりよくある間違いは、プロンプトに指示を詰め込みすぎることです。
例:
バリ島についての記事を書いてください。
読みやすい記事にしてください。
英語で書いてください。
あまり形式ばらないでください。
人間らしい文章にしてください。
難しい言葉を使わないでください。
旅行者にわかりやすくしてください。
シンプルな文を使ってください。
実際には、いくつかの指示はまとめることができます。
例:
海外旅行者向けに、バリ島についてカジュアルで読みやすい英語の旅行記事を書いてください。
求められる結果は明確なままですが、送信されるトークン数は大幅に少なくなります。
シンプルな原則は次の通りです:
プロンプトは明確であるべきであり、長くてはいけません。
2. AIの応答の長さを制限する
短い回答だけが必要なら、AIに長すぎるテキストを生成させないでください。
次のような指示を追加できます:
最大150語で答えてください。
または:
説明なしで最終的な答えだけを教えてください。
これはAIをAPI経由で使う場合に非常に役立ちます。AIの出力も通常トークンとしてカウントされるからです。
出力が長いほど、コストが高くなります。
3. 必要な場合以外は会話全体を送信しない
チャットボットアプリケーションでは、トークン使用量が多くなる原因の1つは、チャット履歴全体を常にAIに送り返すことです。
たとえば、会話が50メッセージに達したとします。
毎回のリクエストで50メッセージすべてを送信すると、新しい質問があるたびにAIはそれらすべてを読み直す必要があります。
しかし、AIが必要とするのは最後の5〜10メッセージかもしれません。
解決策は、次の部分だけを送信することです:
システム指示
+
最後の5メッセージ
+
最新のユーザーメッセージ
より複雑なアプリケーションでは、古い会話を先に要約することもできます。
4. 長い会話には要約を使う
AIが以前の会話の文脈をまだ必要とする場合、すべてを完全に送信する必要はありません。
たとえば、前回の会話が10,000トークンだったとします。
すべてを再送信する代わりに、次のような要約を作成します:
ユーザーはNext.jsとLaravelを使ってヴィラ予約アプリを開発中。
現在の進捗:
- 認証は完了
- 予約APIは完了
- カレンダー連携は開発中
- ユーザーはTypeScriptではなくJavaScriptを好む
その要約は数百トークンしか使わないかもしれませんが、AIに十分な文脈を提供します。
この方法は、長い会話を行うチャットボットに非常に効果的です。
5. タスクに応じてモデルを選ぶ
すべてのタスクが最も先進的なAIモデルを必要とするわけではありません。
次のような単純なタスクには:
- 翻訳
- 分類
- メタディスクリプションの作成
- テキストの整理
- データ抽出
- カテゴリ判定
- タグ作成
- 感情分析
通常は小さめのモデルで十分です。
より強力なモデルは次のようなタスクに適しています:
- 複雑な分析
- コーディング
- 計画
- 推論
- 複雑な文書の読み取り
- 大量データに基づく意思決定
良い戦略は、1つのアプリケーション内で複数のモデルを使い分けることです。
例:
翻訳 → 小さいモデル
分類 → 小さいモデル
記事生成 → 中くらいのモデル
複雑な推論 → 大きいモデル
このようにして、AIコストをよりうまく管理できます。
6. 不要なデータを送信しない
たとえば、AIに商品説明を作成させたいとします。
製品データ全体を次のように送信しないでください:
{
"id": 8293,
"created_at": "...",
"updated_at": "...",
"internal_code": "...",
"database_id": "...",
"name": "Villa Bumi",
"bedroom": 4,
"location": "Kerobokan",
"description": "...",
"internal_notes": "...",
"staff_id": "...",
"supplier_id": "..."
}
AIが次の部分だけを必要とするなら:
{
"name": "Villa Bumi",
"bedroom": 4,
"location": "Kerobokan",
"description": "..."
}
その部分だけを送信します。
AIに送るデータがクリーンであればあるほど、無駄になるトークンは少なくなります。
7. 過度に大きなJSONを避ける
JSONはアプリケーションとAIの間の通信に便利です。
問題は、JSON形式はフィールド名が繰り返されるため、かなりのトークンを消費することです。
例:
{
"villa_name": "Villa A",
"villa_location": "Seminyak",
"villa_bedroom": 4
}
データが数千行ある場合、フィールド名だけでもトークン使用量が大きくなります。
大量のデータには、よりシンプルな形式の方が効率的な場合があります。
例:
Villa A | Seminyak | 4BR
Villa B | Umalas | 3BR
Villa C | Canggu | 5BR
AIとあなたのアプリケーションが理解しやすい形式にしてください。
8. 大規模なドキュメントにはRAGを使う
何百もの記事やドキュメントがある場合、ユーザーが質問するたびにすべてを送信しないでください。
RAG(Retrieval-Augmented Generation) システムを使用します。
基本的な考え方:
ユーザーの質問
↓
関連ドキュメントを検索
↓
重要な部分をいくつか取得
↓
それらの部分をAIに送信
↓
AIが回答を生成
たとえば、データベースに1,000件の記事があるとします。
ユーザーが次のように尋ねます:
空港送迎の料金はいくらですか?
システムは空港送迎について説明しているドキュメントだけを取得します。
AIが1,000件すべての記事を読む必要はありません。
トークンを節約できるだけでなく、通常は回答の関連性も高まります。
9. データベースからのデータ量を制限する
AIがデータベースからデータを取得する場合も同じことが言えます。
たとえば、50,000件の予約があるとします。
次のように直接送信しないでください:
SELECT * FROM bookings;
質問がこれなら:
8月の予約は何件ですか?
データベースに先にフィルタリングさせた方が良いです。
例:
SELECT *
FROM bookings
WHERE check_in >= '2026-08-01'
AND check_in < '2026-09-01';
AIが予約数だけを必要とする場合でも、データベースが直接カウントできます:
SELECT COUNT(*)
FROM bookings
WHERE check_in >= '2026-08-01'
AND check_in < '2026-09-01';
データベースに適した処理はデータベースに任せましょう。
すべてをAIに投げないでください。
10. すでに存在するデータをAIに生成させない
たとえば、アプリケーションがすでに次のことを知っているとします:
チェックイン: 8月10日
チェックアウト: 8月15日
宿泊日数を知りたいだけなら、実際にはAIは必要ありません。
次のような計算:
8月15日 - 8月10日 = 5泊
はコードで直接行う方が良いです。
AIは、言語能力や推論能力が本当に必要なタスクに使うべきです。
次のような単純なことは:
- 計算
- フィルタリング
- 並べ替え
- 日付のフォーマット
- データ変換
- 簡単なバリデーション
通常はアプリケーション内で直接行う方が安くて速いです。
11. 頻繁に使うAIの結果をキャッシュする
同じ質問がよく来るなら、キャッシュの使用を検討してください。
たとえば、ユーザーがよく次のように尋ねます:
チェックインは何時ですか?
情報が常に同じなら、毎回AIを呼び出す必要はありません。
以前の結果を保存しておけます。
考え方:
ユーザーリクエスト
↓
キャッシュを確認
↓
結果がある?
├── はい → 以前の結果を使用
└── いいえ → AIにリクエスト → キャッシュに保存
キャッシュはトラフィックが多いアプリケーションに非常に役立ちます。
12. 例をあまり多く提供しない
プロンプト内の例は、AIが希望する形式を理解するのに役立ちます。
しかし、例が多すぎるとトークン使用量も増えます。
たとえば、20件の記事例があるとします。
必ずしもすべてを送信する必要はありません。
通常は次のように提供するだけで十分です:
最良の例を1〜3つ
あなたが望む出力スタイルを最もよく表す例を選んでください。
13. 必須プロンプトと任意プロンプトを分ける
大きなシステムプロンプトがある場合は、各指示をもう一度確認してみてください。
次のように自問します:
AIは本当にすべてのリクエストでこの指示を必要としますか?
もしそうでなければ、その指示は削除するか、必要なときだけ送信することができます。
最初は3,000トークンあったシステムプロンプトも、出力を大きく変えずに800〜1,500トークンに削減できることがあります。
アプリケーションが何千ものリクエストを処理する場合、そのような節約はかなり重要になります。
14. トークンの使用量を監視する
月末のAI請求額だけを見ないでください。
各リクエストのトークン使用量を記録することをお勧めします。
例:
機能:記事ジェネレーター
入力トークン:1,240
出力トークン:1,850
合計トークン:3,090
次に、他の機能と比較します:
翻訳
平均:850トークン
記事ジェネレーター
平均:3,500トークン
カスタマーサポート
平均:6,200トークン
これにより、どの機能が最もトークンを使用しているかがわかります。
15. リクエストあたりのコストを計算する
商用アプリケーションでは、重要な数値の1つがリクエストあたりのコストです。
例:
1リクエスト = 20円
もし次のような場合:
1日あたり100リクエスト
それはおよそ:
1日あたり2,000円
しかし、次のような場合は:
1日あたり100,000リクエスト
コストは次のようになります:
1日あたり2,000,000円
だからこそ、アプリケーションに多くのユーザーが増え始めると、小さな最適化でも大きな影響を与えることがあるのです。
最も効果的な戦略の組み合わせ
トークンをより効率的に使いたいなら、次のようなフローを使うことができます:
ユーザーリクエスト
↓
AIなしで処理できるか?
↓
はい → アプリケーションで処理
↓
いいえ
↓
関連データだけを取得
↓
タスクを実行できる最も安いモデルを使う
↓
出力の長さを制限
↓
可能なら結果をキャッシュに保存
このようなシステムでは、AIは本当に必要なときだけ使われます。
結論
トークンの節約は、AIを愚かにしたり、プロンプトをできるだけ短くしたりすることを意味しません。
必要なのは、最終結果に価値を加えない情報を削除することです。
最も効果的な最適化のいくつかは次の通りです:
- プロンプトを簡潔にする
- 出力の長さを制限する
- チャット履歴全体を送信しない
- 古い会話を要約する
- タスクに応じてモデルを選ぶ
- 必要なデータだけを送信する
- 大規模なドキュメントにはRAGを使う
- データベースでフィルタリングする
- 単純なタスクにはコードを使う
- キャッシュを使う
- リクエストあたりのコストを監視する
AIを大規模に使う場合、1リクエストあたり数百トークンを節約するだけで、大幅な節約につながります。
結論として、AIが実際に読む必要のないデータを処理するためにAIを使わないことが重要です。
著者
Wilan
バリ・アイランド・テクノの常駐寄稿者であり、テクノロジー、プログラミング、ソフトウェアエンジニアリングの世界に関する知識を積極的に共有しています。