Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

AIコスト按分:CFOの問いにタグ付けでは答えられない

このページはEnglishDeutschEspañolFrançaisItalianoPortuguêsでもご覧いただけます。

Jul 5, 20266 min read
Vadim Solovey

About Vadim Solovey

Founded DoiT in 2011 and have been here ever since — in every flavor of CTO, co-CEO, and now CEO. I started my career in 1999 building data centers before anyone called it "the cloud," and I've spent the two decades since trying to deliver on what the cloud was actually supposed to be. I still write code most weeks.

My personal page

先日、あるCFOが財務責任者にこう尋ねました。「OpenAIの請求額を膨らませているのは、どの顧客?」財務責任者にはタグ付けの戦略もFinOpsツールも、OpenAIの月次請求書もそろっていました。それでも答えられませんでした。請求書には合計額が一つあるだけ。タグ付けシステムには、そもそも紐付ける対象がありません。アプリケーションコードはAPIを直接叩いて応答を受け取るだけで、コストセンターも顧客IDも機能フラグも介在しません。あるのはトークンの入出力と、月末に届く一行の請求だけです。

これこそ、AI支出がFinOps Frameworkの中に生み出した按分の空白です。ケイパビリティとしての「Allocation(按分)」は、リソースごとにタグ・プロジェクト・アカウントが必ず紐付くコンピュートやストレージを前提に組み立てられてきました。ところがトークン呼び出しには、そのどれもありません。支出の単位である1回のAPIリクエストは、タグ付けが依存するはずのメタデータを一切携えていないのです。顧客別・機能別・エージェント別のコストを把握したいのであれば、按分の起点を課金レイヤーからトラフィックレイヤーへと移すしかありません。

なぜタグ付けではAIコスト按分を解決できないのか

AI支出でタグ付けが行き詰まるのは、トークン呼び出しにはタグを付ける相手そのものが存在しないからです。従来のクラウド按分はこうでした。EC2インスタンスにteam=platformとタグを付ければ、稼働時間の分だけコストがplatformチームに流れます。タグはリソースに宿り、リソースがコストを生む。この鎖は途切れません。

AI APIコールはそうはいきません。アプリケーションがopenai.chat.completions.create()を呼んでも、タグを付けるリソースがそもそもありません。あるのはリクエストとレスポンス、そしてOpenAI側で記録されたトークン数だけ。クラウドプロバイダーはこの呼び出しを目にすることもなく、タグ付けシステムが触れる余地もありません。月末、OpenAIは組織単位で1通の請求書を送ってきます。モデル別に内訳が付くことはあっても、手に入る情報はそれで全部です。

FinOps FoundationはAllocationをコアケイパビリティと定義していますが、このフレームワークはタグ付けできる単位が存在することを暗黙の前提にしています。SaaS型のAIプロバイダーには、その前提が成り立ちません。AnthropicもBedrockも構造は同じです。プロバイダーのダッシュボードは支出をAPIキーやモデル単位でしか分解せず、リクエストを発生させた顧客や機能では区切ってくれません。仮にチームごとにAPIキーを分けても、顧客単位で分けるとなれば、ディレクトリサービス並みに数千本のキーを立てて運用することになります。

EC2向けのタグ付けの定石をそのままOpenAIに持ち込んだFinOps担当者が、結局CFOと同じ「合計値」に戻ってきてしまうのは、これが理由です。按分は成立していないのです。

Key takeawayタグは紐付ける先があってこそ機能します。トークン呼び出しにはその先がないため、タグベースの按分ではAI支出を顧客や機能に落とし込めません。

3つのチーム、3つの問い、1通の請求書

同じAI請求書が社内で呼び起こす問いは3種類あり、そのいずれもプロバイダーの課金データだけでは答えが出ません。

財務が知りたいのはユニットエコノミクスです。顧客1社あたりの提供コストはいくらか。上位顧客が月40ドル分のClaude呼び出しを発生させ、99ドルのサブスクリプションを払っているなら、月2ドルしか呼び出さない顧客とはマージン構造が根本的に違います。顧客別の按分がなければ、粗利計算は当て推量の域を出ません。

プロダクトが知りたいのは機能単位のROIです。トークンコストに見合う機能はどれか。要約機能は月8,000ドルでリテンションを支えているかもしれません。実験的なエージェントは月22,000ドルかかっている割に、利用者は40人ということもあり得ます。どの機能が請求書のどの部分を占めているのかが見えなければ、プロダクトは優先順位を決められません。

CFOが知りたいのは、数字が動いた理由です。Anthropicの請求額が前月比で倍になったとき、誰かが説明できなければなりません。新規顧客の流入なのか、プロンプトの変更か、自己ループに陥った暴走エージェントか。請求書はそのどれも語りません。示されるのは合計値だけです。

生の課金データをFinOpsダッシュボードに取り込んでも、これらの問いにはひとつも答えられません。それは請求書の再表示にすぎず、レポーティングレイヤーであって按分レイヤーではないからです。FinOps Frameworkは「Automation, Tools, & Services」を、新興の支出カテゴリにおけるAllocationも含むケイパビリティを支えるソフトウェアと位置付けています。AIについては、その自動化がリクエストそのものに踏み込む必要があります。ビジネスコンテキストが宿っているのは、そこだけだからです。

Key takeawayプロバイダーの請求書が示すのは合計値だけです。財務・プロダクト・CFOが求めているのは按分であり、両者はまったく別のケイパビリティです。

Cloud bill shouldn't be a mystery

One platform for AI and Cloud optimization.

トラフィックレベル按分は実際に何をするのか

トラフィックレベル按分は、AIリクエストが発生するたびにその中身を読み取り、トークン数を発生源の顧客・機能・エージェントに紐付けます。集約後の請求書から按分を逆算するのではなく、リクエストが投げられたその瞬間、コンテキストが消える前に捕まえるのです。

実運用はこう流れます。アプリケーションがプロンプトを添えてClaudeを呼び出す。リクエストはゲートウェイあるいはプロキシを経由し、ペイロードが検査され、認証トークンから顧客ID、リクエストパスから機能名、呼び出し元サービスからエージェント識別子が付与される。リクエストはそのままAnthropicへ渡り、レスポンスが戻る。ゲートウェイは、付与した各ディメンションに対してトークン数をログに残します。月末に手元に残るのは、Anthropicからの一つの数字ではなく、任意のビジネス軸でグルーピングできる数千件の按分済みイベントです。

この仕組みはOpenAI、Anthropic、Bedrockのいずれでも成立します。トラフィックのパターンが共通しているからです。どのプロバイダーもレスポンスにトークン数を返し、どのリクエストもアプリケーションレベルのコンテキストを運びます。按分ロジックはコードとプロバイダーの間に置かれるため、タグを持たせるためにアプリケーションコードを書き換える必要はありません。顧客別のコストが欲しければ顧客別に、エージェント別のコストが欲しければエージェント別に出せます。

これはタグ付けというより、オブザーバビリティに近い設計思想です。だからこそツールの姿も変わります。タグベースのFinOpsツールはCURファイルを取り込みたがりますが、トラフィックレベル按分ツールはリクエストパスの中に居場所を求めます。アーキテクチャが違えば、ケイパビリティも別物です。この転換の重要性については、Why traditional FinOps breaks down with AI workloadsで以前掘り下げていますので併せてご覧ください。

Key takeaway按分はトラフィックレイヤーに置くほかありません。トークン数とビジネスコンテキストが同時に存在するのは、そこだけだからです。

FinOps Frameworkにおける位置付け

AIコスト按分は新しいダッシュボードの話ではありません。既存のエンタープライズアーキテクチャの前提に収まらない支出カテゴリのための、新しいAllocationケイパビリティです。FinOps Frameworkはタグ付け可能なリソースを前提に設計されました。コンピュート、ストレージ、ネットワーク、データベースはいずれも、ツールがまとめてグルーピングできる識別子を備えています。AI APIの支出はそうではありません。消費の単位はトークンであり、トークンはリソースではなくリクエストの中にしか存在しないのです。

つまりAI按分は、フレームワークの「Automation, Tools, & Services」レイヤーに位置付けられるものの、その実装はタグベースの按分とは異なるパターンを取ります。課金エクスポートを取り込んでタグでグルーピングするのではなく、ライブトラフィックを読み取って按分レコードを生成し、それをAllocationケイパビリティへ戻します。財務担当者から見えるアウトプットは同じ、チーム別・顧客別・機能別のコストです。ただし裏側の仕組みはまったく違います。

これはFinOps担当者がツールチェーンを設計するうえで重要な論点です。タグベースのツールの上にAI FinOpsの実践を積み上げようとすれば、あのCFOの財務責任者と同じ壁にぶつかります。AI按分ツールを評価するときに問うべきは「OpenAIの請求書を取り込めるか」ではありません。どのツールもそれはできます。問うべきは「OpenAIの請求書を按分できるか」です。そのためには課金取り込みではなく、トラフィックレベルの計装が要ります。

FinOps FrameworkのCapabilitiesページは、AIワークロードを念頭に置いて読み直す価値があります。Anomaly Management、Allocation、Forecastingはいずれも、按分の存在を暗黙の前提にしています。AI支出において、その按分こそが欠落している入力なのです。

Key takeawayAI按分はトラフィックレベルの計装を要する新しいAllocationケイパビリティであり、請求書の上に載せる新しいダッシュボードではありません。

Frequently asked
questions

OpenAIやAnthropicの支出を特定の顧客に按分するには?

プロバイダーの請求書には顧客IDが含まれないため、リクエストが発生するその瞬間に顧客IDを捕捉する必要があります。具体的には、ゲートウェイやプロキシ、SDKラッパーを介してアプリケーションとプロバイダー間のトラフィックを計装し、すべてのトークン数を顧客識別子に紐付けてログに残す形になります。

なぜタグ付けではAIコスト按分を解決できないのか?

タグ付けには、紐付け先となるリソースが必要だからです。OpenAI、Anthropic、Bedrockへのトークン呼び出しは、クラウドアカウント内にタグ付け可能なリソースを一切生成しないため、タグを結び付ける対象がありません。コストはプロバイダーの請求書上に、単一の集約項目として現れるだけです。

AIプロダクトの機能単位のコストとは?

その機能から発生したリクエストが生んだトークンコストの合計を、利用した顧客あるいはセッションで割り振ったものです。プロバイダーの課金データには機能コンテキストが含まれないため、リクエストごとに機能識別子をその場で捕捉していなければ算出できません。

FinOpsチームはLLM支出を顧客・機能にどう按分するのか?

按分の起点を課金レイヤーからトラフィックレイヤーへ移します。集約後の請求書を事後に切り分けようとするのではなく、API呼び出しの時点でリクエスト単位のコンテキスト(顧客・機能・エージェント)を捕捉し、それらのイベントを積み上げてコストレポートに仕立てます。

エージェントやワークフロー別のトークン利用量はどう追跡するのか?

リクエストごとに呼び出し元のエージェントやワークフローを識別できる計装が必要です。リクエストヘッダー、サービス識別子、あるいは呼び出しパターンを検査するゲートウェイなどを用いて、プロバイダーが返すトークン数を、それを引き起こしたエージェントへと帰属させます。

Where can I learn more?

AI支出はタグ付けモデルを機能不全に追い込みました。トークン呼び出しには、そもそもタグを付ける対象がないからです。財務も、プロダクトも、CFOも、プロバイダーの請求書では答えの出ない問いを投げかけており、課金データをいくら取り込んでもその状況は変わりません。按分はトラフィックレイヤーへ移す必要があります。数字に意味を与える顧客・機能・エージェントのコンテキストが、いまも変わらず宿っているのは、そこだからです。