- Le point le plus surprenant dans le développement de Sketch, un assistant de programmation IA, est qu’un agent LLM équipé d’outils fonctionne de façon très puissante avec une simple boucle d’environ 9 lignes
- Le flux de base consiste à envoyer l’entrée utilisateur au LLM puis, si la réponse contient un appel d’outil, à exécuter celui-ci et à réinjecter le résultat dans la conversation pour la décision suivante
- Avec seulement le prompt système, l’historique de conversation et la description des outils, le LLM peut appeler des outils comme
bashen respectant un schéma défini - Avec Claude 3.7 Sonnet et
bashuniquement, Sketch peut effectuer des opérations git, une première passe sur un merge, corriger des erreurs du vérificateur de types, mais montre aussi des comportements frustrants comme vouloir ignorer les tests - À mesure qu’on ajoute des outils supplémentaires adaptés au workflow des développeurs et des boucles d’agents temporaires, on peut lui confier davantage de tâches quotidiennes qui étaient jusque-là difficiles à traiter avec l’automatisation classique
Une boucle d’agent proche de 9 lignes
- Sketch est un assistant de programmation IA en développement depuis quelques mois
- La boucle principale reçoit l’entrée utilisateur, vérifie le résultat de l’appel au LLM, puis, s’il y a un appel d’outil, injecte le résultat d’exécution dans le message suivant ; sinon, elle redemande une entrée à l’utilisateur
- L’implémentation complète nécessite du code supplémentaire, mais l’idée centrale se rapproche d’une boucle de 9 lignes
- Script complet : agent_loop.py
- La fonction
llm()sert à envoyer à l’API du LLM le prompt système, la conversation jusque-là et le message suivant - L’usage des outils repose sur le fait que le LLM renvoie une sortie conforme à un schéma précis
- Dans le script complet, le prompt système et le prompt de description des outils indiquent au LLM qu’il peut accéder à
bash
- Dans le script complet, le prompt système et le prompt de description des outils indiquent au LLM qu’il peut accéder à
Possibilités et limites observées avec Sketch
- Avec un seul outil générique,
bash, les modèles actuels — en particulier Claude 3.7 Sonnet — peuvent déjà prendre en charge plusieurs tâches de développement- Au lieu de chercher puis copier-coller des opérations git complexes, on peut les demander à Sketch
- Sketch peut effectuer une première tentative de résolution d’un git merge avant un traitement manuel
- On peut aussi lui confier la correction une par une des erreurs du vérificateur de types apparues après un changement de types
- Avec un prompt adapté, la boucle d’agent fonctionne de manière continue
- Si l’outil nécessaire n’est pas installé, elle l’installe
- Si les options en ligne de commande de
grepdiffèrent selon l’environnement, elle s’adapte à ces différences
- Les limites sont également nettes
- Quand les tests ne passent pas, elle peut adopter un comportement consistant à vouloir simplement les ignorer
- Sketch n’utilise pas uniquement
bash; il recourt aussi à quelques outils supplémentaires pour améliorer la qualité, la vitesse d’itération et le workflow des développeurs - Les outils qui permettent au LLM d’éditer du texte avec précision sont plus difficiles qu’on pourrait le croire
- Voir un LLM peiner sur une commande
seden une ligne montre que les éditeurs visuels ont des atouts différents des éditeurs ligne par ligne
- Voir un LLM peiner sur une commande
- Les boucles d’agents peuvent être davantage appliquées à des tâches d’automatisation quotidiennes trop spécifiques pour des outils généralistes, mais trop complexes ou instables pour l’automatisation traditionnelle
- Faire le lien entre une stack trace et un commit git est un exemple de travail dont le LLM peut bien assurer une première passe
- Il pourrait apparaître davantage de boucles d’agents LLM temporaires et sur mesure dans le répertoire
bin/
Aucun commentaire pour le moment.