Read in English · Leer en español · Auf Deutsch lesen
Section 12.4 sur 12.8 · Avancé · 32 min de lecture
Agents, utilisation d’outils et orchestration
Leçon vidéo
5 min · narré en anglais, avec sous-titresÉcouter seulement (audio)
Lire la transcription
Jusqu’ici, le modèle a produit du texte. Beaucoup de systèmes utiles doivent aussi agir : consulter une commande, émettre un remboursement, lancer un test. Cette leçon explique comment le faire en toute sécurité.
Imaginez un nouvel assistant compétent, à son premier jour. Il peut lire les dossiers que vous lui confiez et proposer quoi faire. Mais il n’a aucune clé à lui. Pour consulter quelque chose ou envoyer un remboursement, il remplit un bon de demande. Un responsable vérifie le bon, l’exécute et lui rend le résultat. Vous lui donnez une limite de temps et une règle selon laquelle tout ce qui coûte cher exige une signature. Un agent fonctionne de la même manière : le modèle propose des actions, et un logiciel ordinaire les vérifie et les exécute.
Avec l’appel d’outils, le modèle peut répondre par une demande structurée d’utilisation d’un outil, au lieu de prose. La tâche de l’utilisateur va donc à un appel du modèle, qui renvoie une réponse finale ou un appel d’outil. Chaque appel d’outil est validé dans le code : par rapport à son schéma, aux règles métier et aux droits propres de l’utilisateur. S’il est autorisé, le code exécute l’outil, avec un délai d’expiration et une clé d’idempotence. Le résultat est ajouté au contexte comme observation, les limites d’étapes, de temps et de tokens sont vérifiées, et la boucle recommence. Raisonner, agir, observer : c’est cette boucle qui fait un agent. Les outils de lecture, comme la consultation des commandes, peuvent s’exécuter librement. Les outils d’écriture, comme la proposition d’un remboursement, passent par une approbation humaine quand ils comptent. Tout ce qui se trouve hors du bloc du modèle est un logiciel ordinaire. Le modèle ne fait que proposer, et c’est de là que viennent la fiabilité et la sûreté d’un agent.
Les workflows font passer modèles et outils par des chemins de code prédéfinis ; les agents laissent le modèle diriger son propre processus. Commencez simplement. Le chaînage de prompts exécute des étapes fixes : extraire la réclamation, la classer, puis rédiger une réponse. Le routage classe l’entrée et l’envoie à son propre gestionnaire, comme les commandes en retard ou les questions sur les allergènes. La parallélisation exécute des vérifications indépendantes en même temps, ou fait voter plusieurs fois sur une même question. Avec l’orchestrateur et les workers, un modèle découpe une tâche en sous-tâches à l’exécution. Et avec l’évaluateur et l’optimiseur, un appel rédige et un autre vérifie. Le coût et les défaillances d’un workflow sont prévisibles : n’utilisez donc un agent autonome que lorsque les étapes ne peuvent pas être connues à l’avance.
Sans standard, chaque assistant aurait besoin de sa propre intégration avec chaque système. Le Model Context Protocol, ou MCP, remplace cela par un seul protocole ouvert. Une application hôte exécute un client MCP par connexion. Chaque client dialogue avec un serveur MCP. Ici, un serveur local encapsule des fichiers, et des serveurs distants encapsulent un service de tickets et le service de commandes. Les serveurs offrent des outils, des ressources et des prompts, et les serveurs distants autorisent les clients avec OAuth. Un serveur peut lire vos données et agir pour vous : traitez-le donc comme une dépendance. Approuvez et épinglez les serveurs autorisés, donnez à chacun le moindre privilège, et souvenez-vous que les résultats des outils peuvent transporter des instructions injectées.
Suivons un remboursement. Un client écrit que sa commande est arrivée sans les deux limonades. L’agent s’exécute avec des limites de huit étapes, trente secondes et vingt mille tokens. D’abord, le modèle appelle un outil de lecture pour obtenir les articles de la commande. Le code vérifie que la commande appartient au client connecté, puis renvoie deux limonades à deux livres vingt chacune. Ensuite, le modèle propose un remboursement, mais ne fournit aucun montant. Le service de remboursement calcule quatre livres quarante et applique la politique dans le code, y compris la limite automatique de quinze livres. Le client confirme. Puis la réponse dépasse le délai d’expiration. L’orchestrateur fait une nouvelle tentative avec la même clé d’idempotence, et le service renvoie le résultat d’origine. Le client est donc remboursé une fois, et non deux. Si la réclamation avait été de vingt-deux livres, le service aurait répondu qu’elle exigeait une approbation, et le dossier serait parti vers un conseiller humain avec les éléments justificatifs. Gardez les exécutions courtes. Avec quatre-vingt-quinze pour cent d’étapes justes, une exécution de trois étapes réussit environ quatre-vingt-six pour cent du temps, et une exécution de vingt étapes seulement trente-six environ.
Les agents échouent de façons nouvelles : ils tournent en boucle, s’égarent ou revendiquent un succès qu’ils n’ont pas obtenu. Plafonnez donc les étapes, le temps et les tokens, et arrêtez-vous quand le même appel ne cesse de se répéter. Validez chaque appel d’outil dans le code, et exécutez les outils avec les droits de la personne que l’agent sert, et non avec un compte de service puissant. Rendez chaque écriture idempotente, et enregistrez un point de reprise après chaque étape, afin qu’un plantage reprenne l’exécution au lieu de la répéter. Exigez une approbation humaine pour les effets de bord lourds de conséquences, en montrant l’action exacte et ses éléments justificatifs. Et tracez chaque appel de modèle et chaque appel d’outil, isolez dans une sandbox tout code écrit par l’agent, et gardez un moyen rapide de le désactiver.
La section complète traite aussi de la mémoire et de l’état, ainsi que du débat sur les systèmes multi-agents. Ensuite, dans la section douze point cinq, nous verrons comment tester quelque chose de probabiliste. À très vite.
Ce qu’il faut savoir
- Avec l’appel d’outils, le modèle renvoie une demande structurée d’appel d’une fonction décrite ; l’application la valide, l’autorise et l’exécute, de sorte que chaque effet passe par du code que vous maîtrisez.
- Un agent répète une boucle raisonner, agir et observer (ReAct, Yao et al., 2022) jusqu’à ce que l’objectif soit atteint ou qu’une limite l’arrête ; chaque pas vers l’autonomie échange de la prévisibilité contre de la flexibilité.
- Les patrons de workflow (chaînage de prompts, routage, parallélisation, orchestrateur-workers, évaluateur-optimiseur) ont des formes prévisibles et devraient généralement être essayés avant un agent autonome.
- Les outils sont des interfaces pour les modèles : des descriptions claires, peu de paramètres typés, des résultats concis, des erreurs exploitables, la lecture séparée de l’écriture et aussi peu d’outils que possible à la fois.
- Le Model Context Protocol (Anthropic, novembre 2024 ; gouverné par l’Agentic AI Foundation, au sein de la Linux Foundation, depuis décembre 2025) normalise la façon dont les hôtes se connectent à des serveurs qui exposent des outils, des ressources et des prompts ; les serveurs sont des dépendances à approuver, à épingler et à restreindre.
- La mémoire et l’état d’exécution d’un agent résident hors du modèle ; des points de reprise ou une exécution durable permettent de reprendre une exécution sans répéter les effets de bord.
- Des agents fiables exigent des limites d’étapes, de temps et de tokens, la détection des boucles, la validation dans le code, les droits propres de l’utilisateur, des écritures idempotentes, une approbation humaine pour les actions lourdes de conséquences, une sandbox et un traçage complet.
De la réponse à l’action
Les systèmes des sections précédentes produisent du texte. Beaucoup de systèmes utiles doivent aussi agir : consulter une commande, chercher dans une base de connaissances, émettre un remboursement, réserver une table, lancer une suite de tests. L’appel d’outils (tool calling), souvent appelé function calling, en est le mécanisme. L’application décrit les outils disponibles, chacun avec un nom, une description et un JSON Schema pour ses paramètres. Au lieu de répondre en prose, le modèle peut renvoyer une demande structurée d’appel d’un ou plusieurs de ces outils avec des arguments précis. C’est l’application, et non le modèle, qui décide d’exécuter ou non l’appel, l’exécute et renvoie le résultat au modèle, qui poursuit alors. Le modèle ne touche jamais lui-même une base de données ou une API ; chaque effet dans le monde passe par du code que vous avez écrit.
Un agent est un système dans lequel le modèle choisit ses actions de manière répétée : il appelle un outil, lit le résultat, décide de la suite et continue jusqu’à ce que l’objectif soit atteint ou qu’une limite l’arrête. L’autonomie est un continuum. À une extrémité, du code appelle le modèle une fois pour remplir un formulaire ; à l’autre, un modèle planifie et exécute une longue tâche avec des dizaines d’appels d’outils et peu de supervision. Sur le plan architectural, le point important est que chaque pas vers l’autonomie fait passer des décisions d’un code déterministe et vérifiable à un composant probabiliste, ce qui augmente la flexibilité et diminue la prévisibilité, la testabilité et le contrôle. Ce compromis doit être fait délibérément, aussi tard et aussi peu que le problème l’exige.
{
"name": "get_order_status",
"description": "Look up the current status of one order placed by the signed-in customer. Use when the customer asks where an order is. Returns status, estimated arrival and courier position. Changes nothing.",
"input_schema": {
"type": "object",
"properties": {
"order_id": {
"type": "string",
"pattern": "^ORD-[0-9]{6}$",
"description": "Order number, for example ORD-104233"
}
},
"required": ["order_id"],
"additionalProperties": false
}
}La boucle de l’agent : raisonner, agir, observer
La boucle qui sous-tend presque tous les agents a été décrite par Shunyu Yao et ses collègues dans ReAct: Synergizing Reasoning and Acting in Language Models (2022). ReAct entrelace le raisonnement (le modèle écrit ce qu’il cherche à faire), les actions (il appelle un outil) et les observations (le résultat de l’outil est ajouté à son contexte), de sorte que chaque étape s’appuie sur ce que la précédente a trouvé. Avant ReAct, les modèles soit raisonnaient sans accès aux faits, et hallucinaient, soit agissaient sans raisonner, et erraient. Les interfaces d’appel d’outils et les modèles de raisonnement actuels intègrent cette boucle, mais c’est toujours autour de sa structure qu’il faut concevoir.
En code, la boucle est courte. Construire le contexte (instructions, objectif, historique, définitions d’outils, résultats obtenus jusque-là) ; appeler le modèle ; s’il renvoie une réponse finale, s’arrêter ; s’il renvoie des appels d’outils, valider chacun par rapport à son schéma et aux règles métier, vérifier que l’utilisateur y a droit, l’exécuter avec un délai d’expiration (timeout), ajouter le résultat (ou un message d’erreur clair) au contexte, vérifier les limites et recommencer. Le diagramme ci-dessous montre où le code déterministe entoure le modèle. Tout ce qui se trouve hors du bloc du modèle est un logiciel ordinaire qui peut être testé, revu et appliqué ; c’est de là que viennent la fiabilité et la sûreté d’un agent.
Une boucle d’agent avec des outils
Workflows et agents
Dans Building effective agents (décembre 2024), Erik Schluntz et Barry Zhang, d’Anthropic, ont établi une distinction devenue depuis du vocabulaire courant. Les workflows orchestrent les modèles et les outils selon des chemins de code prédéfinis ; les agents laissent le modèle diriger son propre processus et son utilisation des outils. Ils ont décrit un petit ensemble de patrons de workflow, tous construits à partir d’un LLM augmenté (un modèle doté de récupération, d’outils et de mémoire), et ont conseillé de commencer par la conception la plus simple qui fonctionne, souvent un seul appel bien formulé avec récupération, et de n’ajouter un comportement agentique que lorsqu’il améliore les résultats de façon démontrable.
Ce conseil rejoint la position générale de ce cours sur la simplicité. Un workflow a une forme connue : son coût, sa latence et ses modes de défaillance peuvent être prévus et ses étapes testées une à une. Un agent peut traiter des tâches ouvertes dont les étapes ne peuvent pas être connues à l’avance, comme enquêter sur un bug inconnu ou étudier une question à travers de nombreuses sources, au prix d’un coût variable, de tests plus difficiles et de davantage de façons de mal tourner. Beaucoup de systèmes présentés comme des agents seraient meilleurs sous forme de workflows, et beaucoup de bons agents contiennent des workflows.
Patrons de workflow et agents autonomes
| Patron | Comment ça marche | Exemple de la livraison de repas | À utiliser quand |
|---|---|---|---|
| Chaînage de prompts | Une suite fixe d’appels au modèle, chacun utilisant la sortie du précédent, avec des vérifications dans le code entre les étapes | Extraire la réclamation, puis la classer, puis rédiger une réponse dans la langue du client | La tâche se découpe nettement en étapes fixes ; chaque étape est plus facile que l’ensemble |
| Routage | Classer l’entrée, puis l’envoyer à un prompt, un modèle ou un gestionnaire spécialisé | Commande en retard, article manquant, question sur les allergènes et problème de compte vont chacun à leur propre gestionnaire | Les entrées se répartissent en catégories distinctes qui demandent des traitements différents |
| Parallélisation | Exécuter des appels en même temps : le sectionnement découpe une tâche en parties indépendantes ; le vote exécute plusieurs fois la même tâche et combine les résultats | Vérifier en parallèle une nouvelle carte pour les allergènes, les erreurs de prix et les articles interdits ; voter trois fois pour savoir si un avis est injurieux | Les parties sont indépendantes, ou plusieurs avis augmentent la confiance |
| Orchestrateur-workers | Un modèle découpe la tâche en sous-tâches à l’exécution, les délègue à des appels workers, puis combine les résultats | Chercher pourquoi les délais de livraison d’une ville ont augmenté : examiner la météo, les effectifs et les retards des restaurants | Les sous-tâches ne peuvent pas être connues à l’avance |
| Évaluateur-optimiseur | Un appel produit un résultat, un autre l’évalue selon des critères et renvoie un retour, en boucle | Rédiger un e-mail d’intégration pour un restaurant ; un second appel vérifie le ton et la conformité à la politique et demande des modifications | Des critères d’évaluation clairs existent et l’itération aide de façon mesurable |
| Agent autonome | Le modèle planifie et agit en boucle avec des outils jusqu’à ce que la tâche soit terminée ou qu’il soit arrêté | Résoudre un dossier de support complexe impliquant commandes, paiements et livreurs | Tâches ouvertes aux étapes imprévisibles, dans un environnement où les erreurs restent contenues |
Concevoir des outils pour les modèles
Les outils sont une interface dont l’utilisateur est un modèle, et ils méritent le soin accordé à toute API. Schluntz et Zhang parlent d’interface agent-ordinateur. Donnez à chaque outil un objectif clair, ainsi qu’un nom et une description qui disent quand l’utiliser, quand ne pas l’utiliser et ce qu’il renvoie ; les modèles choisissent les outils surtout d’après leur description. Gardez des paramètres peu nombreux et typés, utilisez des énumérations plutôt que du texte libre et rejetez les champs inconnus. Rendez les erreurs difficiles à commettre, par exemple en exigeant des identifiants absolus plutôt que des positions dans une liste. Renvoyez des résultats concis et pertinents, car chaque token d’un résultat d’outil est payé et occupe la fenêtre de contexte ; paginez et résumez les résultats volumineux. Renvoyez des erreurs sur lesquelles le modèle peut agir (commande introuvable ; demandez au client de vérifier le numéro
) plutôt que des traces de pile.
Séparez la lecture de l’écriture. Les outils de lecture peuvent généralement s’exécuter librement ; les outils d’écriture modifient le monde et exigent validation, autorisation, idempotence et parfois approbation. Gardez petit le nombre d’outils disponibles à un instant donné, car de grands ensembles d’outils embrouillent les modèles et élargissent la surface d’attaque ; routez vers un sous-ensemble, ou chargez les définitions d’outils à la demande. Demandez une sortie structurée chaque fois que du code consommera le résultat : beaucoup d’API peuvent contraindre la génération à un JSON Schema, ce qui élimine les échecs d’analyse mais pas les valeurs erronées ; la validation du contenu reste donc nécessaire.
Le Model Context Protocol
Sans cela, chaque assistant qui veut atteindre chaque source de données ou chaque outil aurait besoin d’une intégration sur mesure pour chaque paire : N applications fois M systèmes. Le Model Context Protocol (MCP), présenté par Anthropic comme un standard ouvert en novembre 2024, remplace cela par un seul protocole, comme le Language Server Protocol l’a fait pour les éditeurs de code. Une application hôte (un assistant conversationnel, un IDE, un agent) exécute un client MCP par connexion à un serveur MCP. Les serveurs exposent des outils (des fonctions que le modèle peut appeler), des ressources (des données que l’application peut charger dans le contexte) et des prompts (des modèles réutilisables). Les messages utilisent JSON-RPC 2.0, via l’entrée et la sortie standard pour les serveurs locaux ou via HTTP pour les serveurs distants, et les serveurs distants utilisent une autorisation fondée sur OAuth.
L’adoption a été rapide. En décembre 2025, Anthropic faisait état de plus de 10 000 serveurs MCP publics actifs et d’une prise en charge dans des produits comme ChatGPT, Cursor, Gemini, Microsoft Copilot et Visual Studio Code. Le 9 décembre 2025, Anthropic a fait don de MCP à l’Agentic AI Foundation, nouvellement créée, un fonds dédié au sein de la Linux Foundation cofondé par Anthropic, Block et OpenAI : le protocole est donc désormais gouverné dans un cadre neutre vis-à-vis des fournisseurs. La spécification est versionnée par date. La révision 2026-07-28 a rendu le protocole de base sans état, afin que les serveurs distants puissent fonctionner derrière des équilibreurs de charge ordinaires sans sessions persistantes ; elle a ajouté la prise en charge d’extensions facultatives et sorti les tâches de longue durée du cœur pour les placer dans une extension officielle ; elle a renforcé l’autorisation ; et elle a déprécié d’anciennes fonctionnalités (roots, sampling et logging) avec une période de transition d’au moins un an. Pour la communication entre agents indépendants, plutôt qu’entre une application et ses outils, Google a présenté le protocole Agent2Agent (A2A) en avril 2025 ; il a été confié à la Linux Foundation en juin 2025 et, en août 2026, ses promoteurs ont annoncé qu’il rejoindrait lui aussi l’Agentic AI Foundation.
Sur le plan architectural, un serveur MCP est une dépendance qui peut lire vos données et agir en votre nom : traitez-le comme tel. Approuvez et épinglez les serveurs autorisés, dans le cadre de la sécurité de la chaîne d’approvisionnement ; préférez les serveurs exploités par vous ou par un fournisseur de confiance ; donnez aux identifiants de chaque serveur le moindre privilège dont ses outils ont besoin ; souvenez-vous que les descriptions et les résultats des outils entrent dans le contexte du modèle et peuvent transporter des instructions injectées ; et faites passer le trafic MCP distant par la même passerelle et les mêmes contrôles de journalisation et de politique que le reste du trafic vers les modèles. Le protocole normalise la tuyauterie ; il ne décide pas de ce qu’un agent devrait être autorisé à faire.
Hôtes, clients et serveurs MCP
Mémoire et état
Les modèles sont sans état : la mémoire d’un agent est donc tout ce que le système environnant stocke et replace dans le contexte. La mémoire à court terme est la conversation et les résultats des appels d’outils effectués jusque-là. Elle grandit à chaque étape, ce qui augmente le coût et la latence et finit par dépasser la fenêtre ; les agents de longue durée la gèrent donc : ils suppriment ou raccourcissent les anciens résultats d’outils, résument les tours précédents (compaction) et tiennent un plan courant ou un fichier de notes que le modèle met à jour. La mémoire à long terme est l’information conservée d’une session à l’autre, comme les préférences alimentaires d’un client ou des faits qu’un assistant a appris sur un projet, stockée dans une base de données et récupérée quand elle est pertinente, ce qui en fait un petit système RAG, avec les mêmes questions de pertinence, de fraîcheur et de contrôle d’accès.
L’état d’exécution est ce qui compte le plus pour la fiabilité. Si un agent est à mi-chemin d’une tâche de vingt étapes quand son processus redémarre, il doit reprendre, et non recommencer en répétant des effets de bord. Persistez l’état après chaque étape (le contexte, le plan, les appels d’outils terminés et leurs résultats) sous forme de point de reprise, ou exécutez l’agent sur un moteur d’exécution durable qui s’en charge pour vous, comme on exécute les processus métier de longue durée et les sagas. La mémoire est aussi une donnée à caractère personnel : décidez de ce qui est mémorisé, pour combien de temps, si les utilisateurs peuvent le consulter et le supprimer, et tenez la mémoire d’un client hors du contexte d’un autre (voir protection de la vie privée dès la conception).
Systèmes multi-agents
Un système multi-agents répartit le travail entre plusieurs agents pilotés par des modèles, en général un agent principal qui planifie et délègue à des sous-agents, chacun avec ses propres instructions, ses outils et sa fenêtre de contexte, et dont l’agent principal combine les résultats. Les avantages sont le parallélisme, la spécialisation et, surtout, la séparation des contextes : chaque sous-agent peut explorer une grande quantité de matériau et ne renvoyer qu’un court résumé. Anthropic a indiqué en juin 2025 que son système de recherche multi-agents surpassait nettement un agent unique dans son évaluation de recherche interne, mais aussi que de tels systèmes consommaient environ 15 fois plus de tokens que des conversations ordinaires, et qu’ils convenaient mieux à des tâches larges et parallélisables qu’à des tâches fortement couplées comme la plupart des tâches de programmation.
Les praticiens ne s’accordent pas sur le degré à atteindre. Le même mois, Walden Yan, de Cognition, soutenait dans Don’t Build Multi-Agents que des sous-agents travaillant à partir d’un contexte partiel font des hypothèses contradictoires, et recommandait par défaut un agent à fil unique avec une gestion soignée du contexte. Les deux positions s’accordent sur la cause profonde : la coordination entre agents est une communication avec pertes entre des composants qui ne partagent pas d’état. C’est le problème central des systèmes distribués, et les mêmes conseils s’appliquent. Ne distribuez pas sans raison ; gardez des interfaces explicites et étroites entre les agents ; préférez des sous-tâches indépendantes ; tracez chaque saut ; et attendez-vous à ce que le coût, la latence et les modes de défaillance se multiplient avec le nombre d’agents.
Exemple commenté
Exemple commenté : un remboursement traité par l’agent de support
Un client écrit : La commande ORD-104233 est arrivée sans les deux limonades.
L’assistant de support de la section 12.2 exécute une courte boucle d’agent limitée à 8 étapes, 30 secondes et 20 000 tokens.
| Étape 1 : lire | Le modèle appelle get_order_items("ORD-104233"). Le code vérifie que la commande appartient au client connecté, puis renvoie les articles, dont 2 × limonade à £2,20, livrées à 19 h 42. |
|---|---|
| Étape 2 : écrire | Le modèle appelle propose_refund pour les deux limonades, motif article manquant; il ne fournit aucun montant. C’est le service de remboursement, et non le modèle, qui calcule £4,40 à partir de la commande et applique la politique dans le code : articles présents sur la commande, réclamation dans les 48 heures, £4,40 sous la limite automatique de £15, aucun remboursement antérieur sur la commande et moins de trois remboursements en 30 jours. Le client confirme le remboursement sur une carte dans l’application (section 12.6), et le service l’enregistre sous une clé d’idempotence dérivée de la conversation, de la commande et des articles. |
| Défaillance gérée | La réponse à l’étape 2 dépasse le délai d’expiration. L’orchestrateur fait une nouvelle tentative avec la même clé d’idempotence ; le service de remboursement renvoie le résultat d’origine, si bien que le client est remboursé une fois, et non deux. |
| Étape 3 : répondre | Le modèle répond en indiquant le montant et le moment où il apparaîtra, et la conversation est close, sa trace enregistrée. |
| Règle d’escalade | Si la réclamation avait été de £22, le service de remboursement aurait renvoyé approbation requise, et le dossier serait parti vers la console des conseillers avec l’action proposée et les éléments justificatifs. |
| Pourquoi les exécutions courtes comptent | Si chaque étape est juste 95 % du temps, indépendamment des autres, une exécution de 3 étapes réussit environ 86 % du temps (0,953), une exécution de 10 étapes environ 60 % et une exécution de 20 étapes environ 36 %. Gardez les exécutions courtes, vérifiez après chaque étape et faites dans le code tout ce qui peut être fait dans le code. |
Le modèle a choisi quoi faire ; du code déterministe a décidé si c’était permis et a rendu l’opération rejouable sans risque.
Les limites de la politique résident dans le service de remboursement, où elles sont testées et auditées, et non dans le prompt, où elles ne sont que des suggestions.
Ingénierie de la fiabilité des agents
Les agents échouent de façons nouvelles : ils tournent en boucle, appelant le même outil avec les mêmes arguments ; ils s’égarent, poursuivant une question secondaire jusqu’à épuisement du budget ; ils abandonnent trop tôt ou revendiquent un succès qu’ils n’ont pas obtenu ; et ils entreprennent des actions que leurs concepteurs n’avaient pas prévues. Les remèdes sont les patrons du chapitre 9 et du chapitre 6, appliqués à chaque étape plutôt qu’une fois par requête, plus une règle ferme : les effets de bord lourds de conséquences exigent davantage que l’avis du modèle. La section 12.6 traite en profondeur le versant sécurité, l’autonomie excessive ; la liste de contrôle ci-dessous couvre la fiabilité.
Liste de contrôle : rendre un agent fiable
- Limites d’étapes, de temps et de tokensPlafonnez les itérations, le temps réel écoulé et les tokens (ou le coût) par exécution, et arrêtez-vous avec un résultat clair quand un plafond est atteint, jamais en silence.
- Détection des bouclesArrêtez ou intervenez quand le même outil est appelé de manière répétée avec les mêmes arguments, ou quand aucun progrès n’est fait sur plusieurs étapes.
- Valider chaque appel d’outil dans le codeVérifiez les arguments par rapport au schéma et aux règles métier avant l’exécution ; renvoyez au modèle une erreur utile quand un appel est rejeté.
- Agir avec les droits de l’utilisateurLes outils s’exécutent avec les droits de la personne que l’agent sert, et non avec un compte de service puissant, afin que l’agent ne puisse pas devenir un député confus (confused deputy).
- Outils d’écriture idempotentsChaque écriture prend une clé d’idempotence afin que les nouvelles tentatives après un délai d’expiration ne puissent pas dupliquer des remboursements, des réservations ou des messages.
- Approbation humaine pour les effets de bord lourds de conséquencesMontrez l’action exacte et ses éléments justificatifs avant qu’elle n’ait lieu ; définissez les seuils (montant, réversibilité, audience) dans le code.
- Points de reprise et reprisePersistez l’état après chaque étape, ou utilisez une exécution durable, afin qu’un plantage reprenne l’exécution au lieu de la répéter.
- Compensations pour les modifications en plusieurs étapesLorsque plusieurs systèmes changent, concevez des actions compensatoires comme dans une saga, et enregistrez ce qui a été fait.
- Isoler le code et l’accès réseau dans une sandboxExécutez tout code écrit par l’agent dans un environnement isolé, sans secrets, avec une liste d’autorisation de destinations réseau.
- Tracer et évaluer les trajectoiresEnregistrez chaque appel de modèle et chaque appel d’outil avec ses entrées, ses sorties, ses durées et son coût ; évaluez le chemin suivi, pas seulement la réponse finale.
- Interrupteur d’arrêt (kill switch) et déploiement progressifPlacez les capacités de l’agent derrière des feature flags, mettez-les d’abord en production pour une petite part du trafic et gardez un moyen rapide de les désactiver.
Vérifiez votre compréhension
Que normalise le Model Context Protocol, et que vous laisse-t-il ?
Il normalise la façon dont les applications hôtes se connectent à des serveurs qui exposent des outils, des ressources et des prompts ; il ne décide pas des serveurs auxquels se fier ni de ce qu’un agent peut en faire.
Pourquoi séparer les outils de lecture des outils d’écriture ?
Les lectures peuvent généralement s’exécuter librement, tandis que les écritures modifient le monde et exigent validation, autorisation, idempotence et parfois approbation humaine.
À quoi sert un point de reprise dans une longue exécution d’agent ?
Il enregistre le contexte, le plan et les appels d’outils terminés après chaque étape, afin qu’une exécution interrompue par un plantage puisse reprendre sans répéter les effets de bord.
Citez un argument pour et un argument contre les conceptions multi-agents.
Pour : les sous-agents travaillent en parallèle avec des contextes séparés et renvoient de courts résumés. Contre : ils font des hypothèses contradictoires à partir d’un contexte partiel et multiplient le coût en tokens et les modes de défaillance.
Sources et lectures complémentaires
- Yao et al.: ReAct: Synergizing Reasoning and Acting in Language Models (2022)
- Erik Schluntz and Barry Zhang: Building effective agents (Anthropic, 2024)
- Model Context Protocol specification, version 2026-07-28
- Anthropic: Donating the Model Context Protocol and establishing the Agentic AI Foundation (2025)
- Walden Yan: Don't Build Multi-Agents (Cognition, 2025)
Une question sur cette section ? ArchitectBot, l’assistant d’étude IA du cours, répond d’abord à partir du cours.
Demander : « Comment empêcher un agent d’IA d’émettre deux fois le même remboursement si un appel d’outil dépasse le délai d’expiration ? »