Académie des agents

Apprenez à créer et à utiliser des agents IA

Bienvenue à Agent Academy, un cours pratique sur la création et l'exploitation d'agents IA. Cela commence par ce qu'est réellement un agent et se termine par la gestion d'une flotte d'agents en production, sans aucune expérience préalable. Parcourez les huit modules dans l’ordre. Chacun s’appuie sur le dernier et ensemble, ils vous font passer de votre premier agent à un système que vous pouvez présenter à de vrais utilisateurs.

Académie des agents

Comprendre la boucle

Découvrez en quoi les agents diffèrent des chatbots, des scripts et de l'automatisation traditionnelle.

Construire délibérément

Outils de conception, contexte, autorisations et évaluations avant production.

Opérer à grande échelle

Déployez, gouvernez, observez et optimisez une flotte via Yaju.

Module 1

Qu'est-ce qu'un agent IA ?

Un modèle de langage répond. Un agent agit. La différence est une boucle : le modèle reçoit un objectif, décide d'une seule étape suivante, franchit cette étape via un outil, lit ce qui est revenu et décide à nouveau, en répétant jusqu'à ce que l'objectif soit atteint, qu'une limite soit atteinte ou qu'il abandonne.

Cette distinction est plus importante qu’il n’y paraît. Un chatbot produit du texte et s'arrête. Tout ce qui se passe ensuite est fait par une personne qui lit la réponse et agit en conséquence. Un agent comble lui-même cette lacune : il interroge la base de données, ouvre la demande d'extraction et envoie le message. Le résultat n’est pas une suggestion, c’est un effet secondaire dans un système réel.

L’automatisation traditionnelle produit également des effets secondaires, mais elle y parvient différemment. Un script, un robot RPA ou un générateur de flux de travail suit un chemin tracé à l'avance. Chaque branche est répertoriée. Avec la même entrée, il fait la même chose pour toujours, c'est exactement pourquoi il est digne de confiance, et exactement pourquoi il brise le moment où la réalité sort du diagramme.

Un agent inverse cette relation. Vous n’écrivez pas le flux de contrôle. Vous décrivez l'objectif, transmettez un ensemble d'actions possibles et laissez le modèle décider de l'ordre au moment de l'exécution. La procédure est générée sur place, potentiellement différemment à chaque fois, façonnée par ce que l'agent observe au fur et à mesure.

La vraie question au moment de choisir entre eux n’est donc pas de savoir lequel est le plus avancé. C'est la stabilité de la procédure. Si les étapes sont connues, reproductibles et changent rarement, écrivez le script : il est moins cher, plus rapide, déterministe et trivialement vérifiable. Si les entrées varient tellement que l'énumération des branches est peu pratique, comme par exemple des tickets d'assistance désordonnés, des documents non structurés ou des enquêtes où la troisième étape dépend de la deuxième étape trouvée, alors un agent commence à gagner son prix.

Un test utile : enlevez les outils. Si ce qui reste est encore utile, vous avez construit un chatbot. Si cela devient inutile, vous avez créé un agent. Et si le même comportement avait pu être vingt lignes de code avec un conditionnel, vous auriez probablement dû écrire ces vingt lignes à la place.

Module 2

Comment fonctionne un agent, partie par partie

Presque tous les agents, quelle que soit la structure qui les a produits, sont assemblés à partir de la même poignée de pièces. Apprendre à les distinguer constitue l'essentiel du débogage, car les échecs se localisent clairement le long d'eux.

Le modèle est le moteur du raisonnement. Il lit l'état actuel et décide de la suite. Le choix du modèle est une véritable décision d'ingénierie plutôt qu'un défaut : un modèle plus grand résiste mieux aux instructions ambiguës, un modèle plus petit coûte une fraction et répond plus rapidement. Les agents matures en utilisent souvent plusieurs, réservant le modèle coûteux aux étapes qui nécessitent véritablement du jugement.

Les instructions, généralement fournies sous forme d'invite système, constituent un contrat plutôt qu'une personnalité. Ils établissent le rôle, les contraintes, le format de sortie et surtout la définition du fait. Les instructions vagues sont la cause la plus courante des agents qui tournent en rond ou s’arrêtent à mi-chemin.

Le contexte correspond à tout ce que le modèle peut voir au cours de cette étape particulière : la tâche elle-même, les enregistrements que vous avez récupérés, les résultats des appels d'outils précédents. Traitez-le comme un budget plutôt que comme un conteneur. Chaque jeton dépensé pour du matériel non pertinent coûte de l’argent, ajoute de la latence et dilue l’attention du modèle sur la seule ligne qui compte réellement.

La mémoire est ce qui survit entre les étapes et entre les exécutions. La mémoire à court terme n’est généralement que la transcription en cours. La mémoire à long terme est un acte délibéré : un résumé que vous persistez, un enregistrement des décisions passées, un profil de l'utilisateur. En confondant les deux, les agents finissent soit par devenir amnésiques entre les sessions, soit par se noyer lentement dans leur propre histoire.

Les outils sont l'espace d'action, les fonctions typées que l'agent est autorisé à appeler. Leurs noms et descriptions font partie de l'invite, car le modèle sélectionne un outil en les lisant. Un outil appelé processData sans description sera mal choisi et imputé au modèle.

L'étape de décision est le moment où le modèle émet soit un appel d'outil avec des arguments, soit une réponse finale. Tout existe en amont pour bien faire ce choix.

L'exécution est le moteur d'exécution : le composant qui appelle réellement l'outil, applique les limites de boucles et de nouvelles tentatives, attache les informations d'identification, gère les erreurs et enregistre ce qui s'est passé. Les frameworks vous remettent les éléments de raisonnement. Le temps d’exécution est ce qui permet de présenter le résultat en toute sécurité à d’autres personnes.

Assemblé, le cycle se lit comme suit : observer l'état, choisir une action, l'exécuter, observer le résultat, répéter. Lorsque quelque chose ne va pas, le symptôme pointe généralement vers une partie. Une mauvaise réponse en toute confiance manque normalement de contexte. Une action inappropriée est normalement une mauvaise description de l'outil. Une course qui ne se termine jamais est normalement une définition manquante de ce qui est terminé.

Module 3

Trouver un bon agent : créer, fork ou adopter

Il existe trois voies honnêtes vers un agent qui travaille, et ils échangent du temps contre le contrôle de manière prévisible.

Vous pouvez l'écrire vous-même avec un SDK. Cela vous donne un contrôle total sur l'invite, la surface de l'outil et la gestion des pannes, et cela coûte le plus de temps. C'est le bon choix lorsque la tâche est spécifique à votre entreprise et qu'aucune version générique ne pourrait connaître vos règles. Utiliser un modèle pour aider à rédiger l'agent est une bonne chose et de plus en plus normale, mais considérez sa sortie comme une première ébauche d'un étranger compétent : il ne connaît pas vos données, vos contraintes ou ce que vous coûterait une mauvaise réponse.

Vous pouvez en créer un à partir d’un référentiel public. C'est rapide et c'est par là que la plupart des gens commencent. Cela signifie également hériter d’hypothèses que vous n’avez pas formulées, alors lisez-les avant de vous lancer. Vérifiez ce que les outils peuvent réellement atteindre, si une invite interpole des entrées non fiables, comment les informations d'identification devraient arriver et si la licence autorise votre utilisation. Un agent forké qui a discrètement accès en écriture à quelque chose d'important est une mauvaise surprise à découvrir en production.

Vous pouvez également adopter un agent prêt pour la production à partir d'un catalogue tel que Yaju Agent Hub, qui est construit autour du rythme open source : parcourir, fork, publier, améliorer. La différence par rapport à un référentiel public est qu'il s'agit d'agents destinés à fonctionner de bout en bout plutôt que de démonstrations ponctuelles, et qu'ils arrivent déjà configurés pour un environnement d'exécution gouverné.

Quelle que soit la voie que vous empruntez, l’agent n’a pas terminé la première fois qu’il produit une bonne réponse. Avant de peaufiner quoi que ce soit, rassemblez un petit ensemble d'évaluation : dix à trente cas réels, y compris les plus délicats que vous préféreriez ignorer. Notez à l’avance à quoi ressemble une réponse correcte pour chacun. Juger le résultat après coup, par impression, est la manière dont les équipes se convainquent qu'un agent s'est amélioré alors qu'il a simplement changé.

Ensuite, répétez délibérément. Changez une chose à la fois, réexécutez l'ensemble et conservez le score. Ajoutez chaque échec de production à l’ensemble comme cas de régression, afin que la même erreur ne puisse pas revenir tranquillement. Incluez également les cas contradictoires : des entrées conçues pour inciter l'agent à outrepasser, à inventer ou à agir sans suffisamment d'informations.

Enfin, personnalisez-le. Vos données, vos conventions de dénomination, vos règles d'escalade, votre définition du fait. Un agent générique qui convient presque est souvent pire que pas d'agent du tout, car les gens l'abandonnent après la deuxième mauvaise réponse et la confiance est bien plus difficile à reconstruire qu'à établir.

Et gardez la retraite sur la table. Un agent qui n'est pas utilisé, ou dont la tâche a été modifiée, devrait être éteint plutôt que maintenu par sentiment.

Module 4

Outils, contexte et capacités

La capacité d’un agent dépend des actions et des informations que vous lui transmettez. C’est là que réside la majeure partie de l’ingénierie pratique.

Concevoir des outils étroits et en forme de verbe. Un outil qui lit les commandes des clients bat celui qui gère la base de données. Les outils étroits produisent des décisions claires, sont faciles à autoriser et échouent d’une manière que vous pouvez interpréter. Les outils larges invitent le modèle à improviser, et c'est l'improvisation qui fait mal.

Écrivez la description du modèle, pas celle de vos collègues. Il doit indiquer ce que fait l'outil, quand l'utiliser, quand ne pas l'utiliser et ce qu'il renvoie. Tapez les arguments et validez-les. Un schéma n'est pas ici de la bureaucratie, c'est la différence entre un appel rejeté et une écriture mal formée dans un système de production.

Résistez à l’ajout d’outils de manière spéculative. La qualité de la sélection se dégrade à mesure que l’espace d’action s’agrandit : avec trente outils disponibles, le modèle raisonne sur le choix plutôt que sur la tâche, et se trompe plus souvent. Si deux outils se chevauchent, fusionnez-les ou supprimez-en un.

Le contexte doit être récupéré et non vidé. Récupérez les enregistrements spécifiques dont cette tâche a besoin et transmettez-les. Lorsque la source est volumineuse, divisez-la judicieusement et récupérez-la par pertinence plutôt que de coller l'intégralité du document. Demandez des citations afin qu'une réponse puisse être attribuée au passage qui l'a produite.

Séparez la lecture de l’écriture. La plupart des agents ont besoin d'un accès large en lecture et d'un accès très restreint en écriture, et les traiter comme une seule autorisation est la façon dont un agent de synthèse finit par pouvoir supprimer des enregistrements. Là où une écriture est irréversible, placez un humain devant elle.

C'est dans les intégrations que cela devient un problème d'organisation plutôt qu'un problème de codage. Chaque équipe connectant sa propre connexion au même système en amont produit des informations d'identification en double, des politiques incohérentes et aucune piste d'audit unique. Un standard ouvert tel que MCP permet à tout agent compatible de réutiliser les mêmes intégrations gouvernées, avec une liaison par système en amont au lieu d'une par équipe.

Les informations d’identification méritent leur propre règle, et elle est courte : l’agent n’a jamais de secret. Il demande l'action et la plateforme joint les informations d'identification au moment de l'appel sortant. De cette façon, une invite divulguée, un journal détaillé ou une transcription partagée ne devient jamais une clé divulguée.

Enfin, prévoyez un échec partiel. Les systèmes réels limitent le débit, paginent, expirent et renvoient une demi-réponse. Un agent qui traite chaque réponse de l'outil comme un succès ne s'appuiera en toute confiance sur rien. Renvoyez les erreurs sous forme de données structurées sur lesquelles le modèle peut raisonner et décidez à l'avance quelles défaillances doivent arrêter l'exécution plutôt que d'être contournées.

Module 5

Limites, modes de défaillance et attentes honnêtes

L'autonomie est la propriété qui se vend le plus durement, il vaut donc la peine d'être précis sur ce qui ne va pas.

Les erreurs s’accumulent. Si chaque étape d'une boucle est fiable à quatre-vingt-quinze pour cent, une exécution en vingt étapes n'est fiable qu'à environ trente-six pour cent de bout en bout. Pire encore, une mauvaise hypothèse à l’étape trois ne s’annonce pas : elle façonne discrètement les étapes quatre à vingt, et le résultat final semble cohérent parce que l’agent a été cohérent avec sa propre erreur.

Les modèles fabriquent. Pas par hasard, mais de manière plausible, c'est là le problème. Des identifiants d'enregistrement inventés, des fonctions qui n'existent pas dans une API, des citations sûres de documents qui n'ont jamais été récupérés. La fabrication est la plus dangereuse précisément là où la vérification est la plus fastidieuse, c'est pourquoi la vérification de la conception plutôt que d'espérer la repérer.

Les échecs contextuels sont plus subtils qu’il n’y paraît. Le contexte manquant produit des suppositions. Le contexte obsolète produit des décisions qui étaient bonnes au dernier trimestre. Un contexte excessif produit un modèle à qui on a techniquement donné la réponse et qui ne l'a pas remarqué. Chacun d’eux ressemble à un échec de raisonnement et aucun d’entre eux ne l’est.

Le coût se comporte de manière non linéaire. Un contexte long est payé à chaque étape de la boucle, les tentatives le multiplient, et une exécution qui échoue après quinze étapes coûte plus cher qu'une exécution qui réussit sur trois. Les agents qui semblent bon marché lors des tests surprennent régulièrement les personnes en production, car les cas de test sont courts et les vrais ne le sont pas.

La sécurité est véritablement différente de la sécurité des applications ordinaires. Tout contenu lu par un agent peut tenter de lui donner des instructions, donc un ticket d'assistance, une page Web ou un PDF devient une surface d'injection. Un agent possédant des informations d’identification légitimes et qu’on peut convaincre d’en abuser est un adjoint confus, et les défenses habituelles ne s’appliquent pas. Limitez ce que les outils peuvent atteindre plutôt que d’essayer de nettoyer le langage.

L'entretien est continu. Les invites ne s'alignent plus sur l'évolution de l'activité, les API en amont changent de forme, les modèles deviennent obsolètes ou mis à jour silencieusement, et une suite d'évaluation approuvée en mars commence discrètement à échouer en juin. Un agent est un système en cours d’exécution avec un propriétaire, et non un projet livré une seule fois.

Tout cela conduit à la conclusion la moins à la mode de ce cours : préférer quelques bons agents à de nombreux médiocres. Dix agents qui travaillent à moitié coûtent plus cher, tombent en panne plus souvent et érodent la confiance plus rapidement que deux agents qui font correctement leur travail. Chaque agent supplémentaire ajoute une surface à surveiller, des informations d'identification à gérer et un comportement à expliquer. Décider de ne pas en construire un, ou d’en éteindre un, est un résultat légitime et sous-utilisé.

Module 6

Conditionner un agent pour le monde extérieur

Un agent qui s'exécute uniquement sur la machine sur laquelle il a été écrit est un prototype. L'emballage est ce qui le transforme en quelque chose qu'une autre personne, une équipe ou un environnement peut exécuter sans vous poser de questions.

Commencez par la reproductibilité. Épinglez vos dépendances plutôt que d’accepter la dernière solution. Tapez les entrées et les sorties avec un schéma afin que les appelants sachent exactement quoi envoyer et ce qui revient. Conservez la configuration en dehors du code, afin que le même artefact puisse être exécuté lors de la préparation et de la production sans modification.

Soyez explicite sur ce qui ne doit pas voyager avec. Des secrets, évidemment, mais aussi des points de terminaison spécifiques à l'environnement, des identifiants de compte codés en dur et des chemins absolus. Si l'agent ne peut pas démarrer sans valeur, il doit échouer bruyamment au démarrage en indiquant quelle valeur manque, plutôt qu'à mi-chemin d'une exécution.

Déclarez le contrat dont l'agent a besoin pour fonctionner : quels outils il attend, quelles autorisations ces outils nécessitent, quel modèle il assume et ce qu'il coûte approximativement par exécution. Un réviseur devrait être en mesure de décider s’il doit l’approuver à partir de cette seule déclaration.

Versionnez-le comme un logiciel, car c'est ce que c'est. Conservez-le dans Git, pointez sur une version spécifique plutôt que sur une branche, comparez deux versions pour voir ce qui a changé dans l'invite ainsi que dans le code, et soyez capable de revenir en arrière dans une commande lorsqu'un changement s'avère pire qu'il n'y paraissait.

Expédiez l’ensemble d’évaluation avec l’agent. C'est la seule description honnête de ce que l'agent est censé faire, et elle permet à celui qui en hérite de vérifier que son environnement se comporte comme le vôtre avant de faire confiance à la sortie.

Enfin, écrivez les limites en langage clair : à quoi sert cet agent, ce qu’il ne doit jamais faire, à qui appartient-il et que faire en cas d’échec. Cette note coûte dix minutes et fait la différence entre un agent qui est adopté et un autre qui est discrètement abandonné.

Module 7

Déployer un agent sur Yaju

Le déploiement est le moment où un agent cesse d'être le vôtre et devient partie intégrante d'un système dont dépendent d'autres personnes. L’acte technique de l’exécuter est la moitié facile.

La production signifie que quatre choses sont vraies et ne l’étaient pas sur votre ordinateur portable. L'agent a une identité et un propriétaire nommé. Quelque chose impose ce qu’il est permis d’atteindre. Tout ce qu'il a fait est enregistré. Et quelqu'un peut voir ce que ça coûte. Un agent manquant l'un de ces éléments est en production par accident plutôt que par conception.

Sur Yaju, le premier d'entre eux est automatique : un agent obtient une identité unique et un propriétaire au moment de son exécution, il apparaît donc dans un catalogue au lieu de vivre dans le terminal de quelqu'un. C’est la réponse pratique aux agents fantômes, qui n’est pas un problème de politique mais un problème de visibilité.

À partir de là, le système d'orchestration d'agent attache ce dont l'agent a besoin au moment où il en a besoin. Les informations d'identification sont résolues au moment de l'exécution à partir d'un coffre-fort au niveau de l'organisation, de sorte qu'elles ne figurent jamais dans le code ou dans l'invite. Les règles d'accès sont évaluées avant chaque appel sortant, au niveau de l'espace de travail et de l'agent plutôt qu'au niveau du réseau. La politique est appliquée au moment de l'action et n'est pas décrite dans un document que personne ne lit lors d'un incident.

L'observabilité est activée dès la première exécution plutôt que ajoutée après la première surprise. Chaque appel de modèle, appel d'outil, entrée, sortie et décision est capturé sous forme de trace de session que vous pouvez relire, rechercher et exporter. Lorsqu’un auditeur demande ce qui s’est passé à une date précise, la réponse est une récupération plutôt qu’une enquête.

Pour les actions risquées, mettez explicitement un humain dans la boucle. Le runtime s'arrête avant l'étape irréversible, demande l'approbation et ne continue qu'une fois celle-ci accordée. Il s’agit d’une décision de conception qui procure beaucoup de confiance pour très peu de frictions, et il est bien plus facile de se détendre plus tard que d’en ajouter après un incident.

Le déploiement lui-même s'effectue à partir de la ligne de commande, ce qui est plus important qu'il n'y paraît : les mêmes commandes fonctionnent dans vos pipelines CI/CD existants, donc l'envoi d'un agent ressemble à l'envoi d'autre chose plutôt que de nécessiter un rituel distinct. Là où les données ne peuvent pas quitter votre environnement, le même système d'orchestration d'agents s'exécute de manière auto-hébergé, dans votre propre cloud ou entièrement isolé.

Rien de tout cela ne nécessite de modifier la façon dont l’agent a été créé. Apportez votre propre agent, quel que soit le framework qui l'a produit, et les mêmes identité, informations d'identification, politique et traçage s'appliquent. Cette neutralité est délibérée : personne ne veut d’un deuxième niveau de verrouillage en plus de celui qu’il a déjà avec les fournisseurs de modèles.

En pratique, déployez progressivement. Exécutez d’abord l’agent en mode fantôme, où il produit un résultat sur lequel personne n’agit, et comparez-le à ce qu’une personne aurait fait. Donnez-lui ensuite une portée réelle étroite avec des portes d'approbation. Élargissez seulement une fois que les traces sont ennuyeuses.

Module 8

Exploiter une flotte avec les systèmes d'agent Yaju

Un agent est un projet. Trente agents représentent un problème opérationnel, et cela arrive plus tôt que prévu par la plupart des équipes, généralement sans que personne ne décide que cela devrait être le cas.

Le changement est qualitatif plutôt que quantitatif. Avec un seul agent, vous vous souvenez de ce qu'il fait. Avec trente, réparties dans des équipes qui ont chacune choisi leur propre cadre, personne ne détient la vision globale, et les questions importantes deviennent sans réponse : qu'est-ce qui fonctionne, à qui appartient-il, que peut-il toucher, qu'a-t-il fait et combien cela nous coûte-t-il.

L’inventaire passe avant tout, car tout le reste en dépend. Chaque agent porte une identité, un propriétaire et une version, quel que soit celui qui l'a produit. Les agents créés en dehors de la plateforme sont catalogués selon les mêmes conditions que ceux créés sur celle-ci, ce qui est la seule manière pour que l'inventaire reste honnête.

Le contrôle est appliqué de manière centralisée et appliqué de manière uniforme. Une équipe de plateforme définit la politique une seule fois, et le runtime l’applique aux agents de chaque équipe au moment de l’action. C'est l'arrangement qui résout le bras de fer habituel entre l'ingénierie, qui ne veut pas demander la permission pour chaque agent, et la sécurité, qui ne peut pas approuver ce qu'elle ne peut pas voir.

L’observabilité à l’échelle de la flotte signifie bien plus que la simple conservation des journaux. Les traces vous permettent de rejouer n'importe quelle course individuelle. Une piste d'audit immuable enregistre l'utilisateur agissant, les informations d'identification utilisées et les résultats produits. Le score d'évaluation s'exécute en permanence en fonction des critères que vous définissez, couvrant le comportement, la structure, la latence et le coût, et un échec de vérification critique arrête l'agent plutôt que de déposer un rapport à ce sujet. C'est l'étape de la journalisation passive à l'application active de la qualité.

Le coût est la dimension que les équipes découvrent en dernier et regrettent le plus. Les dépenses attribuées par agent, espace de travail, utilisateur, fournisseur et modèle, en devise plutôt qu'en jetons, transforment une facture inexplicable en une liste de décisions. Les budgets des disjoncteurs permettent alors d'agir : avertir à quatre-vingts pour cent, bloquer à cent et arrêter le dépassement au lieu de le signaler ensuite. Les alertes vous préviennent ; seul un disjoncteur arrête réellement la dépense.

Une fois que les coûts sont visibles, ils peuvent être réduits systématiquement plutôt que de manière anecdotique. L'optimisation fonctionne sur quatre leviers : essayer un modèle plus petit, réduire les invites et le contexte, supprimer les outils qui augmentent les coûts sans améliorer les résultats et déplacer les étapes déterministes hors du modèle vers le code ordinaire. Chaque recommandation est mesurée par rapport à vos propres évaluations avant d'être appliquée, de sorte que les économies ne s'achètent jamais tranquillement avec la qualité.

Les intégrations sont régies de la même manière centrale. Une liaison par système en amont, un catalogue approuvé que les équipes peuvent demander, et une piste d'audit unique pour l'ensemble de celui-ci, plutôt que chaque équipe ait sa propre connexion et sa propre copie des informations d'identification.

La coordination devient une véritable préoccupation à grande échelle. Les agents travaillent à la main, se dupliquent lorsque deux équipes résolvent le même problème indépendamment et se disputent les mêmes limites de taux. Un catalogue partagé avec des agents et des compétences réutilisables est la solution la moins chère en cas de duplication, et c'est également ce qui permet à un ingénieur d'expédier son premier agent en quelques heures plutôt qu'en quelques semaines.

Enfin, considérez la flotte comme ayant un cycle de vie. Les agents sont promus de l'expérimentation à la production, obsolètes lorsqu'un meilleur existe et mis à la retraite lorsque leur tâche disparaît. Mesurer l'adoption par équipe, le coût par agent et les performances par rapport aux évaluations est ce qui fait passer la conversation au-delà des expériences de comptage et vers l'exploitation de l'IA plutôt que de simplement l'utiliser.

Suivez le cours dans l’ordre. Chaque module s'appuie sur le dernier, depuis la première boucle d'agent jusqu'aux opérations d'identité, de politique, de traçage, de contrôle des coûts et de flotte.

8

Modules progressifs

0

Expérience préalable requise