Que sont les agents IA ? Comment ils fonctionnent, avec une simple boucle d’agent que vous pouvez exécuter
Un agent IA fait plus que répondre. Il se fixe un objectif, choisit des actions, vérifie les résultats et continue. Apprenez ce qu’il y a à l’intérieur, exécutez une petite boucle en Python et comprenez les risques avant d’en faire confiance.
- Un agent IA est généralement un modèle de langage exécuté en boucle, avec des outils et un objectif.
- La boucle est simple : décider, agir, observer le résultat et répéter jusqu’à la fin.
- Le modèle suggère uniquement des actions. Votre code les exécute, c’est là que vous appliquez les règles.
- Les agents peuvent utiliser les outils en boucle ou à mauvais escient, alors fixez des limites d’étapes et exigez une approbation pour les actions risquées.
Interrogez un chatbot sur une commande tardive et il vous donnera quelques conseils. Demandez à un agent IA, et il pourra consulter la commande, vérifier le retard, appliquer un bon et faire un rapport. La différence est qu’un agent peut entreprendre des actions et réagir à ce qui se passe, au lieu de produire une seule réponse.
Le terme étant étendu en marketing, ce guide s’en tient au fonctionnement réel de ces systèmes. Pour que cela soit concret, nous avons construit une petite boucle d’agent dans Python 3.13 et l’avons exécutée, et le résultat ci-dessous provient de ces exécutions. Notre « modèle » est une fonction scriptée, pas un véritable modèle d’IA, afin que la boucle puisse être exécutée et testée par n’importe qui. Cela montre la structure de contrôle, pas l’intelligence. Vous débutez avec les bases ? Lisez d’abord qu’est-ce qu’un grand modèle de langage.
Qu’est-ce qu’un agent IA ?
Il n’existe pas de définition unique convenue. Dans la pratique actuelle, un agent IA est un logiciel qui poursuit un objectif en décidant à plusieurs reprises quoi faire ensuite, en utilisant des outils pour agir sur le monde et en s’ajustant en fonction des résultats. Habituellement, la prise de décision provient d’un grand modèle de langage.
Pensez à la différence entre une personne qui donne des directions et une personne qui fait les courses. Le premier répond une fois. Le second part, trouve le magasin fermé, en essaie un autre et ne revient que lorsque le travail est terminé.
Chatbot, workflow ou agent ?
| Tapez | Qui décide des étapes ? | Peut-il agir ? | Exemple |
|---|---|---|---|
| Chatbot | L’utilisateur conduit à chaque tour | Généralement non | Répond aux questions à partir du texte |
| Flux de travail fixe | Le développeur, en avance | Oui, sur des chemins tracés | Résumez chaque ticket, puis acheminez-le |
| Agent IA | Le modèle, au moment de l’exécution | Oui, dans certaines limites | Enquête et résout un ticket |
Ceux-ci existent sur un spectre, et de nombreux systèmes utiles sont un mélange. La question clé est de savoir quelle part du chemin est décidée au moment de l’exécution.
Qu’y a-t-il à l’intérieur d’un agent
| Partie | Rôle |
|---|---|
| Modèle | Décide de la prochaine étape, en fonction de l’objectif et de ce qui s’est passé jusqu’à présent |
| Instructions | L’objectif, les règles et les limites qu’il doit suivre |
| Outils | Fonctions qu’il peut demander, comme rechercher ou appeler une API |
| Mémoire | Ce qu’il sait des étapes précédentes ou des sessions passées |
| Boucle de contrôle | Code ordinaire qui exécute des outils et applique des limites |
La boucle des agents
- Décider. Le modèle examine l’objectif et l’historique, et choisit une action ou décide qu’elle est terminée.
- Act. Votre code exécute l’outil demandé.
- Observer. Le résultat est ajouté à l’historique.
- Répétez, jusqu’à ce que l’objectif soit atteint ou qu’une limite soit atteinte.
C’est le cœur de la plupart des agents. La sophistication réside principalement dans le modèle, les outils et les garde-fous autour de cette boucle.
Une boucle que vous pouvez exécuter
Notre petit agent gère les commandes retardées. Il dispose de deux outils, et l’un d’eux nécessite l’approbation humaine car cela coûte de l’argent :
ORDERS = {
"A100": {"status": "delayed", "days_late": 6},
"B200": {"status": "shipped", "days_late": 0},
}
def get_order(order_id):
return ORDERS.get(order_id, {"error": "order not found"})
def issue_voucher(order_id, amount):
return {"voucher": f"V-{order_id}", "amount": amount}
TOOLS = {"get_order": get_order, "issue_voucher": issue_voucher}
NEEDS_APPROVAL = {"issue_voucher"}
Et voici la boucle elle-même. Il s’agit d’un code ordinaire, et chaque règle de sécurité réside ici plutôt que dans le modèle :
def run_agent(goal, model, approve, max_steps=5):
history = []
for step in range(1, max_steps + 1):
decision = model(goal, history)
if "finish" in decision:
return decision["finish"]
name, args = decision["tool"], decision["args"]
if name in NEEDS_APPROVAL and not approve(name, args):
result = {"denied": True}
else:
result = TOOLS[name](**args)
history.append({"tool": name, "result": result})
return None # stopped: step limit reached
Pour utiliser un modèle réel, vous remplaceriez la fonction model par un appel à une API LLM, en lui transmettant le but, l’historique et les descriptions de vos outils. La boucle reste presque la même.
Que s’est-il passé lors de nos courses
Nous avons essayé cinq situations avec la fonction de décision scriptée et enregistré chaque étape.
Une commande retardée, avec le bon approuvé
step 1: get_order({'order_id': 'A100'}) -> {'status': 'delayed', 'days_late': 6}
step 2: issue_voucher({'order_id': 'A100', 'amount': 200}) -> {'voucher': 'V-A100', 'amount': 200}
step 3: finish -> Sorry for the delay. Voucher V-A100 issued.
Chaque étape utilisait le résultat de la précédente. Le bon n’a été pris en compte qu’une fois le retard confirmé.
La même ordonnance, avec approbation refusée
step 2: issue_voucher({'order_id': 'A100', 'amount': 200}) -> {'denied': True}
step 3: finish -> Your order is late. A person will review compensation.
L’humain a dit non, l’outil n’a jamais fonctionné et l’agent a adapté sa réponse.
Une commande inconnue
step 1: get_order({'order_id': 'Z999'}) -> {'error': 'order not found'}
step 2: finish -> I could not find that order.
Donner aux outils des messages d’erreur clairs est utile. Un vrai modèle peut les lire et réagir de manière judicieuse, plutôt que de deviner.
Un modèle qui coince
Nous avons également remplacé une fonction de décision défectueuse qui répétait indéfiniment la même action :
step 1: get_order({'order_id': 'B200'}) -> {'status': 'shipped', 'days_late': 0}
step 2: get_order({'order_id': 'B200'}) -> {'status': 'shipped', 'days_late': 0}
step 3: get_order({'order_id': 'B200'}) -> {'status': 'shipped', 'days_late': 0}
stopped: step limit reached
Les agents peuvent vraiment tomber dans des boucles comme celle-ci, et chaque étape avec un modèle réel coûte de l’argent. Sans max_steps, celui-ci n’aurait jamais pris fin.
Comment fonctionnent les outils
C’est la partie la plus mal comprise. Un modèle de langage ne peut rien exécuter par lui-même. Il produit un texte structuré indiquant quel outil il souhaite, avec quels arguments. Votre code décide de l’exécuter ou non. C’est pourquoi la boucle est le bon endroit pour les autorisations, la validation et la journalisation.
Les fournisseurs de modèles proposent un outil ou une fonction nécessitant cela. Le Model Context Protocol (MCP) est un standard ouvert permettant de connecter des modèles à des outils et des données, et notre article sur Playwright MCP présente une utilisation. Écrivez des noms et des descriptions clairs des outils, car le modèle s’appuie sur eux pour choisir correctement.
Conseil : Commencez avec des outils en lecture seule. Un agent qui ne peut que rechercher des informations est bien moins dangereux qu’un agent qui peut envoyer, supprimer ou payer. Ajoutez l’accès en écriture un outil à la fois, une fois que vous avez vu son comportement.
Mémoire
| Tapez | Détient | Exemple |
|---|---|---|
| Court terme | L’historique de la tâche en cours | La liste history dans notre boucle |
| À long terme | Faits conservés entre les séances | Préférences utilisateur dans une base de données |
| Connaissance | Documents récupérés en cas de besoin | RAG utilisant intégrations |
Les tâches longues peuvent dépasser la fenêtre contextuelle d’un modèle, de sorte que les systèmes résument souvent les étapes plus anciennes. Les résumés peuvent perdre des détails, ce qui est l’une des raisons pour lesquelles les agents en activité depuis longtemps peuvent dévier de leur cap.
Systèmes multi-agents
Certains systèmes répartissent le travail entre plusieurs agents spécialisés, comme un planificateur, un chercheur et un évaluateur. Cela peut aider avec des tâches volumineuses qui sont clairement divisées. Cela ajoute également des coûts, davantage de possibilités d’échec et un débogage plus difficile. Essayez d’abord un seul agent doté de bons outils et divisez-le uniquement lorsqu’il y a une raison claire.
Risques et limites
- De mauvaises actions. L’erreur d’un chatbot est une mauvaise phrase. L’erreur d’un agent peut être un e-mail envoyé ou un enregistrement supprimé.
- Injection rapide. Une page Web ou un e-mail lu par l’agent peut contenir des instructions cachées. Traitez toutes les sorties de l’outil comme des données non fiables, et non comme des commandes.
- Erreurs cumulées. Une petite erreur au début peut envoyer chaque étape ultérieure dans la mauvaise direction.
- Coût et latence. Chaque étape peut être un autre appel de modèle, de sorte qu’une tâche peut être beaucoup plus lente et plus coûteuse qu’une seule invite.
- Incohérence. Le même objectif peut prendre un chemin différent à chaque exécution, ce qui rend les tests plus difficiles.
- Responsabilité. Les gens restent responsables de ce que fait le système, alors gardez des registres.
Des garde-corps qui comptent
- Moins de privilèges. Donnez à chaque agent uniquement les outils et l’accès dont il a besoin.
- Approbation humaine pour tout ce qui est coûteux, irréversible ou externe, comme le fait notre démo.
- Limites strictes sur les étapes, le temps et les dépenses.
- Validez les entrées de l’outil dans le code et ne vous fiez pas aux instructions du modèle.
- Enregistrez chaque étape afin de comprendre pourquoi quelque chose s’est produit. Voir surveillance vs observabilité.
- Testez avec des scénarios réels, y compris des échecs. Vérifiez les résultats finaux ainsi que les réponses individuelles. Notre guide des bonnes pratiques des agents IA va plus loin sur le déploiement.
Quand utiliser un agent
| Utiliser un agent lorsque | Utilisez quelque chose de plus simple lorsque |
|---|---|
| Les étapes ne peuvent pas être connues à l’avance | Les étapes sont toujours les mêmes |
| La tâche nécessite plusieurs outils | Une seule invite peut faire l’affaire |
| Les résultats changent ce qui se passe ensuite | Un flux de travail fixe fonctionnerait |
| Les erreurs sont peu coûteuses ou révisables | Les erreurs sont coûteuses et difficiles à réparer |
Les assistants de codage sont aujourd’hui l’un des exemples les plus aboutis, car ils peuvent lire des fichiers, exécuter des tests, détecter les échecs et réessayer, avec un humain examinant le résultat. Une suite de tests leur donne un signal clair de réussite. Notre guide sur l’ingénierie des invites s’applique également à la rédaction de bonnes instructions pour les agents. Commencez par la chose la plus simple qui puisse fonctionner, car un seul appel bien lancé bat souvent un agent compliqué.
Pour conclure
Un agent IA est moins mystérieux qu’il n’y paraît : un modèle, des outils et une boucle avec des limites. Le plus difficile, c’est la confiance, pas le code. Pour savoir comment ils se comportent, prenez notre petite boucle, connectez-la à un modèle réel avec des outils en lecture seule et observez les journaux pendant son fonctionnement. Vous verrez bientôt où il brille et où il a besoin d’un humain.
Questions fréquentes
Qu’est-ce qu’un agent IA en termes simples ?
C’est un logiciel qui travaille vers un objectif en choisissant des actions, en utilisant des outils et en vérifiant les résultats en boucle, plutôt que de donner une seule réponse.
Quelle est la différence entre un chatbot et un agent IA ?
Un chatbot répond principalement à chaque message. Un agent peut planifier plusieurs étapes, appeler des outils et changer de cap en fonction de ce qui se passe en cours de route.
Les agents d’IA ont-ils besoin d’un grand modèle de langage ?
La plupart des systèmes modernes utilisent un LLM pour prendre des décisions, bien que l’idée plus large des agents logiciels soit plus ancienne et puisse utiliser des règles ou d’autres méthodes d’IA.
Les agents IA sont-ils sûrs ?
Ils comportent des risques réels, notamment de mauvaises actions et une injection rapide. Limitez leurs autorisations, exigez l’approbation pour les étapes risquées, fixez des limites strictes et enregistrez tout.
Un agent IA peut-il remplacer un développeur ou un testeur ?
Pas aujourd’hui en général. Ils peuvent gérer de nombreuses tâches bien définies, mais les gens doivent néanmoins fixer des objectifs, examiner le résultat et assumer la responsabilité du résultat.
Continuez à apprendre
Besoin d’aide pour les tests, WordPress ou le référencement ?
Nous aidons les équipes à proposer de meilleurs logiciels et à développer leurs sites. Dites-nous sur quoi vous travaillez et nous vous proposerons une prochaine étape claire.
Plus de guides sur tests, IA et développement moderne
Vous avez apprécié cet article ? Choisissez un sujet et accédez directement à nos nouveaux didacticiels.
Les hallucinations de l'IA expliquées : pourquoi les modèles de langage inventent les choses et comment les réduire
Les hallucinations de l'IA ont expliqué : ce qu'elles sont, pourquoi les modèles de langage les produisent, les types courants, comment les réduire …
Lire l'article →DevOpsVariables d'environnement expliquées : fichiers .env, secrets et configuration correctement effectués
Variables d'environnement expliquées avec des exemples Python que nous avons exécutés : lecture et définition, pourquoi chaque valeur est une chaîne…
Lire l'article →Développement logicielLimitation du débit de l'API expliquée : algorithmes, en-têtes et gestion des erreurs 429
Limitation du débit de l'API expliquée avec une simulation que nous avons exécutée : compartiment de jetons, fenêtre fixe, fenêtre glissante, 429 ré…
Lire l'article →Automatisation des testsSe moquer en Python : unittest.mock, patch et les erreurs qui font mentir les tests
Moquerie en Python avec unittest.mock, testée : Mock et return_value, side_effect, correctifs où un nom est utilisé, spec et autospec, dates moqueus…
Lire l'article →Tests logicielsCouverture du code expliquée : couverture des lignes par rapport aux branches et ce que signifie réellement 100 %
Couverture du code expliquée avec une véritable exécution de cover.py : couverture des lignes, des branches et des conditions, lecture d'un rapport,…
Lire l'article →Bases de données et SQLDELETE vs TRUNCATE vs DROP dans SQL : différences, restauration et quand les utiliser
DELETE vs TRUNCATE vs DROP expliqué avec SQL testé : ce que chacun supprime, restauration, déclencheurs, réinitialisation d'identité, vitesse et en …
Lire l'article →Bases de données et SQLVues SQL expliquées : créez, utilisez et évitez les pièges, avec des exemples
Vues SQL expliquées avec les requêtes que nous avons exécutées : création d'une vue, résultats en direct, masquage des colonnes, performances, vues …
Lire l'article →Développement logicielInterface TypeScript vs Type : différences réelles, testées avec le compilateur
Interface TypeScript vs type, vérifiée avec le vrai compilateur : ce que les deux peuvent faire, ce qu'un seul peut faire, la fusion des déclaration…
Lire l'article →Développement logicielPython *args et **kwargs expliqués : fonctions flexibles avec des exemples clairs
Python *args et **kwargs expliqués avec le code que nous avons exécuté : emballage et déballage, ordre des paramètres, arguments de mot-clé uniqueme…
Lire l'article →Développement logicielFonctions Python Lambda : syntaxe, utilisations réelles et quand ne pas les utiliser
Fonctions Python lambda expliquées avec le code que nous avons exécuté : syntaxe, tri avec clé, carte et filtre, fermetures, piège de liaison tardiv…
Lire l'article →Intelligence artificielleQue sont les agents IA ? Comment ils fonctionnent, avec une simple boucle d'agent que vous pouvez exécuter
Que sont les agents IA ? Un guide simple sur la boucle d'agent, les outils, la mémoire et les garde-fous, avec une petite boucle Python que nous avo…
Lire l'article →DevOpsSurveillance vs observabilité : la vraie différence, avec les journaux, les métriques et les traces
Surveillance et observabilité expliquées : échecs connus et inconnus, journaux, métriques et traces, présentation pas à pas des incidents de paiemen…
Lire l'article →DevOpsVolumes Docker vs montages Bind : conserver les données du conteneur de la bonne manière
Volumes Docker et montages de liaison expliqués : pourquoi les données du conteneur disparaissent, volumes nommés, montages de liaison, tmpfs, exemp…
Lire l'article →Automatisation des testsTDD vs BDD : principales différences, une fonctionnalité conçue dans les deux sens et quand les utiliser
TDD vs BDD expliqué avec une fonctionnalité de remise construite dans les deux sens : refactor rouge-vert avec le code que nous avons exécuté, scéna…
Lire l'article →Développement logicielGit merge vs rebase : différences, exemples et quand utiliser chacun
Git merge vs rebase expliqué avec de vraies sorties de log, un tableau comparatif, la règle d'or du rebase et un flux de travail sûr pour les équipes.
Lire l'article →Développement logicielList comprehension Python : syntaxe, exemples et cas à éviter
La list comprehension Python expliquée : syntaxe, filtres, if-else, boucles imbriquées, temps mesurés et cas où une boucle for classique est préféra…
Lire l'article →Bases de données et SQLJointures SQL expliquées avec exemples (Inner, Left, Right, Full)
Comprenez les jointures SQL pas à pas avec des tables et requêtes d'exemple : INNER, LEFT, RIGHT, FULL, CROSS et SELF, plus erreurs courantes et con…
Lire l'article →