Passer au contenu principal
Le SDK OpenAI Agents est un framework léger qui permet de créer des agents et des flux de travail multi-agent à partir de l’API d’OpenAI. Weave trace automatiquement les agents créés avec le SDK OpenAI Agents, y compris chaque appel d’agent, transfert vers un sous-agent, appel de modèle et appel d’outil. Weave affiche les données capturées dans la vue Agents de votre project.

Tracer des agents du SDK OpenAI Agents avec Weave

Le SDK Weave effectue un patching automatique avec le SDK OpenAI Agents pour Python, ce qui vous permet de capturer les traces de vos agents avec une configuration minimale. Ce guide explique comment initialiser Weave, puis exécuter un agent de recherche multitour créé avec le SDK OpenAI Agents afin que Weave capture chaque appel d’agent, chaque appel de modèle et chaque appel d’outil pendant toute la session.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :
  • Un compte W&B et une clé API définie comme variable d’environnement WANDB_API_KEY.
  • Une clé API OpenAI.
  • Python 3.10+.

Installer les packages

Installez les packages suivants dans votre environnement de développement afin que Weave et le SDK soient disponibles pour votre script.
pip install weave openai-agents requests

Initialisez Weave dans votre code

Ajoutez weave.init à votre projet, avec les noms de votre équipe W&B et de votre projet, puis créez votre agent comme d’habitude. Le code suivant définit une fonction-outil wikipedia_search et un agent Research assistant, puis exécute trois questions via le Runner du SDK OpenAI Agents, tandis que Weave capture la trace.
import asyncio
import requests
import weave
from agents import Agent, Runner, function_tool

weave.init("<your-team>/<your-project-name>")

@function_tool
def wikipedia_search(query: str) -> str:
    """Search Wikipedia for a topic and return its title and intro paragraph."""
    r = requests.get(
        "https://en.wikipedia.org/w/api.php",
        params={
            "action": "query", "generator": "search", "gsrsearch": query, "gsrlimit": 1,
            "prop": "extracts", "exintro": True, "explaintext": True, "format": "json",
        },
        headers={"User-Agent": "weave-demo"},
    ).json()
    page = next(iter(r["query"]["pages"].values()))
    return f"{page['title']}: {page['extract']}"

agent = Agent(
    name="Research assistant",
    instructions=(
        "You are a research assistant. Use the wikipedia_search tool to look up "
        "topics when needed, and cite the article titles you used."
    ),
    tools=[wikipedia_search],
)

async def main():
    history = []
    for question in [
        "Who founded Anthropic?",
        "What is Claude (the AI assistant)?",
        "Summarize what we discussed in one sentence.",
    ]:
        history.append({"role": "user", "content": question})
        print(f"USER: {question}")
        result = await Runner.run(agent, input=history)
        print(f"AGENT: {result.final_output}\n")
        history = result.to_input_list()

asyncio.run(main())
L’exemple exécute trois tours de conversation au sein d’une même conversation. Les deux premiers tours de conversation déclenchent des consultations sur Wikipédia, et le troisième utilise le contexte de la conversation précédente pour produire une synthèse sans appel à un outil. Chaque appel à Runner.run poursuit la conversation en repassant la liste d’entrées du résultat précédent comme requête suivante.

Voir les traces de votre agent dans la vue Agents

Une fois le script exécuté, weave.init() affiche un lien vers votre project. Ouvrez la vue Agents pour examiner :
  • Une session contenant les tours de conversation.
  • Chaque tour de conversation affiché sous la forme d’un span invoke_agent avec des enfants chat et execute_tool imbriqués.
  • L’entrée complète, le model, la sortie, l’utilisation des jetons et les résultats des outils à chaque étape.
Pour en savoir plus sur l’affichage des données des Agents dans Weave, voir Voir l’activité de l’agent.