Pular para o conteúdo principal

Rastreando o código de Claude

MLflow Tracing rastreia automaticamente conversas e agentes do Claude Code criados com o Claude Agent SDK, capturando prompts do usuário, respostas AI , uso de ferramentas, tempo e metadados da sessão.

O MLflow suporta duas abordagens para o rastreamento do Código Claude:

  • Rastreamento via CLI : Configure o rastreamento através da CLI do MLflow para rastrear automaticamente sessões interativas do Claude Code (MLflow 3.4+).
  • Rastreamento do SDK : Habilite o rastreamento programaticamente para aplicativos Python usando o SDK do Agente Claude (MLflow 3.5+).

Requisitos

O rastreamento do SDK do Agente Claude requer:

Bash
pip install --upgrade "mlflow[databricks]>=3.5" "claude-agent>=0.1.0"

Rastrear o código de Claude até o Databricks

  1. Defina Databricks e variável Anthropic de ambiente:

    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"

    Para ambientes de produção, utilize Mosaic AI Gateway ou os segredos Databricks para um gerenciamento seguro key API .

  2. Ative o registro automático para o SDK do Agente Claude para rastrear todas as interações do SDK do Agente Claude:

nota

O MLflow não suporta o rastreamento de chamadas diretas para query. O MLflow suporta apenas o rastreamento de interações que usam 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())

Para desativar o registro automático, chame mlflow.anthropic.autolog(disable=True). 3. Visualize seus rastreamentos na interface do usuário do experimentoMLflow em seu workspace Databricks .

Avançado: Rastreamento do SDK com avaliação

Você pode usar o rastreamento do SDK com a estrutura de avaliação GenAI do 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])

Solução de problemas

Vestígios desaparecidos:

  • Verifique se mlflow.anthropic.autolog() foi chamado antes de criar o ClaudeSDKClient
  • Verifique se as variáveis de ambiente (DATABRICKS_HOST, DATABRICKS_TOKEN) estão definidas corretamente
  • Verifique se seus tokens Databricks não expiraram.