Passer au contenu principal
Il s’agit d’un notebook interactif. Vous pouvez l’exécuter localement ou utiliser les liens ci-dessous :

Sorties structurées pour les systèmes multi-agents

OpenAI a publié les sorties structurées pour permettre aux utilisateurs de s’assurer que le modèle génère toujours des réponses conformes au schéma JSON fourni, sans avoir recours à des prompts formulés de manière insistante. Avec les sorties structurées, il n’est plus nécessaire de valider ni de retenter les réponses mal formatées. En utilisant le nouveau paramètre strict: true, nous pouvons garantir que la réponse respecte le schéma fourni. L’utilisation de sorties structurées dans un système multi-agents améliore la communication en garantissant des données cohérentes et faciles à traiter entre les agents. Elle renforce aussi la sécurité en autorisant des refus explicites et améliore les performances en supprimant le besoin de nouvelles tentatives ou de validations. Cela simplifie les interactions et augmente l’efficacité globale du système. Ce tutoriel montre comment utiliser les sorties structurées dans un système multi-agent et les tracer avec Weave.
Source : Ce cookbook est basé sur l’exemple de code d’OpenAI pour les sorties structurées, avec quelques modifications pour améliorer la visualisation avec Weave.

Installation des dépendances

Nous avons besoin des bibliothèques suivantes pour ce tutoriel :
  • OpenAI pour créer un système multi-agent.
  • Weave pour suivre notre flux de travail avec les LLM et évaluer nos stratégies de prompt.
Nous définissons WANDB_API_KEY dans nos variables d’environnement afin de pouvoir nous connecter facilement avec wandb.login() (cela doit être fourni à Colab en tant que secret). Nous définissons le projet dans W&B dans lequel nous voulons consigner ces données dans name_of_wandb_project. REMARQUE : name_of_wandb_project peut aussi être au format {team_name}/{project_name} pour préciser l’équipe dans laquelle consigner les traces. Nous récupérons ensuite un client Weave en appelant weave.init(). Puisque nous utiliserons l’API OpenAI, nous aurons également besoin d’une clé API OpenAI. Vous pouvez vous inscrire sur la plateforme OpenAI pour obtenir votre propre clé API. (cela doit aussi être fourni à Colab en tant que secret.)

Configuration des agents

Le cas d’usage que nous allons aborder est une tâche d’analyse de données. Commençons par configurer notre système de 4 agents :
  • Agent de triage : décide quel(s) agent(s) appeler
  • Agent de prétraitement des données : prépare les données pour l’analyse, par exemple en les nettoyant
  • Agent d’analyse de données : effectue l’analyse des données
  • Data Visualization Agent : visualise le résultat de l’analyse pour en extraire des enseignements Nous commencerons par définir les prompts système pour chacun de ces agents.
Nous définirons ensuite les outils de chaque agent. À l’exception de l’agent de triage, chaque agent disposera d’outils propres à son rôle : Agent de prétraitement des données : 1. Nettoyer les données, 2. Transformer les données, 3. Agréger les données Agent d’analyse des données : 1. Analyse statistique, 2. Analyse de corrélation, 3. Analyse de régression Agent de visualisation des données : 1. Créer un graphique en barres, 2. Créer un graphique linéaire, 3. Créer un diagramme circulaire

Activer le suivi d’un système multi-agent avec Weave

Nous devons écrire la logique nécessaire pour :
  • gérer la transmission de la requête utilisateur au système multi-agent
  • gérer le fonctionnement interne du système multi-agent
  • exécuter les appels d’outils
À partir de la requête de l’utilisateur, nous pouvons déduire que les outils à appeler sont clean_data, start_analysis et use_line_chart. Nous allons commencer par définir la fonction d’exécution chargée de lancer les appels d’outils. En décorant les fonctions Python avec @weave.op(), nous pouvons consigner dans le journal et déboguer les entrées, les sorties et les traces du modèle de langage. Lors de la création d’un système multi-agent, de nombreuses fonctions entreront en jeu, mais il suffit d’ajouter @weave.op() au-dessus de chacune d’elles.
Ensuite, nous allons créer les gestionnaires d’outils pour chacun des sous-agents. Chacun reçoit un prompt et un ensemble d’outils qui lui sont propres, transmis au modèle. Le résultat est ensuite transmis à une fonction d’exécution qui lance les appels d’outils.
Enfin, nous créons l’outil principal chargé de traiter la requête de l’utilisateur. Cette fonction prend la requête de l’utilisateur, obtient une réponse du modèle et la transmet aux autres agents pour exécution.

Exécuter des systèmes multi-agents et leur visualisation dans Weave

Enfin, nous exécutons la fonction principale handle_user_message à partir de la saisie de l’utilisateur et observons les résultats.
Lorsque nous cliquons sur l’URL de Weave, nous pouvons voir le Tracing de l’exécution, comme ci-dessous. Sur la page Traces, nous pouvons vérifier l’entrée et la sortie. Par souci de clarté, des captures d’écran des résultats affichés lorsque l’on clique sur chaque sortie ont été ajoutées au diagramme. Weave fournit une intégration avec l’API d’OpenAI, ce qui permet de calculer automatiquement les coûts. Nous pouvons donc également confirmer que le coût et la latence s’affichent tout à droite. 1-1.png En cliquant sur une ligne, nous pouvons voir les processus intermédiaires exécutés au sein du système multi-agent. Par exemple, en examinant l’entrée et la sortie de analysis_agent, nous pouvons voir qu’elles sont au format de sortie structuré. La sortie structurée d’OpenAI facilite la collaboration entre agents, mais à mesure que le système devient plus complexe, il devient plus difficile de comprendre le format dans lequel ces interactions se déroulent. L’utilisation de Weave nous permet de comprendre ces processus intermédiaires ainsi que leurs entrées et sorties, comme si nous les avions sous les yeux.
3.png
Examinons de plus près comment le Tracing est géré dans Weave !

Conclusion

Dans ce tutoriel, nous avons vu comment développer facilement un système multi-agent à l’aide des sorties structurées et de Weave d’OpenAI pour suivre les entrées, les sorties finales et les formats de sortie intermédiaires.