# Claude Agent SDKの便利だけど知られていない機能
🌍 エージェントの実行コスト、ちゃんと把握できていますか?詳細なトラッキングで可視化しましょう!
Claude Agent SDKは、クエリごとにトークン使用量とコストの詳細な内訳を提供します。
📌 タイトル:詳細なコスト・使用量トラッキング
🔗 URL:
🧩 概要
`ResultMessage` には `total_cost_usd`(推定コスト)、`usage`(トークン内訳)、`num_turns`(ターン数)が含まれており、成功・エラーを問わずすべての結果で取得可能です。さらに `model_usage`(Python)/ `modelUsage`(TypeScript)を使えば、モデルごとのコスト・トークン内訳も確認できます。並列ツール実行時は同一メッセージIDで重複するため、IDベースの重複排除が正確なカウントに必要です。
🛠 使い方
```python
# Python - クエリの総コストを取得
from claude_agent_sdk import query, ResultMessage
async for message in query(prompt="プロジェクトを要約してください"):
if isinstance(message, ResultMessage):
print(f"総コスト: ${ or 0}")
# モデルごとの内訳
if message.model_usage:
for model, usage in message.model_usage.items():
print(f" {model}: ${usage['costUSD']:.4f}")
print(f" 入力トークン: {usage['inputTokens']}")
print(f" キャッシュ読取: {usage['cacheReadInputTokens']}")
```
```typescript
// TypeScript - 複数クエリのコストを累積
import { query } from "
@anthropic-ai/claude-agent-sdk";
let totalSpend = 0;
for (const prompt of prompts) {
for await (const message of query({ prompt })) {
if (message.type === "result") {
totalSpend +=
// モデルごとの内訳
for (const [model, usage] of Object.entries(message.modelUsage)) {
console.log(`${model}: $${usage.costUSD.toFixed(4)}`);
}
}
}
}
console.log(`合計: $${totalSpend.toFixed(4)}`);
```
🏗 本番システムへの組み込み方
・`total_cost_usd` を監視システムに送信して、コスト傾向をリアルタイムで可視化します
・`model_usage` でモデル別コストを分析し、サブエージェントのコスト配分を最適化します
・`resume` で同一セッションを再開した呼び出しの結果には、そのセッションの過去の利用分も含まれます(Claude Code v2.1.277 以降)。この場合は最新の結果を読み、合算すると二重計上になります。セッションを共有しない独立した呼び出しはアプリケーション側で合算ロジックを実装します
・エラー時もコストは発生するため、失敗した `ResultMessage` からも必ずコストを記録します
💡 ユースケース
💰 マルチテナント環境でユーザーごとの利用コストをレポートする
📊 モデル別のコスト内訳を分析して、最適なモデル構成を見つける
🔍 キャッシュトークン(`cache_read_input_tokens`)の割合を監視して、プロンプトキャッシュの効果を測定する
⚠️ 注意点
・`total_cost_usd` はクライアント側の概算値であり、実際の請求額とは異なる場合があります。正確な請求情報は Usage and Cost API を利用してください
・並列ツール呼び出し時は同一IDのメッセージが重複するため、IDで重複排除しないとトークン数が膨らみます
・`ENABLE_PROMPT_CACHING_1H` を設定すると1時間TTLのキャッシュが有効になりますが、書き込みコストが高くなります
✨ コストの可視化なくしてコスト最適化なし。まずはトラッキングを組み込んで、エージェントの「お財布事情」を把握しましょう!
#
ClaudeAgentSDK# #
AIAgent#