Agent Meteringと従来のSaaS従量課金(例:API呼び出し回数課金)は本質的にどう違いますか?
最大の違いは「単位コストが固定かどうか」です。従来のSaaS API課金はほぼ常に固定コストモデルで、/searchエンドポイントを1回呼ぶごとに$0.001、内容に関わらず同じコストです。バックエンドロジックが決定的だからです。
Agentはまったく違います。同じ「このDeFiプロトコルのリスクを分析して」というプロンプトでも、今回は3ターンの推論で結論に達し(コスト$0.02)、次回はツールが返したオンチェーンデータの形式異常でリトライと自己修正のループに陥り、9ターンかかって収束する(コスト$0.15)ことがあります。同じ入力で7.5倍のコスト差——これは従来のSaaSではほぼ起こりません。
この不確実性は課金設計に直結します。「リクエスト回数」で固定課金すればコスト変動の大きいタスクで赤字になり、「実消費」で精密課金すればユーザー体験が悪化します(次にいくらかかるか予測できない)。成熟したAgentプロダクトの多くは、基本料金で典型的なケースをカバーし、一定の消費閾値を超えたら追加課金するハイブリッドモデルに落ち着きます。
Agentがタスク途中でエラーにより崩壊し、未完了のまま中止した場合、すでに消費されたコストはどう課金すべきですか?
これはAgent Metering設計で最も見落とされやすく、紛争になりやすいシナリオです。3つの一般的な対応方法があります。
方式一:全額返金。未完了=無料、消費済みのLLM/ツールコストは会社が負担。ユーザー体験は最良で紛争は最少ですが、失敗率が高い場合(Prompt Injectionでエラー処理ループに頻繁に陥るなど)会社が継続的に損失を出し、信頼性改善へのインセンティブが失われます。
方式二:実消費に応じて課金。完了の有無に関わらず。コストを正確に反映しますが、ユーザーは「結果なしで支払う」ことに強く不満を持ち、クレーム率が上がります。
方式三(多くの成熟プロダクトが採用する折衷案):「無料リトライ枠」を設定——タスクが最初のN回のツール呼び出し以内で失敗すれば無料(システム問題とみなし会社が負担)、後期段階で失敗すれば(推論の大部分は完了したが最後のオンチェーン書き込みステップで失敗など)消費コストの50〜70%を課金します。ほとんどの計算価値がすでに生成されているためです。
技術実装上は、課金システムが「タスク状態機械」をサポートし、各タスクの到達段階を追跡して段階ごとに異なる返金ルールを適用する必要があり、単純な成功/失敗の二分法ではありません。
Agent Meteringシステムは「入力を操作してAgentの資源消費を異常に低くし、課金差額を裁定する」といった悪用をどう防ぎますか?
この種の悪用の典型パターン:課金モデルが「消費量に関わらずタスク完了で定額課金」の場合、悪意あるユーザーは最小資源でタスクを完了させようとし(意味を失うほど簡略化した指示を意図的に与えるなど)、固定価格と実際の極めて低いコストとの差額を裁定し、これを大量に繰り返します。
防御設計は3層あります。
入力品質の閾値:課金前に軽量モデルまたはルールで入力が「有効なタスク」(Agentが意味ある結果を出すのに十分な情報がある)を構成しているか判断します。閾値未満の入力は拒否または減額し、標準価格で課金しません。
異常消費パターンの検知:単一ユーザーのリクエストパターンを統計的に監視し、短時間に大量のリクエストが「中央値を大きく下回る消費」に集中している場合、これは裁定行為のシグナルです。トリガー後は手動審査またはそのユーザーへの動的な価格調整を行えます。
動的価格の下限:固定価格ではなく「min(固定基本価格, 実消費コスト×上乗せ倍率)」とします。ユーザーが入力を操作して消費を極小化しても、価格もそれに応じて実コスト近くまで下がり、裁定余地はほぼゼロに圧縮されます。価格の予測可能性を犠牲にしますが、裁定インセンティブを構造的に排除する、安全性とユーザー体験のトレードオフです。
マルチAgentシステム(Orchestrator + Sub-agent)で、「どのSub-agentが最もコストをかけたか」を総勘定だけでなく追跡できるようにMeteringをどう設計しますか?
マルチAgentのMetering設計の核心は、課金イベントが完全な実行経路タグ(trace context)を持つことであり、Orchestrator層だけで総額を1件記録するのではありません。
具体的な実装:タスク開始時にOrchestratorが一意のtrace_idを生成します。Sub-agentを呼び出すたびにtrace_idと新しいspan_id(このトレースチェーンのどの区間かを識別)を一緒に渡します。Sub-agent内部で資源を消費するたびに(LLM呼び出し・ツール呼び出し)、その消費記録をtrace_id+span_id+agent_nameと紐づけて課金イベントテーブルに書き込みます。
この設計は分散システムの可観測性(Observability)における成熟したDistributed Tracingの概念(OpenTelemetryのtrace/spanモデルに類似)をAgent課金シナリオに応用したものです。
この構造があれば、trace_id単位で集計してタスクの総コストを得られ(外部課金用)、agent_name単位でグループ集計して「どのSub-agentの平均消費が最も高いか」がわかり(内部最適化用)、span_id順に並べてタスク全体の実行タイムラインとコスト曲線を再構築できます(デバッグと事後分析用)。
このtrace contextがなければ、マルチAgentのMeteringは「今回のタスクで$Xかかった」というブラックボックスの総額しか見えず、コスト異常の発生源を特定することも、特定のSub-agentのコスト最適化を行うこともできません。
あるDeFi利回り最適化Agentプロダクトの Metering システム設計事例
ユーザーの資金をAave/Compound/Morpho間で自動的に移動し最適利率を探すAgentプロダクトのMetering設計:3種類のイベントタイプ——llm_call(モデル名・入出力トークン数を記録)、tool_call(get_protocol_ratesなどのツール名とそのサードパーティAPIコスト、例:DeFi Llama APIは無料だがAlchemy RPCノードはリクエスト課金)、onchain_write(実際のGas代を実行時のETH価格でUSD換算)。各イベントは発生した瞬間にPostgreSQLのmetering_eventsテーブルへ即座に書き込まれ(タスク完了後のバッチ書き込みではない)、途中で異常切断してもすでに発生した消費が失われません。課金ルール:基本サービスは無料(分析機能は無償)、Agentが実際に「移動」操作を実行し成功した場合のみ「節約した利差の15%」を徴収(例:年利3%から3.8%へ移動、資金$10,000、年間$80節約、課金$12)——これは価値報酬モデルであり、トークン単価制ではないため、ユーザーは内部の資源消費を理解する必要がありません。内部では対外的に価値報酬制であっても、llm_callとtool_callの実コストを完全に記録し、「この報酬モデルがLLM/Gasの実支出をカバーできているか」を算出します。「複数プール比較」タスクは平均$0.28消費(6プロトコルの並列クエリが必要)で報酬$8〜15に対し健全な比率でしたが、「異常データリトライ」タスクはAaveのAPIが時折フォーマットエラーを返し3〜4回のリトライを引き起こし平均$1.1に急騰、優先修正対象となりました。この事例は、対外課金モデル(ユーザーが見るもの)と内部Metering(会社がコスト計算と最適化に使うもの)はまったく異なるロジックで運用できますが、内部Meteringは正確でなければ「この価格モデルが実際に儲かっているか」を会社は把握できないことを示しています。
Agent Meteringの核心的なトレードオフは「課金の正確性 vs ユーザーの予測可能性」です。実消費に基づく精密課金(トークン/ツール/Gasを実費で請求)は会社が赤字にならないことを保証しますが、ユーザーはタスク開始前にいくらかかるか分からず体験が悪化し、「思ったより高い」という紛争が起きやすくなります。固定価格や範囲価格はユーザーに見通しを与えますが、「今回は特にコストが高かった」というリスクを会社側が負担し、高消費と低消費が長期的に相殺されることに依存します。もう一つのトレードオフは「リアルタイム書き込み vs システム負荷」です。ツール呼び出しごとに課金イベントを即座に書き込めばデータの完全性は保証されますが、データベースの書き込み頻度と遅延が増加します。推奨:対外的には固定または範囲価格でユーザーの認知負荷を下げつつ、内部ではリアルタイムで正確な記録を維持してコストを制御可能に保つ——「対外はシンプル、対内は精密」という階層的設計です。