7 points par GN⁺ 2026-01-09 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • L’architecture centrale d’un assistant de code IA n’est pas une magie complexe, mais environ 200 lignes de code Python simple
  • Le système repose sur une boucle de conversation avec un LLM : lorsque le LLM demande un appel d’outil, le code local l’exécute puis lui renvoie le résultat
  • Les trois outils de base nécessaires sont la lecture de fichier (read), la liste des fichiers (list) et l’édition de fichier (edit), ce qui permet d’explorer un projet et de modifier du code
  • Le LLM décide lui-même quel outil appeler et à quel moment à partir de la signature et de la description (docstring) des outils
  • Cette structure est identique au cœur de produits commerciaux comme Claude Code, et une architecture simple suffit à créer un agent de code puissant

Concept de base d’un agent de code

  • Un agent de code est un système conversationnel basé sur un LLM qui reçoit une instruction utilisateur et effectue de vraies opérations sur les fichiers via des appels d’outils
    • L’utilisateur saisit par exemple une demande comme « créer un nouveau fichier contenant une fonction hello world »
    • Le LLM répond avec les appels d’outils nécessaires au format JSON
    • Le programme exécute ensuite l’outil concerné et renvoie le résultat au LLM
  • Le LLM n’accède pas directement au système de fichiers : il se contente de formuler des requêtes, tandis que le travail réel est pris en charge par le code local

Les trois outils nécessaires

  • read_file : lit et renvoie l’intégralité du contenu du fichier indiqué
  • list_files : renvoie la liste des fichiers et dossiers dans un répertoire
  • edit_file : remplace une chaîne existante par une nouvelle, ou crée un nouveau fichier si old_str est vide
    • Si la chaîne à remplacer n’est pas trouvée, l’outil renvoie « old_str not found »
  • Ces trois outils suffisent déjà pour créer, modifier et explorer des fichiers

Enregistrement des outils et intégration au LLM

  • Tous les outils sont enregistrés dans TOOL_REGISTRY avec leur nom et leur fonction, ce qui permet au LLM de les appeler
  • La docstring et la signature de chaque outil sont extraites puis transmises au LLM
  • Le prompt système indique clairement au LLM la liste des outils disponibles et le format d’appel
    • Les appels d’outils sont limités au format 'tool: TOOL_NAME({JSON_ARGS})'
    • Les résultats d’exécution sont renvoyés au LLM sous la forme tool_result(...)

Analyse des appels d’outils et traitement des réponses du LLM

  • Dans la réponse du LLM, le système recherche les lignes commençant par tool: afin d’extraire le nom de l’outil et ses arguments (JSON)
  • Après exécution de chaque outil, le résultat est sérialisé en JSON puis ajouté à l’historique de conversation
  • La fonction execute_llm_call appelle l’API du LLM et renvoie le texte de réponse
  • run_coding_agent_loop reçoit l’entrée utilisateur et maintient la boucle de conversation avec le LLM
    • La boucle interne se répète jusqu’à ce que le LLM ne demande plus d’appel d’outil

Exemple d’exécution et possibilités d’extension

  • Exemple de conversation :
    • « crée le fichier hello.py et implémente hello world » → création d’un nouveau fichier via un appel à edit_file
    • « ajoute à hello.py une fonction qui multiplie deux nombres » → appel à read_file, puis à edit_file
  • Il est possible d’implémenter un assistant de code complet avec environ 200 lignes de code
  • Les produits commerciaux y ajoutent ensuite la gestion des erreurs, les réponses en streaming, la gestion du contexte, des outils supplémentaires et des procédures d’approbation
  • La structure centrale reste la même : une boucle simple où le LLM décide et le code exécute

Mise en pratique et extension

  • Le code source complet tient en environ 200 lignes et peut être étendu en remplaçant le fournisseur de LLM ou en ajoutant de nouveaux outils
  • Même avec une structure simple, il est possible d’implémenter soi-même un prototype puissant d’agent IA de codage

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.