Traçage du code Claude
Le MLflow Tracing trace automatiquement les conversations Claude Code et les agents créés à l’aide du SDK d’agent Claude, capturant les invites utilisateur, les réponses de l’IA, l’utilisation des outils, le minutage et les métadonnées de session.
MLflow prend en charge deux approches pour le traçage de code Claude :
- **Traçage CLI** : configurez le traçage via la CLI MLflow pour tracer automatiquement les sessions interactives de code Claude (MLflow 3.4+)
- Traçage du SDK : Activez le traçage par programme pour les applications Python à l'aide du SDK Claude Agent (MLflow 3.5+)
Exigences
- SDK tracing
- CLI tracing
Le suivi du SDK de l'agent Claude nécessite :
- SDK Claude Agent 0.1.0 ou ultérieure
- MLflow 3.5 ou ultérieur avec des extras Databricks
pip install --upgrade "mlflow[databricks]>=3.5" "claude-agent-sdk>=0.1.0"
Le traçage de la CLI de Claude Code requiert :
- Claude Code CLI installé et disponible sur votre
PATHen tant queclaude - MLflow 3.4 ou version ultérieure avec des compléments Databricks
pip install --upgrade "mlflow[databricks]>=3.4"
Tracer Claude Code vers Databricks
- SDK tracing
- CLI tracing
-
Définissez les variables d'environnement Databricks et 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"Pour les environnements de production, utilisez AI Gateway ou les secrets Databricks pour une gestion sécurisée des clés d'API.
-
Activez l'autologging pour le SDK Claude Agent afin de tracer toutes les interactions du SDK Claude Agent :
MLflow ne prend pas en charge le traçage des appels directs vers query. MLflow ne prend en charge que le traçage des interactions qui utilisent 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())
Pour désactiver le log automatique, appelez mlflow.anthropic.autolog(disable=True).
3. Affichez vos traces dans l'interface utilisateur de l'Experimentation MLflow dans votre Databricks Workspace.
-
Exécutez
mlflow autolog claudepour installer le plugin MLflow Claude Code et écrire la configuration MLflow dans.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"La commande installe le plugin
mlflow-tracingClaude Code et écrit les variables d'environnement MLflow (MLFLOW_CLAUDE_TRACING_ENABLED,MLFLOW_TRACKING_URI,MLFLOW_EXPERIMENT_ID) dans le blocenvde.claude/settings.json. Le plugin capture automatiquement les traces. Vous n'avez pas à configurer les hooks manuellement.
Pour vérifier le statut actuel, exécutez mlflow autolog claude --status. Pour désactiver le traçage, exécutez mlflow autolog claude --disable. Pour écrire la configuration dans .claude/settings.local.json au lieu de settings.json partagé, ajoutez le drapeau --local.
-
Ajoutez des identifiants Databricks. Le plug-in Claude Code lit
DATABRICKS_HOSTetDATABRICKS_TOKENde l'environnement shell,.claude/settings.local.jsonou.claude/settings.json(dans cet ordre de priorité). Ajoutez-les au blocenvde.claude/settings.jsonsi vous ne les exportez pas déjà dans votre shell :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"
}
}Remplacez
your-workspace.cloud.databricks.compar l'URL de votre Workspace Databricks etyour-databricks-tokenpar votre jeton d'accès personnel. -
Allez dans votre répertoire de projet et utilisez Claude Code normalement. Vos conversations sont automatiquement tracées vers Databricks :
Bashcd ~/my-project
claude "help me refactor this Python function to be more efficient" -
Affichez vos traces dans l'interface utilisateur de l'Experimentation MLflow dans votre Databricks Workspace.
Avancé : suivi SDK avec évaluation
Vous pouvez utiliser le traçage SDK avec le cadre d'évaluation GenAI de MLflow:
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])
Dépannage
- SDK tracing
- CLI tracing
Traces manquantes :
- Vérifiez que
mlflow.anthropic.autolog()est appelé avant de créer leClaudeSDKClient - Vérifiez que les variables d’environnement (
DATABRICKS_HOST,DATABRICKS_TOKEN) sont correctement définies. - Vérifiez que votre jeton Databricks n'a pas expiré
Vérifiez que le traçage CLI est activé pour votre projet :
mlflow autolog claude --status
Ceci affiche la configuration actuelle du traçage et si elle est active pour le CLI Claude Code.
Le traçage ne fonctionne pas :
- Veuillez vérifier que vous êtes dans le répertoire configuré.
- Vérifiez que
.claude/settings.jsonexiste et contient les clésMLFLOW_CLAUDE_TRACING_ENABLED,MLFLOW_TRACKING_URIetMLFLOW_EXPERIMENT_IDdans le blocenv - Confirmez que le plugin
mlflow-tracingest installé :claude plugin list - Consulter les logs dans
.claude/mlflow/claude_tracing.log
Traces manquantes :
- Vérifiez que
MLFLOW_CLAUDE_TRACING_ENABLEDesttruedans votre configuration - Vérifiez que l'URI de suivi est accessible
- Consulter les logs dans
.claude/mlflow/claude_tracing.log
Problèmes de connexion Databricks :
- Vérifiez que
MLFLOW_TRACKING_URI,DATABRICKS_HOSTetDATABRICKS_TOKENsont définis, soit dans votre environnement Shell, soit dans le blocenvde.claude/settings.json(ou.claude/settings.local.json) - Vérifiez que votre jeton Databricks n'a pas expiré
- Vérifiez que l'URL de votre Workspace est correcte (par exemple,
https://your-workspace.cloud.databricks.com).