8 points par GN⁺ 2025-04-09 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • Qodo est une équipe qui développe des outils d’assistance au codage par IA depuis l’époque de GPT-3, et a récemment choisi le framework LangGraph afin de créer un agent de codage plus flexible et dynamique
  • Cet article explique comment LangGraph a permis de concilier à la fois la flexibilité du flux de développement et les exigences de qualité du code

Passage d’une approche structurelle initiale à LangGraph

  • Aux débuts, avec GPT-3, l’accent était mis sur des tâches structurées avec un flux clair, comme la génération de tests, la revue de code et les travaux d’amélioration
  • Depuis Claude Sonnet 3.5, les performances des LLM se sont nettement améliorées, rendant possible la conception d’agents plus dynamiques
  • Jusqu’alors, seuls des workflows standardisés étaient envisageables, mais l’objectif est devenu de développer un système capable de répondre avec souplesse aux demandes des utilisateurs grâce à ces nouveaux modèles
  • C’est en cherchant un framework permettant d’expérimenter et de valider rapidement que l’équipe a choisi LangGraph, avec la possibilité de passer d’une simple preuve de concept à un véritable produit

Concilier flexibilité et règles explicites

  • LangGraph fournit une structure en graphe fondée sur une machine à états (state machine)
  • Chaque nœud prend en charge une étape individuelle du workflow (collecte du contexte, planification, exécution, validation, etc.), et les arêtes (edges) définissent les règles de transition entre les étapes
  • Selon la densité des arêtes, le workflow devient plus flexible ou plus structuré
    • Graphe peu dense → flux fixe et prévisible
    • Graphe dense → flux dynamique et possibilité de choisir parmi divers parcours
  • L’un des atouts de LangGraph est de permettre de réajuster facilement le niveau de structuration du workflow à mesure que les modèles progressent
  • Le flux principal suit la structure suivante :
    • collecte du contexte → planification du travail → exécution du code → validation du résultat → répétition en cas d’échec

Une interface concise et intuitive

  • LangGraph permet de définir les workflows de façon déclarative, si bien que le code se lit presque comme de la documentation
  • Le fonctionnement repose sur la déclaration d’un graphe d’état, puis sur l’ajout de nœuds et d’arêtes
  • Les flux conditionnels sont aussi faciles à implémenter (par exemple : revenir au nœud d’exécution en cas d’échec de la validation)
  • Contrairement aux abstractions complexes de LangChain, LangGraph expose clairement la logique, ce qui offre une bonne expérience développeur

Réutilisabilité entre différents workflows

  • Grâce à sa structure fondée sur les nœuds, les composants sont faciles à réutiliser
    • Exemple : les nœuds de collecte du contexte et de validation sont réemployés dans la plupart des flux
  • Même lors de la création de nouveaux flux spécialisés (comme le TDD), il est possible d’étendre rapidement le système en reconnectant les nœuds existants

Gestion d’état intégrée

  • LangGraph fournit nativement des fonctions de persistance de l’état, ce qui rend l’implémentation de la persistance très simple
    • Exemple : la fonctionnalité de checkpointing via Postgres peut être configurée en quelques lignes de code
  • Il est possible de sauvegarder l’état complet, y compris le contexte collecté, les plans et les résultats d’exécution, avec prise en charge des branches et du rollback
  • D’autres options, comme SQLite ou l’in-memory, peuvent aussi être remplacées facilement

Points à améliorer

  • Comme il s’agit d’un framework en évolution rapide, la documentation peut être incomplète ou mise à jour avec retard
    • Heureusement, les échanges avec les mainteneurs via Slack ont été rapides et très réactifs
  • Les tests de systèmes LLM non déterministes restent un défi
    • Dans le cas d’agents interagissant avec un IDE, il est difficile de mettre en place un environnement de test automatisé
    • Certaines fonctions d’IDE sont très difficiles à mocker, ce qui a imposé de s’appuyer sur des tests manuels et a ralenti les itérations
  • Les frameworks plus matures proposent souvent une infrastructure de test et de mocking, et l’équipe espère voir LangGraph évoluer dans cette direction

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.