Traçage de Smolagents
Smolagents est un framework d'agent léger qui met l'accent sur le minimalisme et la composabilité.
MLflow Tracing s'intègre à Smolagents pour capturer des traces optimisées de workflows d'agents légers. Activez-le avec mlflow.smolagents.autolog.
Le suivi automatique de MLflow ne prend en charge que les appels synchrones. Les méthodes API asynchrones et de streaming ne sont pas suivies.
Prérequis
Pour utiliser MLflow Tracing avec Smolagents, vous devez installer MLflow et les packages Smolagents pertinents.
- Development
- Production
Pour les environnements de développement, installez le package MLflow complet avec les extras Databricks et Smolagents :
pip install --upgrade "mlflow[databricks]>=3.1" smolagents openai
Le package mlflow[databricks] complet inclut toutes les fonctionnalités pour le développement local et l’expérimentation sur Databricks.
Pour les déploiements de production, installez mlflow-tracing et Smolagents :
pip install --upgrade mlflow-tracing smolagents openai
Le mlflow-tracing package est optimisé pour une utilisation en production.
MLflow 3 est recommandé pour une expérience de suivi optimale.
Avant d'exécuter les exemples, vous devrez configurer votre environnement :
Pour les utilisateurs en dehors des notebooks Databricks : Définissez vos variables d'environnement Databricks :
export DATABRICKS_HOST="https://your-workspace.cloud.databricks.com"
export DATABRICKS_TOKEN="your-personal-access-token"
Pour les utilisateurs dans les Notebooks Databricks : ces identifiants sont définis automatiquement pour vous.
Clés API : Assurez-vous que les clés API de votre fournisseur LLM sont configurées. Pour les environnements de production, utilisez AI Gateway ou les secrets Databricks au lieu de valeurs codées en dur pour une gestion sécurisée des clés API.
export OPENAI_API_KEY="your-openai-api-key"
# Add other provider keys as needed
Exemple d'utilisation
Sur les clusters de compute Serverless, la journalisation automatique pour les cadres de traçage genAI n'est pas activée automatiquement. Vous devez activer explicitement l'autologging en appelant la fonction mlflow.<library>.autolog() appropriée pour les intégrations spécifiques que vous souhaitez suivre.
import mlflow
mlflow.smolagents.autolog()
from smolagents import CodeAgent, LiteLLMModel
import mlflow
# Turn on auto tracing for Smolagents by calling mlflow.smolagents.autolog()
mlflow.smolagents.autolog()
model = LiteLLMModel(model_id="openai/gpt-4o-mini", api_key=API_KEY)
agent = CodeAgent(tools=[], model=model, add_base_tools=True)
result = agent.run(
"Could you give me the 118th number in the Fibonacci sequence?",
)
Exécutez votre workflow Smolagents comme d'habitude. Les traces apparaîtront dans l'interface utilisateur de l'expérience.
Suivi de l'utilisation du jeton
MLflow enregistre l'utilisation des jetons pour chaque appel d'Agent dans l'attribut mlflow.chat.tokenUsage. L'utilisation totale de jetons tout au long de la trace est disponible dans le champ token_usage de l'objet d'informations de trace.
import json
import mlflow
mlflow.smolagents.autolog()
model = LiteLLMModel(model_id="openai/gpt-4o-mini", api_key=API_KEY)
agent = CodeAgent(tools=[], model=model, add_base_tools=True)
result = agent.run(
"Could you give me the 118th number in the Fibonacci sequence?",
)
# Get the trace object just created
last_trace_id = mlflow.get_last_active_trace_id()
trace = mlflow.get_trace(trace_id=last_trace_id)
# Print the token usage
total_usage = trace.info.token_usage
print("== Total token usage: ==")
print(f" Input tokens: {total_usage['input_tokens']}")
print(f" Output tokens: {total_usage['output_tokens']}")
print(f" Total tokens: {total_usage['total_tokens']}")
# Print the token usage for each LLM call
print("\n== Detailed usage for each LLM call: ==")
for span in trace.data.spans:
if usage := span.get_attribute("mlflow.chat.tokenUsage"):
print(f"{span.name}:")
print(f" Input tokens: {usage['input_tokens']}")
print(f" Output tokens: {usage['output_tokens']}")
print(f" Total tokens: {usage['total_tokens']}")
Désactiver le suivi automatique
Désactivez avec mlflow.smolagents.autolog(disable=True) ou globalement avec mlflow.autolog(disable=True).