L’IA qui s’autocorrige : Un MCP révolutionnaire pour le développement de code
Les assistants de codage IA suscitent chez nous des sentiments mitigés. Nous les apprécions pour leur capacité à accélérer considérablement le développement, mais nous sommes également frustrés par ces petites erreurs agaçantes qu’ils commettent régulièrement, les faisant parfois entrer dans des boucles infinies lorsqu’ils tentent de les résoudre. C’est pourquoi l’une de mes missions principales est de rendre les assistants de codage IA véritablement fiables.
J’ai récemment travaillé sur plusieurs projets dans cette optique : mon serveur MCP « Crawl for AI RAG » qui fournit des connaissances externes sur les bibliothèques et outils à nos assistants de codage, ainsi qu’Archon, mon constructeur d’agents IA dont je prépare une refonte majeure pour la version 2. L’interface utilisateur prend forme et s’annonce très prometteuse – j’en dirai plus à ce sujet plus tard dans cet article.
Les graphes de connaissances : l’avenir des assistants de codage IA
La grande innovation sur laquelle j’ai expérimenté récemment, et qui pourrait représenter une avancée majeure pour l’avenir, est la combinaison des graphes de connaissances avec les assistants de codage IA. Dans cet article, je vais vous montrer ce que j’entends par là et comment cette approche résout un problème crucial pour le codage IA actuel.
Tout ce que je vais vous présenter a déjà été intégré à mon serveur MCP « Crawl for AI RAG ». Si cela vous intéresse et que vous souhaitez l’essayer dès maintenant avec MCP et votre codeur IA, vous pouvez le faire en suivant les instructions dans le README pour configurer l’ensemble du système.
Structure du graphe de connaissances
Commençons par examiner ce que j’ai stocké dans mon graphe de connaissances, puis je vous donnerai un exemple concret qui démontre sa puissance. Zoomons sur le nœud central de notre graphe dans ma visualisation Neo4j.
Ce que nous avons ici est un dépôt pour Pydantic AI. J’ai pris l’intégralité du dépôt GitHub de Pydantic AI, mon framework d’agent IA open source préféré, et je l’ai transformé en un graphe de connaissances qui peut être interrogé par les assistants de codage IA.
Tous les dépôts portent l’étiquette « repository ». Nous avons des fichiers (nœuds verts) qui représentent tous les fichiers dans le contrôle de source. Ces fichiers contiennent des fonctions (bleu foncé) et des classes (turquoise). Ces classes, comme notre agent, ont leurs propres fonctions (nœuds rouges) ainsi que des attributs (nœuds beige).
J’ai donc transformé l’ensemble du dépôt GitHub en une structure relationnelle dans ce graphe de connaissances, spécifiquement conçue pour être interrogée par les assistants de codage IA. Il y a en réalité des centaines de nœuds dans ce graphe, mais je n’en montre que les 300 premiers pour éviter l’encombrement visuel.
Pourquoi les graphes de connaissances sont essentiels
La raison pour laquelle il est si puissant de stocker les dépôts de cette manière est que lorsque nous utilisons Pydantic AI pour construire un agent IA avec l’aide d’un assistant de codage IA, ces assistants hallucinent souvent des fonctions ou des attributs spécifiques pour les classes que nous créons.
Voici un exemple concret : j’ai utilisé Windsurfer pour construire un agent avec Pydantic AI, et il a presque tout fait correctement. Je ne vais pas entrer dans les détails du code de Pydantic AI, mais je veux illustrer quelque chose à un niveau plus général.
Dans ce cas, l’agent a été correctement défini comme ceci :
# Définition de notre modèle de langage et prompt système
# Ajout d'un outil
# Tout semble correct
Mais si nous descendons jusqu’à la façon dont nous utilisons réellement cet agent, nous voyons qu’il appelle la fonction invoke_async
. C’est une hallucination de Windsurfer avec Claude 3.7 Sonnet. Il s’est complètement trompé ici, car cette fonction n’existe pas.
Et comment le savons-nous ? En consultant notre graphe de connaissances où nous avons notre classe d’agent définie plus tôt dans le code, nous constatons qu’il n’y a pas un seul nœud rouge pour invoke_async
parce que cette fonction n’existe tout simplement pas.
Ce qui s’est passé, c’est que Windsurfer, même en utilisant la documentation de Pydantic AI que je lui ai fournie, n’a pas bien saisi la syntaxe exacte pour appeler un agent et obtenir la sortie en streaming. Et comme il n’a pas trouvé cette information, il a simplement comblé le vide en inventant complètement quelque chose. C’est ce que font constamment les assistants de codage IA.
Détection des hallucinations
J’ai même un script qui exploite le graphe de connaissances pour détecter ces hallucinations (également disponible dans le dépôt GitHub « Crawl for AI RAG MCP »). Je peux lui passer le chemin vers ce script comme argument. Cette analyse n’utilise pas du tout de LLM, c’est uniquement du code déterministe qui interroge le graphe de connaissances et vérifie toutes les façons dont nous utilisons Pydantic AI pour voir si elles correspondent à ce qui est réellement possible selon les informations du graphe.
Et effectivement, il a trouvé sept utilisations valides de Pydantic AI (comme la création de l’agent qui est correcte), mais il a aussi repéré une hallucination. Le rapport indique que la méthode invoke_async
n’existe pas dans la classe PydanticAI.
Ce détecteur d’hallucinations peut être fourni comme outil à notre assistant de codage IA. Ainsi, l’assistant peut générer un script, l’exécuter avec le détecteur d’hallucinations, identifier les erreurs qu’il a commises en se basant sur notre graphe de connaissances, puis s’autocorriger. C’est la puissance dont nous disposons maintenant.
La façon dont le système détecte l’hallucination est qu’il examine la classe Agent dans mon graphe de connaissances, parcourt tous ces nœuds rouges et confirme que invoke_async
n’existe pas. Il peut alors réaliser que la fonction qu’il devrait utiliser est run_stream
. C’est la bonne fonction à employer.
Un assistant de codage IA peut donc recevoir ce retour, modifier le code pour utiliser run_stream
, et quand je relance mon détecteur d’hallucinations, nous obtenons maintenant huit utilisations valides de Pydantic AI, avec un taux d’hallucination de 0%.
Détection des paramètres incorrects
Le meilleur aspect est que cela fonctionne également avec les paramètres de fonction. Si j’utilise la bonne fonction mais que j’ajoute un argument qui n’existe pas réellement, il le détectera aussi. En exécutant à nouveau l’analyse, nous identifions une utilisation invalide d’une fonction car l’argument test
n’existe pas dans run_stream
.
En revenant au graphe de connaissances, le système a vérifié la fonction run_stream
, examiné la liste des paramètres (user_prompt, model_settings, dependencies, conversation_history), et constaté qu’il n’y a rien pour un paramètre appelé test
. C’est ainsi qu’il peut déterminer qu’il y a une hallucination.
Nous pouvons utiliser ce type de feedback et permettre à l’agent d’explorer ce graphe de connaissances pendant qu’il génère du code, afin qu’il puisse s’autocorriger lorsqu’il commet ces petites erreurs qui le font habituellement entrer dans des boucles infinies.
Ce sont des détails que vous pourriez trouver en consultant la documentation de Pydantic AI ou des exemples d’utilisation d’agents, mais parfois la documentation ne montre pas ces petits détails concernant les paramètres de fonctions. C’est pourquoi il est très puissant de donner à notre agent la capacité de rechercher dans le code source sous-jacent des bibliothèques et outils open source que nous utilisons.
Quand utiliser d’autres outils spécialisés
Avant de poursuivre, je tiens à préciser que même si ce serveur MCP sera révolutionnaire pour de nombreux aspects du codage, je ne veux pas prétendre qu’il sera toujours la solution idéale. Selon ce que vous souhaitez construire, il existe déjà des outils spécialisés qui intègrent ce type de feedback et de correction automatique.
Le développement d’applications front-end en est un excellent exemple, avec des outils comme notre propre Bolt.DIY open source, Bolt.new et Lovable. J’ai beaucoup utilisé Lovable récemment, notamment pour créer la première version de ma page d’accueil pour la communauté Dynamus AI Mastery. Ça fonctionne incroyablement bien, avec très peu d’hallucinations. Et quand je rencontre des problèmes, ces outils peuvent examiner l’erreur dans le code React et la corriger. C’est très autonome et possède cette capacité d’autocorrection.
Un autre excellent exemple concerne les automatisations de navigateur grâce à une plateforme appelée Browserbase. Cette entreprise est vraiment unique en son genre. J’ai été tellement impressionné que j’ai établi un partenariat avec eux. Pour le développement front-end, nous avons différentes solutions comme Lovable et Bolt.DIY, mais pour les automatisations de navigateur, je n’ai rien trouvé de comparable.
Ils ont un framework d’automatisation de navigateur open source appelé Stage Hand, qui est extrêmement puissant car il permet d’automatiser des tâches avec Playwright. En fait, il est construit sur Playwright pour créer ces automatisations de navigateur, mais elles peuvent être fragiles car les sites web externes que nous explorons peuvent changer. Nous avons donc besoin d’un agent IA capable de naviguer intelligemment sur ces sites, et c’est ce que Stage Hand permet.
Ils ont récemment lancé une plateforme appelée Director, qui est très prometteuse. Vous pouvez utiliser Director pour créer des automatisations de navigateur un peu comme vous créez des interfaces avec Lovable ou Bolt. Vous pouvez simplement demander, par exemple, d’aller sur votre package IA local dans GitHub et d’obtenir un résumé de tous vos problèmes et pull requests. Il va raisonner par lui-même, déterminer comment naviguer sur le web en temps réel pour y parvenir, générer le code au fur et à mesure, et vous donner exactement ce que vous recherchez.
J’ai été vraiment impressionné par Director en l’essayant avec différents cas d’utilisation. Lorsqu’il clique sur le mauvais bouton, il s’autocorrige toujours. Je peux voir les choses en temps réel dans mon navigateur pendant qu’il navigue sur le web, et il génère également le code pour ce script, que je peux réutiliser pour cette automatisation. Très impressionnant.
L’automatisation de navigateur est donc un autre exemple où vous n’avez pas vraiment besoin de coder vous-même dans votre IDE IA et d’utiliser quelque chose comme ce MCP. Mais il existe certainement de nombreux cas d’utilisation, la plupart je dirais, où l’hallucination est un problème majeur et où vous voulez une détection d’hallucination intégrée. C’est ce que j’essaie de construire ici.
Une approche expérimentale en évolution
Soyons clairs, cette stratégie d’utilisation des graphes de connaissances est très expérimentale. Je travaille encore à affiner et valider l’idée globale et à rendre la détection d’hallucinations précise. J’ai consacré beaucoup de temps à développer tout cela pour arriver au point où nous en sommes maintenant.
J’ai annoncé sur ma chaîne la semaine dernière que je passerais à une vidéo par semaine pour pouvoir consacrer plus d’efforts à chaque vidéo. Cela signifie soit que la vidéo sera plus longue, comme mon masterclass sur l’IA locale, soit que je mets beaucoup plus d’efforts en coulisses, comme pour cette vidéo.
Croyez-moi, j’y ai vraiment consacré beaucoup de travail. Il y a eu énormément d’efforts investis car ma mission est vraiment de trouver toutes les stratégies possibles pour rendre les assistants de codage IA plus précis, puis d’intégrer tout cela dans la refonte d’Archon avec Archon version 2.
Archon va combiner la gestion de projets (un peu comme Claude Taskmaster que nous voyons ici), et l’assistant de codage IA peut gérer tout cela via MCP. J’y ajoute également la connaissance pour RAG avec toutes mes différentes stratégies RAG présentes dans le « Crawl for AI RAG MCP ». J’ajouterai probablement aussi cette stratégie de graphe de connaissances une fois que je l’aurai affinée. Et vous pourrez gérer le serveur MCP également via l’interface utilisateur d’Archon.
Voilà donc un petit aperçu de ce qui arrive avec Archon. Je suis super enthousiaste et cela restera complètement gratuit et open source pour vous pendant que je le développe. Je reçois l’aide de quelqu’un de la communauté Dynamis également, que je présenterai lors du lancement officiel d’Archon V2.
Mise en pratique avec Claude Code
Revenons aux graphes de connaissances. Je veux maintenant intégrer toute cette capacité de graphe de connaissances dans le serveur MCP « Crawl for AI RAG », puis l’utiliser avec Claude Code. Je veux donner à Claude Code la capacité de travailler avec ce graphe de connaissances pour construire un agent Pydantic AI sans aucune hallucination.
Les nouveaux outils du serveur MCP
Je vais vous présenter certaines des fonctions que j’ai ajoutées au serveur MCP et que nous allons donner à Claude Code pour explorer le graphe de connaissances. Croyez-moi, cela fait une énorme différence.
Si vous souhaitez utiliser la partie graphe de connaissances de ce serveur MCP, vous devez simplement définir use_knowledge_graph
à true
dans vos variables d’environnement, puis entrer vos propres identifiants pour votre instance Neo4j. C’est très facile à mettre en place en l’hébergeant vous-même, et des instructions complètes sont incluses dans le README.
Vous pouvez installer Neo4j soit via mon package Local AI, ce que je recommande vivement car c’est l’un des services inclus, soit en installant Neo4j Desktop très facilement.
Voici les nouveaux outils que j’ai ajoutés à ce serveur MCP :
-
Vérification des hallucinations : Un outil pour exécuter le script de vérification des hallucinations que j’ai montré précédemment. Mais maintenant, au lieu que la sortie nous revienne, elle va directement à l’assistant de codage IA via le serveur MCP pour qu’il puisse s’autocorriger.
-
Requête du graphe de connaissances : Cet outil permet d’explorer différentes classes, méthodes, et même d’autoriser l’assistant de codage IA à écrire des requêtes personnalisées pour explorer le graphe de connaissances de manière très spécifique. Il peut exécuter des commandes comme lister les méthodes disponibles pour la classe Agent.
-
Analyse d’un dépôt GitHub : Le dernier outil permet de parser un dépôt GitHub. Vous envoyez simplement l’URL du dépôt GitHub, et il l’ajoute au graphe de connaissances. Ce processus d’indexation et de stockage d’un dépôt prend généralement moins de 30 secondes, car aucun grand modèle de langage n’est utilisé – c’est entièrement du code déterministe qui analyse tous les fichiers du dépôt.
Création d’un agent avec Claude Code
Maintenant, utilisons Claude Code avec notre serveur MCP pour construire un agent Pydantic AI. J’ai préparé des instructions détaillées dans un fichier claw.md
qui définit précisément la tâche à accomplir.
J’ai défini un flux de travail pour exploiter correctement le serveur MCP :
-
Phase 1 : S’assurer que les sources pour Pydantic AI sont disponibles à la fois dans notre base de connaissances pour RAG et dans notre graphe de connaissances pour la détection d’hallucinations.
-
Phase 2 (Recherche) : Rechercher des exemples de code et effectuer du RAG pour examiner la documentation de Pydantic AI.
-
Phase 3 (Analyse approfondie) : Interroger le graphe de connaissances pour obtenir des méthodes et attributs spécifiques, comme ceux de la classe Agent.
-
Phase 4 (Génération et validation) : Générer le code, vérifier les hallucinations, écrire des tests unitaires et itérer si nécessaire.
Ce serveur MCP nous permet d’avoir ce flux pour que notre agent commence à haut niveau puis devienne plus précis dans sa recherche.
J’ai lancé une tâche pour Claude afin de créer cet agent. Il va passer par toutes ces étapes sans que j’aie à intervenir, et à la fin, il aura validé lui-même son travail. Nous aurons un agent parfaitement fonctionnel avec un minimum d’hallucinations.
Claude commence par générer une liste de tâches à accomplir, puis vérifie les sources et le graphe de connaissances. Il effectue ensuite des requêtes RAG pour explorer la documentation et les exemples de code, avant de passer à l’étape 3 pour plonger dans le graphe de connaissances, examinant des classes spécifiques.
Résultat final
Quelques minutes plus tard, Claude Code a généré l’agent complet du premier coup, et il fonctionne ! Il a suivi tout le processus que nous avons défini, en implémentant le code et en effectuant des validations et des autocorrections.
L’agent qu’il a construit utilise Pydantic pour le typage, crée l’agent de manière très solide avec un prompt système dynamique, et injecte plusieurs outils dans l’agent. C’est vraiment du code Pydantic AI de qualité.
En exécutant cet agent sans hallucination, nous pouvons voir qu’il gère correctement plusieurs requêtes de test. Bien qu’il ne récupère pas réellement la météo à Londres (c’est un outil météo simulé), il montre que nous créons plusieurs outils, les ajoutons à notre agent, et utilisons l’agent pour déterminer quel outil utiliser en fonction de la requête.
Cela fonctionne incroyablement bien. Je suis impressionné que du premier coup, nous ayons obtenu un agent fonctionnel. Ce n’est pas un agent extrêmement trivial – il y a une bonne quantité de code généré ici, plus de 300 lignes.
Pour confirmer l’absence d’hallucinations, nous pouvons exécuter le détecteur d’hallucinations nous-mêmes sur l’agent que Claude Code a généré. Le résultat ? Douze utilisations valides de Pydantic dans le script et zéro hallucination. Les résultats sont vraiment excellents.
Conclusion
Voilà tout ce que je voulais vous montrer concernant les graphes de connaissances et le RAG avec mon serveur MCP « Crawl for AI RAG ». Tout cela sera intégré dans Archon avec l’énorme refonte de la version 2 actuellement en cours.
Restez à l’écoute, car j’ai de grands projets pour faire d’Archon le meilleur serveur MCP au monde pour le codage IA, combinant à la fois la gestion des connaissances et des tâches. Nous obtenons déjà des résultats incroyables, même en testant Archon dans ses tout premiers stades alpha.
Si cet article a suscité votre intérêt pour Archon, le RAG et les graphes de connaissances, n’hésitez pas à me laisser un like et à vous abonner. Je vous en serais très reconnaissant.
À bientôt dans le prochain article !
Featured image by Grégory Palmer on Unsplash