Aller au contenu principal

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

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
Bash
pip install --upgrade "mlflow[databricks]>=3.5" "claude-agent-sdk>=0.1.0"

Tracer Claude Code vers Databricks

  1. Définissez les variables d'environnement Databricks et Anthropic :

    Bash
    export 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.

  2. Activez l'autologging pour le SDK Claude Agent afin de tracer toutes les interactions du SDK Claude Agent :

remarque

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.

Python
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.

Avancé : suivi SDK avec évaluation

Vous pouvez utiliser le traçage SDK avec le cadre d'évaluation GenAI de MLflow:

Python
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

Traces manquantes :

  • Vérifiez que mlflow.anthropic.autolog() est appelé avant de créer le ClaudeSDKClient
  • 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é