Aller au contenu principal

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.

remarque

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.

Pour les environnements de développement, installez le package MLflow complet avec les extras Databricks et Smolagents :

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

remarque

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 :

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

Bash
export OPENAI_API_KEY="your-openai-api-key"
# Add other provider keys as needed

Exemple d'utilisation

remarque

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.

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

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