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
- SDK tracing
- CLI tracing
O rastreamento do SDK do Agente Claude requer:
- SDK do Agente Claude 0.1.0 ou mais tarde
- MLflow 3.5 ou posterior com extras do Databricks
pip install --upgrade "mlflow[databricks]>=3.5" "claude-agent-sdk>=0.1.0"
O rastreamento da CLI do Claude Code requer:
- Claude Code CLI instalado e disponível no seu
PATHcomoclaude - MLflow 3.4 ou posterior com extras do Databricks
pip install --upgrade "mlflow[databricks]>=3.4"
Rastrear o código de Claude até o Databricks
- SDK tracing
- CLI tracing
-
Defina Databricks e variável Anthropic de ambiente:
Bashexport 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 AI Gateway ou os segredos Databricks para um gerenciamento seguro key API .
-
Ative o registro automático para o SDK do Agente Claude para rastrear todas as interações do SDK do Agente Claude:
O MLflow não suporta o rastreamento de chamadas diretas para query. O MLflow suporta apenas o rastreamento de interações que usam 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())
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 .
-
Execute
mlflow autolog claudepara instalar o plug-in MLflow Claude Code e escrever a configuração do MLflow em.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"O comando instala o plugin de código Claude
mlflow-tracinge grava as variáveis de ambiente do MLflow (MLFLOW_CLAUDE_TRACING_ENABLED,MLFLOW_TRACKING_URI,MLFLOW_EXPERIMENT_ID) no blocoenvde.claude/settings.json. O plug-in captura rastreamentos automaticamente. Não é necessário configurar ganchos manualmente.
Para verificar o status atual, execute mlflow autolog claude --status. Para desativar o rastreamento, execute mlflow autolog claude --disable. Para escrever a configuração em .claude/settings.local.json em vez do settings.json compartilhado, adicione o sinalizador --local.
-
Adicionar credenciais do Databricks. O plug-in do Claude Code lê
DATABRICKS_HOSTeDATABRICKS_TOKENdo ambiente shell,.claude/settings.local.jsonou.claude/settings.json(nessa ordem de precedência). Adicione-os ao blocoenvde.claude/settings.jsoncaso ainda não os exporte em seu 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"
}
}Substitua
your-workspace.cloud.databricks.compelo URL do seu workspace Databricks eyour-databricks-tokenpelo seu access tokenpessoal. -
Acesse o diretório do seu projeto e utilize o Claude Code normalmente. Suas conversas são rastreadas automaticamente até o Databricks:
Bashcd ~/my-project
claude "help me refactor this Python function to be more efficient" -
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:
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
- SDK tracing
- CLI tracing
Vestígios desaparecidos:
- Verifique se
mlflow.anthropic.autolog()foi chamado antes de criar oClaudeSDKClient - Verifique se as variáveis de ambiente (
DATABRICKS_HOST,DATABRICKS_TOKEN) estão definidas corretamente - Verifique se seus tokens Databricks não expiraram.
Verifique se o rastreamento da CLI está ativado para o seu projeto:
mlflow autolog claude --status
Esta opção exibe a configuração de rastreamento atual e se ela está ativa para a CLI do Claude Code.
O rastreamento não está funcionando:
- Certifique-se de estar no diretório configurado.
- Verifique se
.claude/settings.jsonexiste e contém as chavesMLFLOW_CLAUDE_TRACING_ENABLED,MLFLOW_TRACKING_URIeMLFLOW_EXPERIMENT_IDno blocoenv. - Confirme se o plugin
mlflow-tracingestá instalado:claude plugin list - Revisar login
.claude/mlflow/claude_tracing.log
Vestígios desaparecidos:
- Verifique se
MLFLOW_CLAUDE_TRACING_ENABLEDestátruena sua configuração - Verifique se o URI de acompanhamento está acessível.
- Revisar login
.claude/mlflow/claude_tracing.log
Problemas de conexão com o Databricks:
- Verifique se
MLFLOW_TRACKING_URI,DATABRICKS_HOSTeDATABRICKS_TOKENestão definidos, seja no seu ambiente de shell ou no blocoenvde.claude/settings.json(ou.claude/settings.local.json). - Verifique se seus tokens Databricks não expiraram.
- Verifique se o URL do seu workspace está correto (por exemplo,
https://your-workspace.cloud.databricks.com).