- Publié le
Le développement d'agents Anthropic : la simplicité l'emporte sur la complexité
Définition des agents intelligents
La notion d'agent intelligent est diversement interprétée. Certains les perçoivent comme des "gardiens tout-puissants" capables de réflexion autonome, de prise de décision et d'utilisation d'outils pour des tâches complexes. D'autres les considèrent comme des "employés modèles" suivant des procédures prédéfinies. Anthropic englobe ces deux conceptions sous le terme de systèmes intelligents, tout en distinguant les flux de travail et les agents :
- Flux de travail : Systèmes orchestrant des modèles de langage (LLM) et des outils via des chemins de code prédéterminés.
- Agents : Systèmes où le LLM guide dynamiquement le processus et l'utilisation des outils, contrôlant ainsi l'exécution des tâches de manière autonome.
Quand choisir un agent intelligent ?
Anthropic préconise une approche de développement IA basée sur la simplicité. Il n'est pas nécessaire de construire des systèmes complexes pour chaque situation. Bien que puissants, ces systèmes peuvent ralentir les réponses et augmenter les coûts. Les développeurs doivent donc équilibrer fonctionnalité et efficacité.
- Flux de travail : Idéaux pour les tâches claires nécessitant prédictibilité et cohérence.
- Agents : Plus adaptés aux environnements à grande échelle qui exigent flexibilité et prise de décision basée sur des modèles.
Dans de nombreux cas, un bon prompt, associé à une recherche et des exemples de contexte, est suffisant pour interroger directement un grand modèle.
L'utilisation des frameworks
De nombreux frameworks facilitent la construction d'agents IA, tels que :
- LangGraph de LangChain
- Le framework AI Agent d'Amazon Bedrock
- Rivet, un outil de construction de flux de travail LLM par glisser-déposer
- Vellum, un outil GUI pour la construction et le test de flux complexes
Ces frameworks simplifient le développement, mais peuvent aussi introduire une abstraction excessive, rendant la logique sous-jacente moins transparente et augmentant les difficultés de débogage. Ils peuvent même mener à des solutions inutilement complexes pour des problèmes simples.
Anthropic recommande de commencer directement avec l'API des grands modèles. De nombreux modèles peuvent être mis en œuvre avec quelques lignes de code. Si l'utilisation d'un framework s'avère nécessaire, il est crucial d'en comprendre le fonctionnement interne. Un manque de compréhension des mécanismes sous-jacents est une cause majeure de problèmes de développement. Le cookbook d'Anthropic fournit des exemples concrets.
Blocs de construction, flux de travail et agents
Blocs de construction de base : LLM améliorés
Le bloc de construction fondamental des systèmes intelligents est un LLM amélioré, doté de capacités de recherche et de mémoire. Les modèles d'Anthropic peuvent utiliser ces capacités de manière proactive, par exemple pour générer des requêtes de recherche, choisir des outils et décider des informations à conserver.
L'extension des fonctionnalités doit se concentrer sur :
- La personnalisation des fonctionnalités en fonction du contexte d'application.
- La garantie d'interfaces simples et bien documentées pour le modèle.
Le protocole de contexte récemment publié par Anthropic simplifie l'intégration des modèles IA avec des outils tiers.
Flux de travail : Chaînes de prompts
Les chaînes de prompts divisent les tâches complexes en plusieurs étapes, chacune faisant appel au grand modèle. Les étapes suivantes s'appuient sur les résultats des étapes précédentes. Des points de contrôle peuvent être ajoutés pour s'assurer du bon déroulement du processus.
Les chaînes de prompts conviennent aux tâches complexes pouvant être divisées en sous-tâches fixes. Chaque modèle se concentre sur une tâche simple, ce qui peut légèrement allonger le temps de réponse global, mais améliore considérablement la précision.
- Exemples d'applications typiques :
- Générer un texte marketing, puis le traduire dans d'autres langues.
- Écrire un plan de document et effectuer une vérification de conformité, puis rédiger le document complet sur la base de ce plan.
Flux de travail : Triage intelligent
Le triage intelligent identifie le type de tâche en entrée et l'attribue au module approprié. Cette approche permet d'optimiser chaque module pour des tâches spécifiques, évitant ainsi les interférences entre différents types de tâches. Le triage intelligent est adapté aux situations où les tâches ont des caractéristiques de classification claires. Un système d'IA, via un grand modèle de langage ou des algorithmes traditionnels, peut identifier avec précision le type de tâche et effectuer le triage.
- Exemples d'applications typiques :
- Dans un système de service client, diriger les demandes générales, les demandes de remboursement et l'assistance technique vers les processus appropriés.
- Attribuer les questions simples et courantes à des modèles plus petits, et les questions difficiles et rares à des modèles plus puissants, afin d'optimiser les coûts et la vitesse.
Flux de travail : Parallèle
Les grands modèles de langage peuvent traiter les tâches simultanément et agréger les résultats par programmation. Les caractéristiques des flux de travail parallèles sont :
- Segmentation des tâches : Les tâches sont divisées en sous-tâches exécutables en parallèle, avec une intégration des résultats à la fin.
- Mécanisme de vote : La même tâche est exécutée plusieurs fois, avec sélection du meilleur résultat ou synthèse des différentes réponses.
Cette approche est très efficace lorsque les sous-tâches peuvent être exécutées en parallèle pour augmenter la vitesse, ou lorsqu'il est nécessaire d'aborder un problème sous plusieurs angles pour obtenir un résultat plus fiable. Pour les tâches complexes, il est préférable de concentrer chaque appel sur un aspect spécifique.
- Exemples d'applications typiques :
- Segmentation des tâches :
- Sécurité : Un modèle traite la demande de l'utilisateur, un autre effectue la vérification du contenu.
- Évaluation des performances : Différents modèles évaluent les indicateurs de performance du système.
- Mécanisme de vote :
- Vérification de la sécurité du code : Plusieurs modèles de détection identifient conjointement les vulnérabilités du code.
- Modération du contenu : Plusieurs modèles évaluent la sécurité du contenu sous différents angles.
- Segmentation des tâches :
Flux de travail : Leader - Exécuteur
Un grand modèle de langage central décompose dynamiquement les tâches, les attribue aux modèles exécuteurs et synthétise les résultats.
Ce flux de travail convient aux tâches complexes où les étapes précises ne peuvent être déterminées à l'avance. La décomposition des tâches n'est pas fixe, mais décidée dynamiquement par le système d'IA, en fonction de la situation.
- Exemples d'applications typiques :
- Applications de programmation nécessitant des modifications complexes sur plusieurs fichiers.
- Tâches de recherche nécessitant la collecte et l'analyse d'informations provenant de plusieurs sources.
Flux de travail : Évaluation - Optimisation
Un LLM génère une réponse, tandis qu'un autre fournit une évaluation et un feedback, formant ainsi une boucle.
Ce flux de travail est particulièrement efficace lorsqu'il existe des critères d'évaluation clairs et que l'affinage itératif peut apporter une valeur significative. Le LLM peut fournir un feedback, de la même manière qu'un écrivain humain révise son travail.
- Exemples d'applications typiques :
- Traduction littéraire : Le modèle d'évaluation détecte les nuances linguistiques oubliées par la traduction et propose des modifications.
- Recherche complexe : Le modèle d'évaluation décide s'il est nécessaire de poursuivre la recherche de manière plus approfondie.
Agents intelligents
Les agents intelligents ont émergé avec la maturité des LLM dans des domaines clés tels que la compréhension d'entrées complexes, le raisonnement, la planification, l'utilisation d'outils et la récupération d'erreurs.
Le travail d'un agent commence par une commande ou une discussion avec un utilisateur humain. Une fois la tâche définie, l'agent planifie et opère de manière autonome, en pouvant solliciter davantage d'informations ou l'intervention humaine.
Il est crucial que chaque étape de l'exécution obtienne des informations "réelles" de l'environnement. L'agent peut s'interrompre à des points de contrôle ou en cas de blocage pour obtenir un feedback humain. La tâche se termine une fois achevée, mais inclut souvent des conditions d'arrêt.
Les agents sont capables de gérer des tâches complexes, mais leur mise en œuvre est généralement simple, souvent un simple cycle d'utilisation d'outils par un grand modèle de langage, basé sur le feedback de l'environnement. Il est donc essentiel de concevoir des ensembles d'outils et une documentation clairs et bien pensés.
Les agents conviennent aux questions ouvertes, où le nombre d'étapes nécessaires est difficile à prévoir et où une voie fixe ne peut être codée en dur. L'autonomie des agents en fait un choix idéal pour l'extension des tâches dans des environnements de confiance. L'autonomie des agents implique des coûts plus élevés et un risque d'accumulation d'erreurs. Il est recommandé de les tester largement dans un environnement de bac à sable et de mettre en place des mesures de protection appropriées.
- Exemples d'applications d'agents :
- Un agent de code pour résoudre des tâches SWE-bench impliquant la modification de plusieurs fichiers en fonction d'une description de tâche.
- La fonction "Computer use" d'Anthropic, où Claude utilise un ordinateur pour accomplir des tâches.
Combinaison et personnalisation
Ces blocs de construction ne sont pas prescriptifs. Les développeurs peuvent les adapter et les combiner en fonction de leurs cas d'utilisation. La clé du succès réside dans la mesure des performances et l'itération. Il ne faut envisager d'ajouter de la complexité que lorsque des solutions plus simples se révèlent insuffisantes. Le succès dans le domaine des LLM ne dépend pas de la construction du système le plus complexe, mais de la construction du système adapté aux besoins. Il faut commencer par des prompts simples, les optimiser par une évaluation complète, et n'ajouter des systèmes d'agents à plusieurs étapes que lorsque les solutions plus simples ne sont pas suffisantes.
Lors du déploiement d'agents, il est important de suivre les principes suivants :
- Maintenir la simplicité de la conception de l'agent.
- Prioriser la transparence de l'agent en montrant clairement chaque étape prévue.
- Créer soigneusement l'interface agent-ordinateur (ACI) grâce à une documentation complète des outils et des tests.