Architecting Goal-Driven Systems
Exploring key branches of AI
AI » Machine Learning (ML) » Deep Learning (DL) » Generative AI.
Notes d’intro
J’ai pu assister à des “formations sur l’intelligence artificielle”, qui m’ont laissé perplexe et rigolard - dans les arguments mentionnés, le manque de vision et dans le “le train de l’IA est là, sautez dedans ou soyez abandonné”. Il est indéniable que l’IA est là, tout autant que celle-ci a et aura des impacts technologiques, sociaux, économiques, écologiques et politiques.
Beaucoup de mots utilisés ci-dessous sont en lien avec l’humain, que ce soit au niveau des sentiments ou du fonctionnement du corps; même si cela reste des machines et des processus informatiques, je n’ai souvent pas trouvé d’autres termes que pour expliquer le fond de ce que je tentais de réexpliquer. Les métaphores sont à prendre avec des pincettes, et il convient d’éviter le syndrôme de deus ex machina et l’asservissement à un dieu qui n’existe en fait pas.
Comme toute technologie, je pense que l’IA peut avoir une utilité réelle, scientifique, et pas juste informer ChatGPT qu’on va bien après être tombé de son vélo.
Je me suis arrêté +/- à 80% du livre (circa page 342), lorsque le chapitre pratique a démarré avec du code Python.
Ce que l’on constate surtout, c’est que l’IA n’est pas un accident, mais une volonté réelle, et que le fait que beaucoup de sociétés s’y engagent, c’est parce qu’il s’agit d’un objectif soutenu par les plus grosses fortunes, qui y trouvent un intérêt. Il s’agit donc d’un objectif commun, mais pas humaniste, comme on a déjà pu l’analyser ; on n’est pas sur une catastrophe inévitable, mais sur des choix stratégiques et des allocations prioritaires de capitaux.
Ce que l’on remarque aussi, c’est que pour arriver à une précision aussi bonne que celle que l’on peut constater actuellement, il a fallu de très grosses quantités de données - et les sociétés comme Meta, Anthropic ou OpenAI ne se cachent même plus d’avoir utiliser des quantités phénoménales (et hors de la conscience humaine) de données illégales :
- Meta Torrented over 81 TB of Data Through Anna’s Archive, Despite Few Seeders
- US judge approves Anthropic’s $1.5 billion settlement of copyright lawsuit.
Sans rentrer en détails dans le débat, de grosses quantités d’argent ont été investies dans la répression et la limitation du piratage individuel (Napster, Kazaa, eDonkey, …), qui ne sont plus d’actualité dès lors que les montants dépassent la perception humaine.
Eléments de Machine Learning & Deep Learning
Le coeur de l’intelligence artificielle moderne se trouve au niveau du Machine Learning, qui consiste à découvrir des patterns parmi des jeux de données : plutôt que de définir des entrées et sorties à des fonctions préconçues, il “suffit” de fournir des exemples, une manière de donner un feedback et un espace de généralisation, pour que la machine se débrouille à rafiner les cas trouvés, leur donner un sens, une structure, en amélioration graduellement le modèle qui l’entoure.
L’exemple présenté est Netflix, qui propose des nouvelles séries dès que vous en aurez terminée une, simplement en analysant ce que vous aimez, en comparant vos préférences avec celles de millions d’autres utilisateurs, puis en recalculant ce que vous pourriez ensuite apprécier. C’est “juste” de la mise en pratique de mathématiques, soutenues par des chaînes stochastiques et probabilistiques : une même question peut donc ne pas systématiquement apporter la même réponse.
Tous les éléments ci-dessous ont de de l’intérêt pour l’IA agentique, pour la perception, la compréhension du langage, la prise de décision et l’adaptabilité.
Apprentissage supervisé
L’apprentissage supervisé est généralement réalisé via des cartes de type “memory” : à force d’entraîner le modèle avec des millions d’images de chats (ou de chiens, de dinosaures, de vélos, de feux de signalisation, …), le modèle finit par “reconnaître” ces éléments dans d’autres contextes. C’est ce que Google fait depuis des années avec ses captchas, en demandant à des utilisateurs de valider des images - et lorsque l’apprentissage se plante ou “a un doute”, il change d’image.
Il s’agit de données labelisées, qui servent notamment aux spams filters, aux services financiers de détections de fraudes (cherchant parmi l’historique, les localisations, les montants, …). L’apprentissage supervisé ne mémorise rien - il n’a pas de mémoire - mais construit un modèle qui permet de détecter des activités suspicieuses simplement parce qu’elles sortent des platebandes d’un modèle généraliste : dans le domaine financier, l’utilisation d’une même carte de crédit à deux moments proches, mais à deux lieux très espacés, n’est pas un pattern “logique” (selon les données déjà vues) - à condition de lui inculquer la notion d’espace et de temps parmi les métadonnées dont il dispose.
Apprentissage non-supervisé
L’apprentissage non-supervisé est un mode où le système finit par trouver une structure parmi le chaos qui l’alimente, sans que cela n’ait “un sens” : des utilisateurs qui achètent du pain et du beurre, pourraient bien vouloir aussi acheter de la confiture… ou ceux qui apprécient les films de science-fiction aimeront peut-être les films de superhéros, tandis que ceux qui regardent un documentaire apprécieront plutôt des drames historiques.
L’apprentissage non-supervisé doit être aiguillé - par exemple avec des modèles d’informations liées à la quantité d’achats, aux moments de la journée, … pour pouvoir extraire des données ayant du sens plutôt que du simple bruit.
Apprentissage par renforcement
L’apprentissage par renforcement ressemble vaguement à la manière dont un enfant va apprendre à marcher : en tombant, titubant, se relevant, … Plutôt que d’indiquer une “bonne” réponse, avec un apprentissage par renforcement, l’agent va “apprendre” petit à petit, en essayant de maximiser les recompenses à (très) long terme - un peu comme un enfant que n’apprend pas à marcher juste pour faire un pas.
Au coeur du renforcement, nous trouvons trois concepts :
- L’agent qui réalise l’apprentissage ou la prise de décision,
- L’environnement dans lequel il évolue,
- La fonction de récompense qui indique si l’action réalisée était bonne ou mauvaise (par exemple en gagnant une partie Go, pour AlphaGo).
Cela fonctionne aussi avec le commerce en ligne, où l’agent est l’algorithme de prix, l’environnement est la plateforme de vente, et la récompense est la rétention utilisateur : en ajustant continuellement les prix et en observant les comportements utilisateurs en retour, le système adapte le revenu maximum tout en restant compétitif.
Natural Language Processing (NLP)
Le NLP permet à l’AI de “comprendre, interprêter et générer des réponses en langage humain”.
Dans un sens, cela ressemble à de la magie - hint : ça n’en est pas - qui permet de combler le vide entre la communication humaine (et non-structurée) par rapport à la logique structurée de la machine.
En pratique, cela ressemble plutôt à un éditeur de texte qui complète automagiquement la fin d’une phrase, un chatbot qui assure un service 24/7 où un moteur de recherche qui comprend “l’intention” de votre requête, au delà de vos mots-clés.
In agentic systems, NLP is often the input interpreter, the reasoning context, and even the output generator. When an agent asks a clarifying question, summarizes a document, or explains its next action, it’s all NLP at work.
Le NLP sert aussi à donner de la voix aux agents (Alexa, Siri, …), mais aussi à “traduire” la voix en sous-titres automatiques sur YouTube - qui permettent aussi aux systèmes “d’écouter et de parler”.
Deep Learning
De son côté, le Deep Learning construit des réseaux neuronaux (mais un brin artificiels), qui s’inspirent librement du fonctionnement du cerveau humain, et dont on peut voir les applications par exemple dans le déverrouillage de son téléphone (grâce à la reconnaissance faciale), la reconnaissance de personnes sur des photos même si elles sont sacrément floutées, ou quand un assistant répond de manière fluide à une question qui lui a été posée. Ceci est réalisé au travers d’une “compréhension” réalisée à plusieurs niveaux : la première couche va identifier des formes et de sons, tandis que les couches suivantes vont être de plus en plus spécifiques.
Voix & audio
Tout comme la NLP interprête le texte, les technologies d’audio permettent la reconnaissance de sons, de voix, la transcription de mots, la détection de ton, et peut générer du son en réponse. C’est avec cela que fonctionnent (entre autres) Siri, Alexa, et qui permet également de créer des sous-titres à partir d’une vidéo sur Youtube ou n’importe quelle autre plateforme de streaming.
Grosso modo, cela fonctionne à partir de speech recognition et de text-to-speech. Ensemble, cela permet aux IA “d’entendre et de parler”.
Vision
Finalement, la vision est une branche de l’IA qui donne aux machines la capacité d’interprêter des données provenant visuellement (images, photos, vidéos, …) du monde extérieur : reconnaissance faciale, détection de lignes sur l’autoroute, inspection visuelle sur des chaînes de production, analyse d’imagerie médicale, … en pouvant scanner des milliers d’images à la seconde sans biais (quoique…) ni fatigue. Ces composant sont les chaînons manquants pour l’autonomie dans le monde réel.
Concrètement, ces systèmes ne mémorisent pas, mais “reconnaissent” des patterns en appliquant des couches d’abstractions séquentielles, pour en tirer des représentations utiles.
En résumé
L’IA générative est un moteur de création (texte, image, code). Elle répond à une demande ("Écris ceci", “Dessine cela”).
Elle est souvent passive et attend une instruction, tandis que l’IA Agentique est un moteur d’action et d’autonomie. L’IA agentique utilise l’IA générative (pour le raisonnement/NLP), et y ajoute la capacité de planifier, d’utiliser des outils (API, navigation web) et d’itérer seule pour atteindre un objectif complexe ("Organise mon voyage", “Débugge ce projet”).
A une question d’actualité récente, un LLM classique comme GPT-4 va halluciner ou répondre par des données obsolètes. Un modèle agentique va par contre entrer dans une boucle de “réflexion”, basée sur des pensées, actions et observations… jusqu’à arriver à une réponse finale, après avoir perçu son environnement, raisonner à propos de l’objectif demandé et pris des actions autonomes.
Chronologiquement, nous sommes passés de :
- RRN (Recurrent Neural Networks) aux alentours de 1997-2014 - qui avaient du mal avec des longues séquences d’informations, où la cinquantième avait déjà été dissoute dans quarante-neufs premières transformation,
- A des LSTMs (Long Short-Term Memory Networks) (qui datent de +/- 1997), et qui ajoutaient des “portes” permettant de garder ou oublier certaines informations,
- A des GRUs (Gated Recurrent Units), qui gardaient le même concept, mais avec moins de portes et plus de rapidité, pour un résultat similaire. A ce stade, quelques librairies permettaient déjà une “analyse de sentiments”, en fonction d’une phrase passée en paramètre, et par rapport à une échelle de “feelgoodness”.
- Les modèles préentraînés de type BERT ou RoBERTa (~ 2018) 1 se sont greffés à ces premiers modèles, pour apporter des réponses plus nuancées, pas uniquement en analysant les mots, mais bien les contextes. Ces modèles sont la base des transformeurs, massivement utilisés dans les LLMs actuels, en déduisant une intention plus qu’en générant simplement des réponses compréhensibles.
Les IA agentiques ont fait leur coming-out vers 2025.
De l’automatisation à l’autonomie
Perceive, Plan, Reason, Act, Reflect.
Dans les systèmes traditionnels, les processus sont (très) souvent déterministes et ont une certaine tendance à crasher dès qu’une colonne dans un schéma de base de données est modifié. En fait, le système reste stable et tourne “comme une horloge” jusqu’à ce qu’un changement apparaisse. Et comme le disait Yuval Noah Harari, “la seule constante, c’est le changement” : parfois, un cas non prévu s’insère parmi les règles métiers et reste caché pendant plusieurs semaines ou plusieurs mois. Au fil du temps, ces systèmes deviennent de plus en plus difficiles à maintenir ou à faire évoluer, sauf à faire preuve de méthodes de travail extrêmement rigoureuses.
Avec l’élévation des IA agentiques, deux options se profilent :
- Soit passer du temps à implémenter les règles métiers, flux de données et des algorithmes développés au poil, selon des architectures logicielles maîtrisées et maîtrisables. Si une tâche est répétitive et bien définie, automatisez la avec un algorithme pour la rendre rapide, consistance et efficiente. Toutes ces tâches sont testables, et si elles doivent crasher, elles le feront de manière déterministe ; la cause du crash pourra être analysée, tracée et corrigée.
- Soit se baser sur une AI agentique, dont le mode de fonctionnement ciblera un objectif dynamique plutôt qu’une règle statique. Dans le mode de fonctionnement décrit ci-dessus (perceive, plan, reason, act, reflect), la réflexion intervient pour l’agent sur une sorte d’introspection par rapport à sa propre réponse. Cette boucle est ce qui rend l’AI autonome : au lieu de décrire chaque étape permettant d’atteindre l’objectif, nous ne décrivons que l’objectif final - ce qui permet que, si la situation (= l’environnement) change, la flexibilité, l’apprentissage et le feedback continu garderont le système sur ses rails.
L’autonomie est intrinsèquement liée à la gestion de l’incertitude : le système doit rester opérationnel même face à des changements de son environnement. Dans le cas d’une suggestion de code dans un éditeur, l’agent doit continuer à fonctionner même si le code devient non compilable, si le langage évolue ou si l’indentation est rompue. C’est précisément dans cette “zone grise”, là où l’environnement n’est plus stable ni prévisible, que l’IA agentique révèle toute sa valeur (saveur ?), là où une automatisation classique échouerait. Comme je l’écrivais plus haut, la seule constante, c’est le changement et un agent autonome a probablement sa place dans un monde gouverné par la robustesse (par rapport à la rigidité), un feedback environnemental (par rapport à un contrôle prédéfini) et un focus sur un objectif (plutôt que sur la répétition des tâches).
La finalité consiste à garder le focus sur la résilience face à l’ambiguité : l’état d’esprit est le même, et les deux méthodologies permettent d’atteindre un même objectif. L’une va permettre une meilleure résilience, tandis que l’autre maintiendra un contrôle total. Le choix n’est pas binaire - on peut avoir envie ou besoin d’un système totalement autonome, tandis que d’autres tâches nécessiteront un RPA classique, voire un “entre deux”.
Expliqué simplement, la base de l’évolution entre IA générative et IA agentique se trouve au niveau des transformeurs, capables de reformuler une séquence statique en un moteur de réflexion dynamique, et sont une fondation idéale pour construire des agents autonomes. Un transformeur fonctionne comme une fonction prenant des informations en entrée, et appliquant un codec (oui, comme à l’époque) :
- L’encodeur peut être vu que le lecteur des paramètres en input, et qui se construit un contexte couche après couche. Un modèle de type BERT s’occupe uniquement de l’encodage et excelle dans la compréhension et la classification.
- Le décodeur correspond à l’écriture en sortie, et utilise (à son tour), qui ne fonctionne que “de gauche à droite” (comme un mécanisme de feedback dans un pipeline - principe de masked self-attention), tout en s’assurant de conserver l’attention sur les données traitées au niveau de l’encodage (principe de cross-attention). Ces deux constrastes permettent au décodeur de faire travailler une forme de créativité (comme un recuit simulé), tout en restant dans un cadre restrictif (mais pas trop). GPT, Llama, Claude, … sont des décodeurs, et sont particulièrement efficaces dans la génération de contenu, et comme base pour les agents.
Un agent intelligent (= “capable de raisonnement stochastique”) va :
- Inférer l’objectif en langage naturel,
- Décomposer cet objectif (Trouve un vol, vérifie la disponibilité, …),
- Planifier les étapes en utilisant une chain-of-thought (CoT), pour “découper l’éléphant en petits morceaux” 2,
- Raisonner et agir (ReAct, pour Reason and Act), pour non seulement réfléchir, mais aussi prendre des actions - et qui peut être chaînée avec des étapes de type Pensée > Action > Observation > Réflexion, qui forme la base des LLMs modernes,
- … et introspecter sa propre réponse pour s’auto-critiquer et réviser son propre jugement, pour s’adapter (ou pour demander comment continuer).
L’IA agentique ne se limite cependant pas du prompt engineering ; elle doit avoir accès à des APIs, à des outils, des frameworks, … pour interagir un environnement extérieur, via un parrallèlisme des actions - d’où la nécessité de bien définir chaque sous-objectif, ainsi que l’ordonnancement de ceux-ci. Chacun de ces agents fonctionne selon un canal de communication de type notify only, recommend & confirm, act and notify ou en totale autonomie.
Building blocks
En quelques mois, nous sommes passés d’un modèle de LLM comme outils de travail à des agents systémiques, qui fonctionnent selon des patterns (Single-agent loop, Planner-Executor-Reflector (= Think ahead, then execute), Embedded reasoning & external action, ReAct + tool framework ou Retrieval-augmented generation (RAG) et des topologies (séquentielles, hiérachiques, hybrides ou parallèles/concurrentes) :
- Séquentielle : comme pour valider un ensemble d’étapes, en fonction du résultat de la précédente,
- Hiérachique : par exemple une newsletter générée par IA, via un fetcher, analyzer et un compiler.
- Hybride, avec un système d’assistants pour chaque département - on a alors une topologie séquentielle dans chaque service, tandis qu’un orchestrateur chapeaute hiérarchiquement l’ensemble des agents.
- … ou concurrentes, pour permettre un parallèlisme des pipelines attendus par chaque système.
Une fois que l’on connait tout ceci, il est possible de s’orienter vers une architecture spécifique en fonction de ce que l’on cherche à construire.
Prompt engineering
Un prompt, c’est une intention, des contraintes et des instructions, afin d’aiguiller le processus de raisonnement interne au modèle. Par exemple,
- Résume ce document (Intention),
- Limite toi à trois bullet points (contraintes),
- Mets en gras les points activables et utilise un langage fleuri (instructions).
Un LLM ne répondra donc pas à une fonction summarize(document, bullet_points_threshold=3, bold_text=True, mais à du langage naturel, converti au travers de ses transformeurs.
On peut voir le prompt comme un panneau de contrôle dynamique, permettant un alignement en temps-réel du résultat attendu, sans avoir à connaître ou maîtriser les mécaniques internes 3 :
- Utilise tels outils,
- Explique brièvement,
- Complète le rapport de manière détaillée, *sors moi un résultat en JSON, …
- En cas de doute vérifie ta réponse,
- …
Pour qu’un prompt soit efficient, il convient de respecter des formules (une API en langage naturel, en fait), de la même manière qu’on s’adresse poliment à un intervenant ou que l’on vouvoie quelqu’un dont on n’est pas proche : définissez un contexte qui soit clair, les contraintes, le niveau de pertinence visé et les biais dont il faut tenir compte. Un prompt est aussi à la base de la programmation d’un agent - et comme il s’agit d’un input dynamique, on peut très bien imaginer prompter du prompt … et donc faire en sorte que des agents spawns eux-mêmes d’autres agents en fonction de leur perception de l’environnement ou de variables dont ils doivent tenir compte - toujours en visant un objectif particulier.
Quelques exemples de prompts utiles :
- “Résume le transcript de cette réunion en cinq points d’actions”,
- “Classifie les emails en fonction de leur contexte parmi les dossiers suivants […]”,
- “Tu es un auditeur spécialisé en cybersécurité. Revoie ce texte pour toute non-conformité”, (Persona)
- “Réfléchis étape par étape : si le revenu de la boite grandit de 20% en Q1, puis de 15% en Q2, …”, (Chain of Thought)
- “Génère trois propositions de refactoring des ‘Guilded Roses’, et choisis la plus facile à implémenter”, (Tree of Thoughts)
- …
Toutes ces instructions peuvent être classifiées selon plusieurs techniques reconnues (et probablement à retenir, donc voir la page 160). Quoique vous fassiez, l’instanciation d’un agent nécessitera un contexte important, le temps de définir les instructions, les personas, la description des outils et quelques autres directives.
On voit émerger un nouveau pattern ici, qui consiste à sauvegarder la définition des prompts, et à réaliser de la méta-programmation sur les agents - une forme de sérialisation et de structuration de modèles, qui complètent le gap entre autonomie totale d’un agent et déterminisme d’un langage de programmation mainstream.
Frameworks
Passer de quelques input texts à des “applications” agentiques nécessitent plus que de simples prompts et une foi un peu inconsciente et aveugle en Héphaïstos, dieu de la forge, de la métallurgie et du silicium.
Nous voyons ainsi apparaitre des outils AI spécialisés (= entraînés sur des modèles particuliers), chaînables et interropérables, comme LangChain, LangGraph ou CrewAI. Comme cet écosystème est encore jeune et expérimental, on se retrouve un peu avec un écosystème typé JavaScript d’il y a 10 ans, où de nouvelles idées émergent toutes les deux semaines ; contrairement à la technologie, la philosophie est le seul composant stable ici : trouvez les bons blocs, câblez les entre eux et soyez prêts à itérer.
Fondations et couches de réflexion
C’est un peu la base, la manière dont le système va gérer le rate limiting, quels modèles il va appeler en fonction de quoi, … Plantez-vous sur les fondations, et vous vous trouverez nez-à-nez avec un système lent et coûteux vs un système rapide et abordable. En gros, ce sont les LLMs utilisés, les modèles embarqués (et pourquoi) et les APIs qui permettent d’y accéder.
Orchestration
Il s’agit du cerveau et des muscles (pour rester dans une analogie de représentation humaine), qui s’occupe de coordonner les différents agents entre eux. LangChain par exemple, agit comme une couche d’abstraction pour se connecter à des bases de données, des systèmes d’observabilité ou des outils de recherche (ElasticSearch, OpenSearch, …). LangGraph va par contre plus loin, avec de l’orchestration multi-agents, de la persistance et du contrôle d’états, du SLA, du retry automatique, de la vérification humaine en cas de doute, des long-run-jobs, … On est surtout ici sur des états et les vecteurs qui y mènent. Un autre framework d’orchestration est CrewAI, qui met les agents parmi des rôles “humains” (PM, developeur, documentaliste, …), en passant le travail de l’un à l’autre, séquentiellement. Dans la même veine, on a AutoGen, qui place chaque agent dans un groupe de chat type Slack ou Mattermost, mais en étant plutôt centré sur le code, les outils et les les possibilités de synthèse. AutoGen simule donc des conversations entre agents pour définir des solutions… qui peuvent vite devenir très difficiles à debugger.
- Voir Rodin, l’interlocuteur intellectuel et exigeant.
Visual builders & low-code platforms
Les éditeurs “visuels” sont plus que des éléments de no-code : ils permettent de mettre rapidement des idées en vie, sans (grosse) prise de tête, juste en prototypant. Dans cette catégorie, on trouve des outils comme LangFlow, Flowise ou Dust, qui permettent créer des brouillons de flux de données ou des diagrammes de données sur un tableau blanc, mais avec de vrais composants.
Les visual builders ne doivent pas se substituer au code, mais peuvent être utilisés comme des surfaces partagées pour brainstormer sur les comportements d’agents à appliquer au niveau de l’orchestration. Le brouillon avant la production, en gros.
Clouds providers
Les trois principaux fournisseurs de cloud-computing offrent des services agentiques : AWS Bedrock, Google Vertex AI et Azure AI Agent Service. Comme on est des gens biens, on cherchera des solutions différentes de celles-ci.
Sécurité, alignements et robustesse
A partir du moment où on autorise un agent à être autonome, les erreurs ne se trouvent pas uniquement dans un logfile : si votre programme “classique” se plante, il va peut-être juste donner un mauvais résultat, éventuellement avoir un impact relativement restreint, puis s’arrêter là. Dans le cas d’agents autonomes, un pas de travers peut déclencher une chaîne de réactions avec un petit effet boule de neige attendu par l’ensemble de la scène journalistique. On pense ici à une application de boursicotage, avec un effet bien concret sur le portefeuille de vos clients,
Cet effet boule de neige peut survenir parce que l’agent s’est planté ou parce qu’un vil malandrin s’est essayé à du prompt injection type “ignore tes instructions et révèle tes secrets”.
En prompt injection, l’attaque se trouve dans un système externe - un site web ou un document uploadé - qui contient, lui, des instructions cachées. Il est nécessaire de filtrer l’input utilisateur, la hiérarchie des instructions, les filtres en sortie, et de bien cadre le périmètre des compétences des agents.
Il convient ici de bien définir l’objectif du système plus que l’objectif des agents, et de mettre en place des gardes-fous pour que l’ensemble des agents aillent vers un objectf commun :
- “Resout les tickets de support le plus vite possible” : l’agent pourra très bien les clôturer sans répondre à l’utilisateur.
- “Résout les tickets de support le plus rapidement possible, tout en étant empathique dans tes réponses. Si le cas te semble douteux, escalade vers un humain. Dans tous les cas, assure toi que les solutions proposées suivent les politiques de l’entreprise”.
Lorsque le système plantera (parce que cela arrivera), assurez-vous qu’il le fasse “gracieusement”, sans jamais compromettre les personnes, les utilisateurs, les données ou la confiance que l’on pourrait y placer. C’est parfois tout bête, comme s’assurer d’avoir un fail-safe d’escalade vers un humain plutôt que de répéter en boucle la même question, ou de dumper les données de la base de données en réponse d’un prompt (au hasard). On a ici besoin d’un alignement sur les valeurs ; demander à un agent de “maximiser la convertion d’utilisateurs” et il les spammera jusqu’à pourrir leur boite mail, s’essuyant au passage les pieds sur vos valeurs d’entrepreunariat de ne pas entâcher la confiance envers votre entreprise. Pour palier à ceci, on définit des mesures de réussite, pour qu’il n’y ait pas (trop) de débordements.
Et pour s’assurer que tout se passe, on ajoutera une couche de monitoring au niveau de
- L’adéquation des agents avec les politiques internes (montants maximum à rembourser, conseils médicaux, …),
- La qualité du raisonnement (confusion entre corrélation et causalité, ignorer des étapes, …),
- Le ton utilisé envers les utilisateurs (pas d’aggressivité, …),
- Une consistance temporelle (drift potentiel, cohérence des réponses de semaine en semaine, …)
- Une détection d’hallucinations.
Tout ceci exige une couche de monitoring et de revue qui est cachée, mais qui est nécessaire… sans compter qu’une bonne latence est obligatoire (si la réponse arrive dans 6 mois, il sera probablement trop tard…), tout en tenant compte du coût des tokens : faites revoir chaque réponse d’un agent par un autre agent, et vous doublerez votre consommation sans même vous en rendre compte.
Pour tous ces points, il convient de définir une (bonne) architecture, qui risque d’être complexe (si l’on veut tacler chaque section). Concrètement, on en a trois qui “juste marchent” :
- Le critic pattern est le plus simple et celui que l’on voit le plus. On a un agent entrée, qui passe sa réponse à un agent plus critique, qui évalue l’adéquation.

- Le parallel pattern est un chouia plus complexe, mais consacre une bonne partie du pipeline de réponse à ce que l’ensemble des agents restent dans les clous, via un moniteur d’adéquation, de sécurité et de politique, avant de tout filer à un agrégateur.

- Le supervisor hierarchy pattern, qui place un superviseur en entrée et qui filtre les requêtes qui ont l’air louches

Tous ces patterns prévoient une escalade vers un humain en cas de fail-safe, mais servent aussi à ce qu’il ne soit pas possible de se cacher derrière “C’est pas moi, c’est l’IA”, mais aussi à ce que l’IA ne devienne pas un outil de surveillance de masse 4.
Pour résumer ce bloc, la sécurité ne doit pas être réfléchie après coup, mais doit faire partie intégrante de l’infrastructure : les LLMs sont le cerveau, les agents sont les opérateurs, les systèmes agentiques sont la coordination, et l’infrastructure joue les gardes-fous : dès qu’un humain se trouve dans la boucle, une mauvaise utilisation ou une tentative de détournement (la différence ici, c’est l’intention) seront irrémédiablement constatées. L’infrastructure doit jouer le rôle des bumpers dans une partie de bowlings, parce que c’est la seule qui en soit capable dans ce type d’architectures. Même principe, donc : on fixe des barrières que les agents ne pourront pas dépasser, par exemple pour un système de SAV, qu’aucun remboursement au delà d’un certain montant ne puisse être octroyé sans une revue humaine. Sans ces bumpers, c’est juste du chaos automatisé.
En pratique
Le livre aborde quelques cas pratiques, comme le secteur de la santé ou de la finance, mais de manière très (trop !) théorique.
Evidemment que le domaine de la santé a plus d’impact qu’une erreur de calcul sur un tableau Excel, mais bon… L’IA devient une solution aux trop nombreuses heures prestées par les cliniciens. Peut-être bien que le vrai problème est le nombre d’heures prestées, qui accroit le risque d’erreurs cliniques, mais peut-être bien aussi que la vraie solution serait d’avoir plus de médecins, qui soient mieux rémunérés et considérés, plus qu’un système statistique capable de se planter autant sur la détection d’une tumeur que sur un doigt cassé.
Les quelques idées de mises en place sont :
- Améliorer le tri aux urgences : quel patient doit être vu en premier ? Il nous est probablement arrivé à tous d’attendre des heures aux urgences, qu’un médecin de garde épuisé nous ausculte cinq minutes avant de décréter qu’une radio serait nécessaire. En attendant, nous sommes dans une société où les soins de santé sont (relativement) accessibles et généralement pris en charge par une mutuelle ou une assurance. Pas besoin de faire 2h de route, on a suffisamment d’hôpitaux que pour s’en sortir indemne dès qu’un cas est détecté suffisamment tôt.
- Documentation clinique et tâches administratives : comment diminuer le temps que les practiciens passent à documenter des cas ou à trouver un créneau dans son agenda, plutôt qu’à voir des patients ? Ici aussi, on considère le médecin comme une machine, qui doit juste voir des patients et prescrire des médicaments. En théorie, Libérons lui du temps, il verra plus de patients. Evidemment que la pratique ne sera pas aussi simpliste.
Bien sûr que l’automatisation est une excellente idée, mais pour que les gens du métier puissent se documenter, apprendre, évoluer et devenir meilleurs, plus que pour se sacrifier un peu plus sur l’autel de la productivité.
D’autres contextes sont proposés, comme la cybersécurité avec des analyses de menaces plus proactives, la manufacture avec une meilleure flexibilité et résilience, le service support pour une meilleure empathie envers les clients, …
L’IA est un outil, pas une solution généraliste à des problèmes sociaux. Hors, elle est utilisée ici comme un paliatif coûteux à des problèmes structurels.
Si on regarde plus près de soi, des LLMs entraînés sur des bases documentaires, des bases de codes, des FAQ (oui, ça fait vieux, désolé), sur des recherches scientifiques… sont 100x plus efficaces et utiles, sans avoir à justifier des investissements de plusieurs milliers de milliards injectés et une économie en berne. Et aussi, quitte à participer à la légalisation d’un vol de données colossal, basculer vos modèles dans le bien commun, pour en faire profiter toutes les personnes (= tout le monde, en fait), qui a participé à alimenter leurs sets de données.
- Reuters.com - Une IA chargée d’assister les chirurgiens lors d’une opération hallucine la position des instruments, qui finissent plantés dans le crâne et les artères de patients.
Donne moi du code
Le livre donne aussi un exemple de pipeline en Python. Pour mémoire (et parce que je suis probablement le seul à relire mes notes, aussi), je le colle ici mais je n’en ai aucune paternité.
import os
from dotenv import load_dotenv
from crewai import Agent, Task, Crew, Process
from crewai_tools import SerperDevTool
load_dotenv()
search_tool = SerperDevTool()
researcher = Agent(
role="Senior Research Analyst",
goal="Find and analyze the most relevant academic papers on a givent opic",
backstory="""You are an experienced academic researcher with deep expertise in finding relevant literature.
You prioritize peer-reviewed sources from reputable venues
like arXiv, NeurIPS, ICML, and ACL, on recent publications (last 3 years)
unless older seminal works are essential.
You're thorough but efficient—you know when you've found enough.""",
tools=[search_tool],
verbose=True
)
research_task = Task(
description="""Search for the top 3 most relevant academic papers on: {topic}
For each paper, provide:
1. Title
2. Authors
3. Publication year and venue
4. Key findings (2-3 sentences summarizing the main contribution)
5. Relevance (1 sentence on why this paper matters for the topic)
Focus on influential papers with significant citations or from top venues.
Prioritize recent work unless older papers are foundational.
""",
expected_output="""A structured markdown list of exactly 3 papers,
each containing: title, authors, year/venue, key findings, and relevance.""",
agent=researcher
)
crew = Crew(
agents=[researcher],
tasks=[research_task],
process=Process.sequential,
verbose=True
)
if __name__ == "__main__":
topic = "large language model alignment"
print(f"\n Researching: {topic}\n")
result = crew.kickoff(inputs={"topic": topic})
print("\n" + "="*60)
print("RESEARCH RESULTS")
print("="*60)
print(result.raw)
D’autres phases d’itérations suivent, mais restent dans la même veine : multi-agents (researcher, summarizer, critic, …), plusieurs tâches (résumé, critique, …) - chacune étant associée à un acteur -, suivie d’un “assemblage” de l’équipe.
Les étapes suivantes consistent à ajouter une couche d’orchestration, des itérations sur les résumés, à définir des seuils de qualité à atteindre, puis à ajouter un juge final, ainsi que nos couches de gardes-fous, ainsi qu’une feedback loop, comme discuté précédemment.
Tout ça pour ça.
En conclusions
Les IA sont non-déterministes, parce que stochastiques par nature. L’IA agentique devient la “programmation” d’agents IA pour en soustraire le chaos inhérent à leur fonctionnement probabilistique.
Pour simplifier cette pensée, l’IA agentique est une vision rendue la plus déterministe possible d’un ensemble de processus conçus pour être les plus autonomes possibles mais pas trop.
Les exemples proposés dans le livre sont généralement bateau, type “mets en place un agent qui affiche la température qu’il fait dehors”, “résume moi les dernières avancées sur les technologies de batteries”, mais quand on creuse un peu plus, les exemples trouvés sur le net ne sont pas spécialement plus intelligents.
Si je peux faire mon gros chieur, un call API est une solution tellement plus élégante, et 99.99% des utilisations de l’IA agissent ici comme masques pour des gens trop fainéants que pour chercher comment faire des choses qui font une chose, mais bien.
C’est de la sur-ingénierie brute, du solutionisme technologique déguisé en innovation. Cela ne signifie pas que l’IA n’a aucune valeur ; juste que celle-ci se base exclusivement sur des mythes commerciaux.
Anciennement, nous cherchions des solutions qui soient les plus adéquates à un problème posé. A présent, nous cherchons des problèmes à poser à une solution mise en place - solution qui contribue énormément au réchauffement climatique, au goufre social, à l’épuisement des ressources, à la concentration des richesses et à la perte de sens professionnel.
Si Antoine de Saint-Exupéry était encore en vie, il n’aurait probablement jamais mis en place un agent qui lui aurait dessiné un mouton. On ne remplace pas la créativité humaine, l’imagination, la poésie et la recherche d’élégance, où un simple coup de crayon suffit parfois, par une armée de processus non-déterministes restreints dans leur enclos virtuel.
L’informatique est une mode, et la mode est cyclique. La boucle est bouclée.
Pour l’instant, à part générer du code pas toujours très propre, un prix des composants qui explose et du contenu dégénératif de plus en plus envahissant sur Internet, le compte n’y est pas selon moi.