Passer au contenu principal
Vous pouvez tracer dans Weave les appels des agents et des appel d’outil Agno à l’aide d’OpenTelemetry (OTEL). Agno est un framework Python permettant de créer des systèmes multi-agents avec mémoire, connaissances et raisonnement partagés. Il est conçu pour être léger et indépendant des modèles, et prend en charge des capacités multimodales, notamment le traitement de texte, d’images, d’audio et de vidéo. Ce guide explique comment tracer les appels des agents et des appel d’outil Agno à l’aide d’OTEL, puis visualiser ces traces dans Weave. Vous apprendrez à installer les dépendances requises, à configurer un traceur OTEL pour envoyer des données à Weave et à instrumenter vos agents et outils Agno.
Pour plus d’informations sur le tracing OTEL dans Weave, voir Envoyer des traces OTEL à Weave.

Prérequis

  1. Installez les dépendances requises :
    pip install agno openinference-instrumentation-agno opentelemetry-sdk opentelemetry-exporter-otlp-proto-http
    
  2. Définissez votre clé API OpenAI (ou celle d’un autre fournisseur de modèle) dans une variable d’environnement :
    export OPENAI_API_KEY=your_api_key_here
    
  3. Configurer le Tracing OTEL dans Weave.

Configurer le Tracing OTEL dans Weave

Pour envoyer des traces d’Agno vers Weave, configurez OTEL avec un TracerProvider et un OTLPSpanExporter. Configurez l’exportateur avec l’point de terminaison approprié et les en-têtes HTTP requis pour l’authentification et l’identification du projet.
Stockez les variables d’environnement sensibles, comme votre clé API et les informations sur votre projet, dans un fichier d’environnement (par exemple .env), puis chargez-les avec os.environ. Cela permet de sécuriser vos identifiants et de les garder hors de votre code.

Configuration requise

Configurez l’exporteur OTLP avec le point de terminaison et les en-têtes suivants :
  • Point de terminaison: https://trace.wandb.ai/otel/v1/traces
  • En-têtes :
    • Authorization : authentification Basic avec votre clé API W&B.
    • project_id : le nom de votre entité/projet W&B (par exemple : myteam/myproject).

Envoyer des traces OTEL d’Agno vers Weave

Une fois les prérequis remplis, vous pouvez envoyer des traces OTEL d’Agno vers Weave. L’extrait de code suivant montre comment configurer un exportateur de spans OTLP et un fournisseur de traceur afin d’envoyer des traces OTEL d’une application Agno vers Weave.
Pour que Weave trace correctement Agno, définissez le fournisseur de traceur global avant d’utiliser des composants Agno dans votre code.
# tracing.py

import base64
import os
from openinference.instrumentation.agno import AgnoInstrumentor
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk import trace as trace_sdk
from opentelemetry.sdk.trace.export import SimpleSpanProcessor
from opentelemetry import trace

# Charger les valeurs sensibles depuis les variables d'environnement
WANDB_BASE_URL = "https://trace.wandb.ai"
# Nom de votre entité/projet W&B, par ex. "myteam/myproject"
PROJECT_ID = os.environ.get("WANDB_PROJECT_ID")
# Créez une clé API W&B sur https://wandb.ai/settings
WANDB_API_KEY = os.environ.get("WANDB_API_KEY")

OTEL_EXPORTER_OTLP_ENDPOINT = f"{WANDB_BASE_URL}/otel/v1/traces"
AUTH = base64.b64encode(f"api:{WANDB_API_KEY}".encode()).decode()

OTEL_EXPORTER_OTLP_HEADERS = {
    "Authorization": f"Basic {AUTH}",
    "project_id": PROJECT_ID,
}

# Créer l'exportateur de spans OTLP avec le point de terminaison et les en-têtes
exporter = OTLPSpanExporter(
    endpoint=OTEL_EXPORTER_OTLP_ENDPOINT,
    headers=OTEL_EXPORTER_OTLP_HEADERS,
)

# Créer un fournisseur de traceur et ajouter l'exportateur
tracer_provider = trace_sdk.TracerProvider()
tracer_provider.add_span_processor(SimpleSpanProcessor(exporter))

# Définir le fournisseur de traceur global AVANT d'importer/utiliser Agno
trace.set_tracer_provider(tracer_provider)

Tracez les agents Agno avec OTEL

Après avoir configuré le fournisseur de traceur, vous pouvez créer et exécuter des agents Agno avec le Tracing automatique. Instrumentez Agno avant de créer des agents afin de vous assurer que Weave capture toute l’activité ultérieure des agents. L’exemple suivant montre comment créer un agent avec des outils :
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.yfinance import YFinanceTools

from dotenv import load_dotenv
load_dotenv()

# Load AgnoInstrumentor from the file created above
from tracing import AgnoInstrumentor

# Start instrumenting Agno
AgnoInstrumentor().instrument()

# Create a finance agent
finance_agent = Agent(
    name="Finance Agent",
    model=OpenAIChat(id="gpt-4o-mini"),
    tools=[
        YFinanceTools(
            stock_price=True,
            analyst_recommendations=True,
            company_info=True,
            company_news=True
        )
    ],
    instructions=["Use tables to display data"],
    show_tool_calls=True,
    markdown=True,
)

# Utiliser l'agent - Weave trace automatiquement cet appel
finance_agent.print_response(
    "What is the current stock price of Apple and what are the latest analyst recommendations?",
    stream=True
)
Weave trace automatiquement toutes les opérations de l’agent, ce qui vous permet de visualiser le flux d’exécution, les appels au modèle, les étapes de raisonnement et les appels d’outil.
Visualisation de la trace d’un agent Agno

Tracez les outils Agno avec OTEL

Lorsque vous définissez et utilisez des outils avec Agno, la trace capture également ces appels d’outil. L’intégration OTEL instrumente automatiquement à la fois le processus de raisonnement de l’agent et l’exécution de chaque outil, offrant une vue complète du comportement de votre agent. Voici un exemple avec plusieurs outils :
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.duckduckgo import DuckDuckGoTools
from agno.tools.yfinance import YFinanceTools

from dotenv import load_dotenv
load_dotenv()

# Charger AgnoInstrumentor depuis le fichier créé ci-dessus
from tracing import AgnoInstrumentor

# Démarrer l'instrumentation d'Agno
AgnoInstrumentor().instrument()

# Créer un agent avec plusieurs outils
research_agent = Agent(
    name="Research Agent",
    model=OpenAIChat(id="gpt-4o-mini"),
    tools=[
        DuckDuckGoTools(),
        YFinanceTools(stock_price=True, company_info=True),
    ],
    instructions=[
        "Search for current information and financial data",
        "Always include sources",
        "Use tables to display financial data"
    ],
    show_tool_calls=True,
    markdown=True,
)

# Utiliser l'agent - Weave trace les appels d'outil
research_agent.print_response(
    "Research Tesla's recent performance and news. Include stock price and any recent developments.",
    stream=True
)
Une visualisation de la trace des appels d’outil Agno

Tracez les équipes multi-agents avec OTEL

L’architecture multi-agent d’Agno vous permet de créer des équipes d’agents qui collaborent et partagent un contexte commun. Weave trace également entièrement ces interactions au sein de l’équipe :
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.duckduckgo import DuckDuckGoTools
from agno.tools.yfinance import YFinanceTools

from dotenv import load_dotenv
load_dotenv()

# Charger AgnoInstrumentor depuis le fichier tracing.py
from tracing import AgnoInstrumentor

# Démarrer l'instrumentation d'Agno
AgnoInstrumentor().instrument()

# Créer des agents spécialisés
web_agent = Agent(
    name="Web Agent",
    role="Search the web for information",
    model=OpenAIChat(id="gpt-4o-mini"),
    tools=[DuckDuckGoTools()],
    instructions="Always include sources",
    show_tool_calls=True,
    markdown=True,
)

finance_agent = Agent(
    name="Finance Agent",
    role="Get financial data",
    model=OpenAIChat(id="gpt-4o-mini"),
    tools=[YFinanceTools(stock_price=True, analyst_recommendations=True)],
    instructions="Use tables to display data",
    show_tool_calls=True,
    markdown=True,
)

# Créer une équipe d'agents
agent_team = Agent(
    team=[web_agent, finance_agent],
    model=OpenAIChat(id="gpt-4o"),
    instructions=["Always include sources", "Use tables to display data"],
    show_tool_calls=True,
    markdown=True,
)

# Utiliser l'équipe - Weave trace toutes les interactions des agents
agent_team.print_response(
    "What's the current market sentiment around NVIDIA? Include both news analysis and financial metrics.",
    stream=True
)
Cette trace multi-agents montre comment les différents agents se coordonnent dans Weave, en vous offrant une visibilité sur la façon dont les tâches sont réparties et exécutées au sein de votre équipe d’agents.
Une visualisation de la trace de l'équipe multi-agents Agno

Utiliser des agents de raisonnement

Agno fournit des capacités de raisonnement intégrées qui aident les agents à traiter les problèmes étape par étape. Les traces capturent également ces processus de raisonnement :
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.reasoning import ReasoningTools
from agno.tools.yfinance import YFinanceTools

from dotenv import load_dotenv
load_dotenv()

# Charger AgnoInstrumentor depuis le fichier tracing.py
from tracing import AgnoInstrumentor

# Démarrer l'instrumentation d'Agno
AgnoInstrumentor().instrument()

# Créer un agent de raisonnement
reasoning_agent = Agent(
    name="Reasoning Finance Agent",
    model=OpenAIChat(id="gpt-4o"),
    tools=[
        ReasoningTools(add_instructions=True),
        YFinanceTools(
            stock_price=True,
            analyst_recommendations=True,
            company_info=True,
            company_news=True
        ),
    ],
    instructions="Use tables to display data and show your reasoning process",
    show_tool_calls=True,
    markdown=True,
)

# Utiliser l'agent de raisonnement
reasoning_agent.print_response(
    "Should I invest in Apple stock right now? Analyze the current situation and provide a reasoned recommendation.",
    stream=True
)
La trace affiche les étapes du raisonnement, montrant comment l’agent décompose des problèmes complexes et prend des décisions.
Visualisation de la trace de l’agent de raisonnement Agno

Utiliser la mémoire et les connaissances

Les agents Agno peuvent conserver une mémoire et accéder à des bases de connaissances, ce qui leur permet de conserver le contexte d’une interaction à l’autre. Weave trace également ces opérations :
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.memory import AgentMemory
from agno.storage.sqlite import SqliteStorage

from dotenv import load_dotenv
load_dotenv()

# Charger AgnoInstrumentor depuis le fichier tracing.py
from tracing import AgnoInstrumentor

# Démarrer l'instrumentation d'Agno
AgnoInstrumentor().instrument()


# Créer un agent avec mémoire
memory_agent = Agent(
    name="Memory Agent",
    model=OpenAIChat(id="gpt-4o-mini"),
    memory=AgentMemory(),
    storage=SqliteStorage(
        table_name="agent_sessions",
        db_file="agent_memory.db"
    ),
    instructions="Remember our conversation history",
    show_tool_calls=True,
    markdown=True,
)

# Première interaction
memory_agent.print_response("My name is John and I'm interested in AI investing strategies.")

# Deuxième interaction - l'agent se souvient du contexte précédent
memory_agent.print_response("What specific AI companies would you recommend for my portfolio?")
Une visualisation de la trace de l'utilisation de la mémoire d'Agno
Les opérations en mémoire, notamment l’enregistrement et la récupération de l’historique des conversations, apparaissent dans la trace.

En savoir plus