Claude Codeのトレース
MLflow Tracingは、Claude Agent SDK を使用して作成された Claude Code の会話とエージェントを自動的にトレースし、ユーザー プロンプト、AI 応答、ツールの使用状況、タイミング、セッション メタデータをキャプチャします。
MLflow は、Claude Code トレースの 2 つのアプローチをサポートしています。
- CLI トレース : MLflow CLI を介してトレースを構成して、対話型 Claude Code セッションを自動的にトレースします (MLflow 3.4 以降)
- SDK トレース : Claude Agent SDK (MLflow 3.5+) を使用して、Python アプリケーションのトレースをプログラムで有効にします。
要件
- SDK tracing
- CLI tracing
Claude Agent SDK トレースには以下が必要です:
- Claude Agent SDK 0.1.0またはそれ以降
- MLflow 3.5 以降(Databricks 追加機能付き)
pip install --upgrade "mlflow[databricks]>=3.5" "claude-agent-sdk>=0.1.0"
Claude Code CLI トレースには以下が必要です。
- 「Claude Code CLI」がお使いの
PATHにインストールされ、利用可能ですclaude - MLflow 3.4 以降(Databricks extra付き)
pip install --upgrade "mlflow[databricks]>=3.4"
Claude のコードを Databricks にトレースする
- SDK tracing
- CLI tracing
-
Databricks と Anthropic の環境変数を設定します。
Bashexport DATABRICKS_HOST="https://your-workspace.cloud.databricks.com"
export DATABRICKS_TOKEN="your-personal-access-token"
export ANTHROPIC_API_KEY="your-anthropic-api-key"本番運用環境の場合は、安全なAPIキー管理のためにAI Gateway またはDatabricksシークレットを使用します。
-
Claude Agent SDK の自動ログ記録を有効にして、すべての Claude Agent SDK のインタラクションを追跡します。
MLflow はqueryへの直接呼び出しのトレースをサポートしていません。MLflow は、 ClaudeSDKClient使用するトレース インタラクションのみをサポートします。
import asyncio
import mlflow.anthropic
from claude_agent_sdk import ClaudeSDKClient
# Enable autologging
mlflow.anthropic.autolog()
# Optionally configure MLflow experiment
mlflow.set_experiment("my_claude_app")
async def main():
async with ClaudeSDKClient() as client:
await client.query("What is the capital of France?")
async for message in client.receive_response():
print(message)
if __name__ == "__main__":
asyncio.run(main())
自動ログを無効にするには、 mlflow.anthropic.autolog(disable=True)を呼び出します。
3. DatabricksワークスペースのMLflowエクスペリメント UIでトレースを表示します。
-
「
mlflow autolog claude」を実行して MLflow Claude Code プラグインをインストールし、MLflow の設定を.claude/settings.jsonに書き込みます:Bash# Set up tracing in the current directory, targeting Databricks
mlflow autolog claude -u databricks -e <experiment-id>
# Or target a different project directory
mlflow autolog claude -d ~/my-project -u databricks -e <experiment-id>
# Specify an experiment by name instead of ID
mlflow autolog claude -u databricks -n "/Users/your-email@company.com/my-claude-traces"コマンドは、
mlflow-tracingClaude Codeプラグインをインストールし、MLflow環境変数(MLFLOW_CLAUDE_TRACING_ENABLED、MLFLOW_TRACKING_URI、MLFLOW_EXPERIMENT_ID)を.claude/settings.jsonのenvブロックに書き込みます。プラグインはトレースを自動的にキャプチャします。フックを手動で設定する必要はありません。
現在のステータスを確認するには、mlflow autolog claude --statusを実行してください。トレースを無効にするには、mlflow autolog claude --disableを実行してください。共有のsettings.jsonではなく、構成を.claude/settings.local.jsonに書き込むには、--localフラグを追加します。
-
Databricks の認証情報を追加します。「Claude Code」プラグインは、シェル環境、
.claude/settings.local.json、または.claude/settings.jsonからDATABRICKS_HOSTとDATABRICKS_TOKENを読み取ります(この優先順位で)。すでにシェルでエクスポートしていない場合は、それらを.claude/settings.jsonのenvブロックに追加します。JSON{
"env": {
"MLFLOW_CLAUDE_TRACING_ENABLED": "true",
"MLFLOW_TRACKING_URI": "databricks",
"MLFLOW_EXPERIMENT_ID": "123456789",
"DATABRICKS_HOST": "https://your-workspace.cloud.databricks.com",
"DATABRICKS_TOKEN": "your-databricks-token"
}
}your-workspace.cloud.databricks.comDatabricksワークスペースの URL に置き換え、your-databricks-token個人のアクセス場所に置き換えます。 -
プロジェクト ディレクトリに移動し、Claude Code を通常どおり使用します。会話は自動的に Databricks に追跡されます。
Bashcd ~/my-project
claude "help me refactor this Python function to be more efficient" -
DatabricksワークスペースのMLflowエクスペリメント UIでトレースを表示します。
上級: 評価付き SDK トレース
MLflow の GenAI 評価フレームワークで SDK トレースを使用できます。
import asyncio
import pandas as pd
from claude_agent_sdk import ClaudeSDKClient
import mlflow.anthropic
from mlflow.genai import evaluate, scorer
from mlflow.genai.judges import make_judge
mlflow.anthropic.autolog()
async def run_agent(query: str) -> str:
"""Run Claude Agent SDK and return response"""
async with ClaudeSDKClient() as client:
await client.query(query)
response_text = ""
async for message in client.receive_response():
response_text += str(message) + "\n\n"
return response_text
def predict_fn(query: str) -> str:
"""Synchronous wrapper for evaluation"""
return asyncio.run(run_agent(query))
relevance = make_judge(
name="relevance",
instructions=(
"Evaluate if the response in {{ outputs }} is relevant to "
"the question in {{ inputs }}. Return either 'pass' or 'fail'."
),
model="openai:/gpt-4o",
)
# Create evaluation dataset
eval_data = pd.DataFrame(
[
{"inputs": {"query": "What is machine learning?"}},
{"inputs": {"query": "Explain neural networks"}},
]
)
# Run evaluation with automatic tracing
mlflow.set_experiment("claude_evaluation")
evaluate(data=eval_data, predict_fn=predict_fn, scorers=[relevance])
トラブルシューティング
- SDK tracing
- CLI tracing
トレースが失われている:
- 作成前に
mlflow.anthropic.autolog()が呼び出されていることを確認してくださいClaudeSDKClient - 環境変数(
DATABRICKS_HOST、DATABRICKS_TOKEN)が正しく設定されていることを確認してください - Databricksの有効期限が切れていないことを確認してください
プロジェクトで CLI トレースが有効になっていることを確認します。
mlflow autolog claude --status
これには、現在のトレース構成と、それが Claude Code CLI に対してアクティブかどうかが表示されます。
トレースが機能しない:
- 設定済みディレクトリにいることを確認してください。
envブロックに.claude/settings.jsonが存在し、MLFLOW_CLAUDE_TRACING_ENABLED、MLFLOW_TRACKING_URI、MLFLOW_EXPERIMENT_IDのキーが含まれていることを確認してください。mlflow-tracingプラグインがインストールされていることを確認します:claude plugin list- ログインを確認する
.claude/mlflow/claude_tracing.log
トレースが失われている:
- 設定で
MLFLOW_CLAUDE_TRACING_ENABLEDがtrueであることを確認してください。 - トラッキングURIにアクセスできることを確認する
- ログインを確認する
.claude/mlflow/claude_tracing.log
Databricks 接続の問題:
MLFLOW_TRACKING_URI、DATABRICKS_HOST、DATABRICKS_TOKENが、シェル環境、または.claude/settings.jsonのenvブロック(もしくは.claude/settings.local.json)のいずれかで設定されていることを確認してください。- Databricksの有効期限が切れていないことを確認してください
- ワークスペース URL が正しいことを確認してください (例:
https://your-workspace.cloud.databricks.com)