9月11日、Roger Martinezが「Three ways to save a billion tokens with Firebase AI Logic and on-device AI for Chrome」と題した記事を公開した。Firebase AI LogicとChromeのオンデバイスAIを組み合わせてクラウドトークン消費を大幅に削減する3つの実践的手法を解説している。
AIアプリをスケールさせると、トークンコストが急速に膨らむ。ユーザー数が増えるにつれ、個々のAPIコールが積み重なり、無視できない金額になる。Chromeに搭載されたGemini Nano(ローカル実行可能な小型モデル)を活用すれば、一部のワークロードをクライアント側に移し、クラウドへのトークン送信を減らせる。
Firebase AI LogicはPrompt API(Chrome)を介してオンデバイスモデルとクラウドモデルを統一的に扱えるSDKで、後述するInferenceModeの指定だけで両者を切り替えられる。
手法1:セレクティブルーティング(Selective Routing)
要約タスクのように、小型のオンデバイスモデルで十分な結果が得られる処理は、クラウドに送らない。
記事では「記事のあらすじからタイトル候補を生成する」アプリを例に挙げ、クラウドモデルとオンデバイスモデルの出力が実用上ほぼ同等だったと報告している。この場合、本来131トークン(入出力合計)を消費していた処理のコストがゼロになる。
実装はPREFER_ON_DEVICEモードを指定するだけだ。オンデバイスが利用できない場合は自動的にクラウドへフォールバックする。
import { initializeApp } from "firebase/app";
import { getAI, getGenerativeModel, AgentPlatformBackend, InferenceMode } from "firebase/ai";
// ※ 以下は元記事のコードをそのまま引用。AgentPlatformBackend の API 名称等は
// Firebase AI Logic の公式ドキュメントで最新版を確認されたい。
export async function generateAnyResponse(prompt){
const app = initializeApp();
const ai = getAI(app, { backend: new AgentPlatformBackend() });
const model = getGenerativeModel(ai, {
mode: InferenceMode.PREFER_ON_DEVICE,
inCloudParams: {
model: "gemini-3.5-flash-lite",
systemInstruction: "instructions for cloud model",
},
onDeviceParams: {
createOptions: {
initialPrompts: [
{
role: "system",
content: [{ type: "text", value: "instructions for on-device model" }],
},
],
},
},
});
const result = await model.generateContent(prompt);
return result.response.text();
}
クラウドを一切使いたくない場合はONLY_ON_DEVICEを指定する。オンデバイスが利用不可の際は例外をスローする。
手法2:プロンプト要約(Prompt Summarization)
ユーザーの入力は冗長になりがちだ。クラウドモデルに送る前に、オンデバイスモデルで要点だけを抽出すれば、入力トークンを削減できる。
記事のデモでは、カスタマーサポートのチャットトランスクリプトをオンデバイスで要約してからクラウドへ送ったところ、入力トークンを44%削減(約80トークン削減)できたとしている。
手法3:セッション圧縮(Session Compacting)
3手法のなかで、チャットアプリに特有かつ見落とされがちなコスト要因を攻略するのがセッション圧縮だ。
マルチターンのAIチャットでは、会話のたびに「これまでの全履歴」がコンテキストとしてモデルへ送られる。ユーザーとAIのやり取りが増えるほどペイロードが肥大化し、トークン消費が雪だるま式に増える。
セッション圧縮は、この履歴エントリをオンデバイスモデルで要約・置き換えることで、コンテキストをスリム化する手法だ。記事のデモでは、モデル側のメッセージのみを圧縮し、ユーザー発言はそのまま保持したところ、セッション履歴のトークン消費を71%削減できたとしている。
圧縮の粒度はユースケース次第で調整が必要だ。全メッセージを圧縮すればトークン削減量は最大になるが、精度が落ちるリスクがある。最近のメッセージは原文のまま残す、重要情報をシステム指示で保持させるなど、バランスの取り方が鍵になる。
利用条件と使い分けの判断基準
現時点の制約として、これらの手法が動作するのはChrome 139以降かつGemini Nanoが動作するデバイスに限られる。初回実行時にモデルのダウンロードが発生するため、若干の待機時間が生じる場合もある。
また、オンデバイスモデルは要約・パターン認識は得意だが、複雑な多段階推論や大規模コンテキストの処理はクラウドに分がある。記事では以下の使い分けを示している。
オンデバイスを優先すべき場面:
- センシティブなデータをローカルで処理したい(プライバシー重視)
- オフライン・低帯域環境での動作を保証したい
- リアルタイムのテキスト整形や基本的な要約など、高頻度・低複雑度のタスク
クラウドを優先すべき場面:
- 多段階の論理推論や高度なコーディング支援
- 大規模ドキュメントやコードベース全体を対象とする処理
まとめ
10億トークンの削減は一夜にして達成するものではなく、ユーザー規模の拡大とともに累積していく数字だ。1リクエストあたり数十〜百数十トークンの節約でも、多数のユーザーが日常的に利用するアプリでは、その積み重ねが「billion」単位のスケールに到達する。セレクティブルーティング・プロンプト要約・セッション圧縮の3手法はそれぞれ単独でも効果があり、組み合わせることでトークンコストの増加を構造的に抑えられる。
オンデバイスAIの動作デモはセッション圧縮のインタラクティブデモで試せる。実装の詳細はFirebase AI Logicドキュメントを参照されたい。
詳細はThree ways to save a billion tokens with Firebase AI Logic and on-device AI for Chromeを参照していただきたい。