SDKコスト追跡
Claude Code SDKは、Claudeとの各インタラクションに対して詳細なトークン使用量情報を提供します。このガイドでは、特に並列ツール使用や複数ステップの会話を扱う際に、コストを適切に追跡し、使用量レポートを理解する方法について説明します。 完全なAPIドキュメントについては、TypeScript SDKリファレンスを参照してください。トークン使用量の理解
Claudeがリクエストを処理する際、メッセージレベルでトークン使用量を報告します。この使用量データは、コストを追跡し、ユーザーに適切に請求するために不可欠です。主要概念
- ステップ: アプリケーションとClaude間の単一のリクエスト/レスポンスペア
- メッセージ: ステップ内の個別メッセージ(テキスト、ツール使用、ツール結果)
- 使用量: アシスタントメッセージに添付されたトークン消費データ
使用量レポート構造
単一 vs 並列ツール使用
Claudeがツールを実行する際、ツールが順次実行されるか並列実行されるかに基づいて使用量レポートが異なります:メッセージフローの例
典型的な複数ステップ会話でのメッセージと使用量の報告方法は以下の通りです:重要な使用量ルール
1. 同じID = 同じ使用量
同じid
フィールドを持つすべてのメッセージは同一の使用量を報告します。Claudeが同じターンで複数のメッセージを送信する場合(例:テキスト + ツール使用)、それらは同じメッセージIDと使用量データを共有します。
2. ステップごとに一度請求
ユーザーにはステップごとに一度だけ請求すべきです、個別のメッセージごとではありません。同じIDを持つ複数のアシスタントメッセージを見た場合、そのうちの任意の一つから使用量を使用してください。3. 結果メッセージには累積使用量が含まれる
最終的なresult
メッセージには、会話のすべてのステップからの累積使用量の合計が含まれます:
実装: コスト追跡システム
コスト追跡システムを実装する完全な例は以下の通りです:エッジケースの処理
出力トークンの不一致
稀に、同じIDを持つメッセージで異なるoutput_tokens
値を観察する場合があります。これが発生した場合:
- 最高値を使用 - グループ内の最後のメッセージが通常正確な合計を含みます
- 総コストと照合 - 結果メッセージの
total_cost_usd
が権威的です - 不一致を報告 - Claude Code GitHubリポジトリで問題を報告してください
キャッシュトークンの追跡
プロンプトキャッシュを使用する際は、これらのトークンタイプを個別に追跡してください:ベストプラクティス
- 重複排除にメッセージIDを使用: 二重請求を避けるため、常に処理済みメッセージIDを追跡する
- 結果メッセージを監視: 最終結果には権威的な累積使用量が含まれる
- ログ記録を実装: 監査とデバッグのためにすべての使用量データをログに記録する
- 失敗を適切に処理: 会話が失敗した場合でも部分的な使用量を追跡する
- ストリーミングを考慮: ストリーミングレスポンスの場合、メッセージが到着するにつれて使用量を蓄積する
使用量フィールドリファレンス
各使用量オブジェクトには以下が含まれます:input_tokens
: 処理されたベース入力トークンoutput_tokens
: レスポンスで生成されたトークンcache_creation_input_tokens
: キャッシュエントリの作成に使用されたトークンcache_read_input_tokens
: キャッシュから読み取られたトークンservice_tier
: 使用されたサービス階層(例:“standard”)total_cost_usd
: USD単位の総コスト(結果メッセージのみ)
例: 請求ダッシュボードの構築
請求ダッシュボード用の使用量データを集約する方法は以下の通りです:関連ドキュメント
- TypeScript SDKリファレンス - 完全なAPIドキュメント
- SDK概要 - SDKの開始方法
- SDK権限 - ツール権限の管理