- Octomind utilise des agents IA pour générer et corriger automatiquement des tests de bout en bout dans Playwright.
- Au départ, l’entreprise utilisait le framework LangChain, mais avec le temps, le niveau élevé d’abstraction de LangChain a commencé à poser problème.
Les problèmes de LangChain
- Les abstractions de LangChain étaient utiles au début, mais lorsque les besoins se sont complexifiés, elles ont rendu le code plus difficile à comprendre et à maintenir.
- Comprendre la structure interne de LangChain et la déboguer demandait beaucoup de temps.
- Par exemple, même pour un code qui se contente de traduire un simple mot anglais en italien, utiliser LangChain augmente la complexité.
Le problème des abstractions de LangChain
- LangChain superpose plusieurs couches d’abstraction, ce qui accroît la complexité du code.
- Ces abstractions rendent le code plus difficile à comprendre et à déboguer.
- Par exemple, même pour une tâche simple consistant à récupérer des données JSON depuis une API, utiliser LangChain augmente la complexité.
L’impact sur l’équipe de développement
- Lorsqu’il s’est agi de mettre en œuvre une architecture d’agents complexe, LangChain est devenu un facteur limitant.
- Après avoir retiré LangChain, l’équipe a pu coder librement en fonction de ses besoins.
Faut-il un framework pour développer des applications IA ?
- LangChain a été utile au départ, mais sur le long terme, il aurait sans doute été préférable de développer sans framework.
- La plupart des applications IA peuvent être mises en œuvre avec du code simple et quelques packages externes.
- Tant que les schémas d’usage des agents ne sont pas stabilisés, une approche simple est recommandée.
Développement rapide et concis avec des briques modulaires
- Un framework impose une structure, mais les applications IA n’ont pas encore de schémas d’usage bien établis.
- L’approche par briques modulaires privilégie un code simple de bas niveau et accélère le développement.
- En utilisant des composants modulaires comme les bases de données vectorielles, il est possible de garder une base de code concise et adaptable.
L’avis de GN⁺
- Les limites de LangChain : le niveau élevé d’abstraction de LangChain est utile au début, mais peut devenir un obstacle lorsque les besoins se complexifient.
- Les avantages de l’approche modulaire : une approche par briques modulaires facilite la compréhension et la maintenance du code, tout en accélérant le développement.
- Repenser la nécessité d’un framework : toutes les applications IA n’ont pas besoin d’un framework, et un code simple accompagné de packages externes peut suffire.
- L’importance de la vitesse de développement : dans l’IA, l’expérimentation rapide et le prototypage sont essentiels, et un framework peut les freiner.
- Les futurs schémas d’usage des agents : tant que les schémas d’usage des agents ne sont pas stabilisés, il vaut mieux conserver une approche simple.
2 commentaires
On entendait déjà dire que c’était une architecture vouée à l’échec, et voilà que je le vois aussi sur GeekNews.
Avis Hacker News
J’ai construit mon premier agent LLM commercial en octobre/novembre dernier : le fait de construire l’agent moi-même depuis zéro, sans utiliser LangChain, m’a permis d’obtenir de meilleurs résultats.
La complexité des frameworks LLM : les frameworks LLM comme LangChain ont tendance à introduire une complexité comparable à celle de Java ou de Python.
Comparaison entre LangChain et ChatGPT : LangChain a été créé avant l’arrivée de ChatGPT, mais avec un meilleur modèle conversationnel proposé par ChatGPT, la nécessité de LangChain a diminué.
Débat sur la valeur de LangChain : LangChain a essayé de se placer entre les développeurs et les LLM, sans réellement ajouter de valeur concrète, tout en introduisant des abstractions inutiles.
Bonnes et mauvaises abstractions : une bonne abstraction traite la logique applicative, tandis qu’une mauvaise abstraction masque le travail nécessaire et fait perdre en compréhension.
Les problèmes liés à l’usage des agents : pour la génération de contenu, utiliser des prompts séquentiels est plus simple et plus efficace que d’utiliser des agents.
Présentation du framework Ragged : présentation de Ragged, un connecteur léger permettant de se brancher facilement aux LLM. Il fournit une interface d’intégration unifiée, semblable à un ORM.
Le manque d’utilité de LangChain : l’approche de LangChain est intéressante, mais en pratique il est plus efficace d’utiliser directement les bibliothèques runtime LLM.
Des frameworks d’agents qui évoluent vite : les frameworks d’agents utilisés évoluent rapidement, et même de petits changements de version peuvent casser la configuration actuelle.
Le problème de complexité de LangChain : LangChain est trop complexe pour les cas d’usage simples, et difficile à adapter pour les cas complexes. Dans bien des cas, écrire le code directement est préférable.