Tracing Agno
Agno est un framework open source de création d'applications d'agentique. Il se concentre sur la composition d'outils et de politiques en agents axés sur les tâches.
MLflow Tracing s'intègre à Agno pour capturer des traces complètes des workflows d'agent et des compositions d'outils. Activez-le avec mlflow.agno.autolog. L'intégration fournit une visibilité de bout en bout sur :
- Prompts et réponses de complétion
- Latences
- Métadonnées sur les différents Agents, tels que les noms de fonction
- Utilisations des jetons et coût
- Accès en cache
- Toute exception si levée
Sur les clusters de compute serverless, l'autologging n'est pas activé automatiquement. Vous devez appeler explicitement mlflow.agno.autolog() pour activer le traçage automatique de cette intégration.
Prérequis
Pour utiliser MLflow Tracing avec Agno, vous devez installer MLflow et les packages Agno pertinents.
- Development
- Production
Pour les environnements de développement, installez le package MLflow complet avec les extras Databricks et Agno :
pip install --upgrade "mlflow[databricks]>=3.1" agno 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 en production, installez mlflow-tracing et Agno :
pip install --upgrade mlflow-tracing agno 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 extérieurs aux 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.
Exemple de base
import mlflow
mlflow.agno.autolog()
from agno.agent import Agent
from agno.models.anthropic import Claude
from agno.tools.yfinance import YFinanceTools
agent = Agent(
model=Claude(id="claude-sonnet-4-20250514"),
tools=[YFinanceTools(stock_price=True)],
instructions="Use tables to display data. Don't include any other text.",
markdown=True,
)
agent.print_response("What is the stock price of Apple?", stream=False)
Exécutez vos agents Agno comme d’habitude. Les traces apparaîtront dans l'interface utilisateur de l'expérience.
Exemple multi-agent
import mlflow
from agno.agent import Agent
from agno.models.anthropic import Claude
from agno.models.openai import OpenAIChat
from agno.team.team import Team
from agno.tools.duckduckgo import DuckDuckGoTools
from agno.tools.reasoning import ReasoningTools
from agno.tools.yfinance import YFinanceTools
# Enable auto tracing for Agno
mlflow.agno.autolog()
web_agent = Agent(
name="Web Search Agent",
role="Handle web search requests and general research",
model=OpenAIChat(id="gpt-4.1"),
tools=[DuckDuckGoTools()],
instructions="Always include sources",
add_datetime_to_instructions=True,
)
finance_agent = Agent(
name="Finance Agent",
role="Handle financial data requests and market analysis",
model=OpenAIChat(id="gpt-4.1"),
tools=[
YFinanceTools(
stock_price=True,
stock_fundamentals=True,
analyst_recommendations=True,
company_info=True,
)
],
instructions=[
"Use tables to display stock prices, fundamentals (P/E, Market Cap), and recommendations.",
"Clearly state the company name and ticker symbol.",
"Focus on delivering actionable financial insights.",
],
add_datetime_to_instructions=True,
)
reasoning_finance_team = Team(
name="Reasoning Finance Team",
mode="coordinate",
model=Claude(id="claude-sonnet-4-20250514"),
members=[web_agent, finance_agent],
tools=[ReasoningTools(add_instructions=True)],
instructions=[
"Collaborate to provide comprehensive financial and investment insights",
"Consider both fundamental analysis and market sentiment",
"Use tables and charts to display data clearly and professionally",
"Present findings in a structured, easy-to-follow format",
"Only output the final consolidated analysis, not individual agent responses",
],
markdown=True,
show_members_responses=True,
enable_agentic_context=True,
add_datetime_to_instructions=True,
success_criteria="The team has provided a complete financial analysis with data, visualizations, risk assessment, and actionable investment recommendations supported by quantitative analysis and market research.",
)
reasoning_finance_team.print_response(
"""Compare the tech sector giants (AAPL, GOOGL, MSFT) performance:
1. Get financial data for all three companies
2. Analyze recent news affecting the tech sector
3. Calculate comparative metrics and correlations
4. Recommend portfolio allocation weights""",
show_full_reasoning=True,
)
Suivi de l'utilisation des jetons
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.
# 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.agno.autolog(disable=True) ou globalement avec mlflow.autolog(disable=True).