Skip to content

原文(日本語に翻訳)

OpenTelemetry: tool_result および tool_decision イベントに tool_use_id が含まれるようになった。tool_result には tool_input_size_bytes も追加された

原文(英語)

OpenTelemetry: tool_result and tool_decision events now include tool_use_id; tool_result also includes tool_input_size_bytes

概要

Claude CodeのOpenTelemetryトレーシングで、tool_resulttool_decision イベントに tool_use_id が追加された。また tool_result には tool_input_size_bytes(ツール入力のバイトサイズ)も追加された。これによりツール呼び出しの追跡精度が向上し、パフォーマンス分析やデバッグが容易になる。

基本的な使い方

OpenTelemetryを設定している環境では、新しいフィールドが自動的にトレースデータに含まれる:

json
// tool_result イベントの例
{
  "event": "tool_result",
  "tool_name": "Bash",
  "tool_use_id": "toolu_01XYZ...",
  "tool_input_size_bytes": 156,
  "duration_ms": 1234
}

// tool_decision イベントの例
{
  "event": "tool_decision",
  "tool_name": "Write",
  "tool_use_id": "toolu_01ABC...",
  "decision": "allow"
}

実践例

ツール呼び出しの追跡

tool_use_id を使って、ツール呼び出しの開始から終了までを一意に追跡できる:

python
# Pythonでのトレース分析例
from opentelemetry import trace

# tool_use_idでツール呼び出しを関連付ける
def analyze_tool_call(spans):
    tool_calls = {}
    for span in spans:
        if span.name in ["tool_result", "tool_decision"]:
            tool_use_id = span.attributes.get("tool_use_id")
            if tool_use_id:
                tool_calls[tool_use_id] = span
    return tool_calls

大きなツール入力の検出

tool_input_size_bytes を使って、大きな入力を持つツール呼び出しを特定する:

bash
# OpenTelemetryコレクターでのフィルタリング例
# tool_input_size_bytes > 10000 のイベントのみ収集

Jaegerなどのトレーシングツールでクエリ:

tool_input_size_bytes > 10000 AND event = "tool_result"

Grafanaでのダッシュボード作成

promql
# ツール入力サイズの分布
histogram_quantile(0.95,
  sum(rate(claude_code_tool_input_size_bytes_bucket[5m])) by (tool_name, le)
)

OpenTelemetryの設定例

json
// .claude/settings.json
{
  "env": {
    "OTEL_EXPORTER_OTLP_ENDPOINT": "http://otel-collector:4318",
    "OTEL_SERVICE_NAME": "claude-code",
    "OTEL_TRACES_EXPORTER": "otlp"
  }
}

注意点

  • tool_use_id はClaude APIが生成する一意のIDで、ツール呼び出しの追跡に使用できる
  • tool_input_size_bytes は入力データのバイト数を表し、大きなファイルを処理する際のパフォーマンス分析に有用
  • これらのフィールドはOpenTelemetryを設定している場合にのみ収集される
  • OpenTelemetryを使用していない場合はこの変更の影響を受けない

関連情報