[小ネタ] Claude Opus 4 の利用費を CloudWatch Metrics で可視化してみた
こんにちは!クラウド事業本部コンサルティング部のたかくに(@takakuni_)です。
Claude Code を Amazon Bedrock 経由で使っていると、どうしても気になるのはコストではないでしょうか。
自分が 1時間、1日、1週間と、どれほどのスピード感で利用費が上がっているのか、可視化したいところです。
Claude Code では Opentelemetry や Prometheus で、利用費のメトリクスを取得できます。
これをどこかのダッシュボードで用意するとなると、Grafana サーバーや Prometheus サーバーが必要だったりします。
それだけの用途で Grafana は Too Much な気がしたため、今回はサクッと CloudWatch メトリクスから、コスト計算をしてみたいと思います。
利用するメトリクス
今回は InputTokenCount
, OutputTokenCount
, CacheWriteInputTokenCount
, CacheReadInputTokenCount
の 4 つのメトリクスを利用して、コストの計算を行いたいと思います。また、Claude Opus 4 の利用費を可視化してみたいと思います。
参考までに Claude Opus 4 の料金は、執筆時点で以下のとおりです。
Anthropic models | Price per 1,000 input tokens | Price per 1,000 output tokens | Price per 1,000 input tokens (batch) | Price per 1,000 output tokens (batch) | Price per 1,000 input tokens (cache write) | Price per 1,000 input tokens (cache read) |
---|---|---|---|---|---|---|
Claude Opus 4 | $0.015 | $0.075 | NA | NA | $0.01875 | $0.0015 |
たとえば InputTokenCount が 2,400 トークンあったとすれば、概算レベルですが 2400 / 1000 * 0.15 の 0.36 USD であることがわかります。
メトリクスの計算
メトリクスの計算には計算式および、発信元機能を利用し求めていきます。
まずは、CloudWatch のコンソールに遷移し、発信元
をクリックします。
開けたら以下の JSON を流し込みます。
region
と モデル ID
部分には Bedrock で利用している、リージョンとモデル ID を入力してください。
{
"sparkline": true,
"metrics": [
[ { "expression": "(m3 / 1000) * 0.015", "label": "InputToken USD", "id": "e1", "period": 300, "yAxis": "left", "stat": "Sum" } ],
[ { "expression": "(m4 / 1000) * 0.075", "label": "OutputToken USD", "id": "e2", "period": 300, "stat": "Sum" } ],
[ { "expression": "(m1 / 1000) * 0.01875", "label": "CacheWriteInputToken USD", "id": "e3", "period": 300, "stat": "Sum" } ],
[ { "expression": "(m2 / 1000) * 0.0015", "label": "CacheReadInputToken USD", "id": "e4", "period": 300, "stat": "Sum" } ],
[ "AWS/Bedrock", "CacheWriteInputTokenCount", "ModelId", "モデルID", { "id": "m1", "visible": false } ],
[ ".", "CacheReadInputTokenCount", ".", ".", { "id": "m2", "visible": false } ],
[ ".", "InputTokenCount", ".", ".", { "id": "m3", "visible": false } ],
[ ".", "OutputTokenCount", ".", ".", { "id": "m4", "visible": false } ],
[ ".", "Invocations", ".", ".", { "id": "m5", "visible": false } ]
],
"view": "singleValue",
"stacked": true,
"region": "us-east-1",
"stat": "Sum",
"period": 300,
"setPeriodToTimeRange": true,
"yAxis": {
"left": {
"min": 0,
"max": 100
}
}
}
貼り付けて 更新
をクリックすると、次のように各トークンの利用コストが表示されます。(※ あまりにも低い場合は、 0 で丸められる可能性があります)
期間を選択すると、やりたかった 1時間、1日、1週間と、どれほどのスピード感で利用費が上がっているのか、可視化できます。
このワークロードだと、Output Token Count が目立ちますね。
計算式
ご覧の通り、e1 から e4 に関して、各メトリクスを 1000 で割ったのちに、コストを掛け算してみました。
たとえば InputToken USD (e1) であれば、InputTokenCount (m3) / 1000 * 0.015
で計算し、グラフに表示しています。
{
"sparkline": true,
"metrics": [
+ [ { "expression": "(m3 / 1000) * 0.015", "label": "InputToken USD", "id": "e1", "period": 300, "yAxis": "left", "stat": "Sum" } ],
[ { "expression": "(m4 / 1000) * 0.075", "label": "OutputToken USD", "id": "e2", "period": 300, "stat": "Sum" } ],
[ { "expression": "(m1 / 1000) * 0.01875", "label": "CacheWriteInputToken USD", "id": "e3", "period": 300, "stat": "Sum" } ],
[ { "expression": "(m2 / 1000) * 0.0015", "label": "CacheReadInputToken USD", "id": "e4", "period": 300, "stat": "Sum" } ],
[ "AWS/Bedrock", "CacheWriteInputTokenCount", "ModelId", "モデルID", { "id": "m1", "visible": false } ],
[ ".", "CacheReadInputTokenCount", ".", ".", { "id": "m2", "visible": false } ],
+ [ ".", "InputTokenCount", ".", ".", { "id": "m3", "visible": false } ],
[ ".", "OutputTokenCount", ".", ".", { "id": "m4", "visible": false } ],
[ ".", "Invocations", ".", ".", { "id": "m5", "visible": false } ]
],
"view": "singleValue",
"stacked": true,
"region": "us-east-1",
"stat": "Sum",
"period": 300,
"setPeriodToTimeRange": true,
"yAxis": {
"left": {
"min": 0,
"max": 100
}
}
}
参考
まとめ
以上、「[小ネタ]Claude Opus 4 の利用費を CloudWatch Metrics で可視化してみた」でした。
今回は Claude Opus 4 に焦点を当てましたが、別のモデルでも流用できるため、ぜひコストが気になる方はお試しください。
このブログがどなたかの参考になれば幸いです。
クラウド事業本部コンサルティング部のたかくに(@takakuni_)でした!