Peut-être que dès le jour de sa naissance, LangChain était destiné à être un produit aux réputations polarisantes.
Ceux qui sont optimistes à propos de LangChain apprécient ses riches outils et composants ainsi que sa facilité d'intégration. Ceux qui ne sont pas optimistes à propos de LangChain pensent qu'il est voué à l'échec - à cette époque où la technologie évolue si rapidement, il n'est tout simplement pas réalisable. construisez tout avec LangChain.
Une certaine exagération :
"Dans mon travail de consultant, je consacre 70 % de mon énergie à convaincre les gens de ne pas utiliser langchain ou lamaindex. Cela résout 90 % de leurs problèmes."
Récemment, un article sur les plaintes de LangChain est redevenu au centre d'une discussion animée :
L'auteur, Fabian Both, est ingénieur en apprentissage profond au sein de l'outil de test d'IA Octomind. L'équipe Octomind utilise un agent IA avec plusieurs LLM pour créer et corriger automatiquement des tests de bout en bout dans Playwright.
C'est une histoire qui a duré plus d'un an, commençant par le choix de LangChain, puis entrant dans la phase de lutte tenace avec LangChain. En 2024, ils ont finalement décidé de dire au revoir à LangChain.
Voyons ce qu'ils ont vécu :
"LangChain était le meilleur choix"
Nous avons utilisé LangChain en production pendant plus de 12 mois, en commençant début 2023, puis en le supprimant en 2024.
En 2023, LangChain semble être notre meilleur choix. Il dispose d’une gamme impressionnante de composants et d’outils et sa popularité est montée en flèche. LangChain a promis de « permettre aux développeurs de passer d'une idée à un code exécutable en un après-midi », mais à mesure que nos besoins devenaient de plus en plus complexes, des problèmes ont commencé à faire surface.
LangChain devient une source de résistance plutôt qu'une source de productivité.
Alors que la rigidité de LangChain commençait à se manifester, nous avons commencé à approfondir les composants internes de LangChain pour améliorer le comportement sous-jacent du système. Cependant, comme LangChain rend intentionnellement de nombreux détails abstraits, nous ne pouvons pas facilement écrire le code sous-jacent requis.
Comme nous le savons tous, l'IA et le LLM sont des domaines en évolution rapide, avec de nouveaux concepts et idées émergeant chaque semaine. Cependant, la conception du cadre de LangChain, un concept abstrait créé autour de plusieurs technologies émergentes, résiste difficilement à l'épreuve du temps.
Pourquoi LangChain est si abstrait
Au départ, LangChain peut également nous aider lorsque nos besoins simples correspondent aux hypothèses d'utilisation de LangChain. Mais ses abstractions de haut niveau ont rapidement rendu notre code plus difficile à comprendre et frustrant à maintenir. Ce n’est pas bon signe lorsque l’équipe passe autant de temps à comprendre et à déboguer LangChain qu’à créer des fonctionnalités.
Le problème de l’approche abstraite de LangChain peut être illustré par l’exemple trivial de « traduire un mot anglais en italien ».
Voici un exemple Python utilisant uniquement le package OpenAI :
Il s'agit d'un code simple et facile à comprendre contenant une seule classe et un seul appel de fonction. Le reste est du code Python standard.
Comparez ceci à la version de LangChain :
Le code est à peu près le même, mais c'est là que s'arrête la similitude.
Nous avons maintenant trois classes et quatre appels de fonction. Mais ce qui est inquiétant, c'est que LangChain introduit trois nouveaux concepts abstraits :
Modèle d'invite : fournit une invite pour LLM
Analyseur de sortie : traite la sortie de LLM
Chain : LangChain La "syntaxe LCEL" ; couvre l'opérateur |
Tout ce que LangChain fait, c'est augmenter la complexité du code sans aucun avantage évident.
Ce type de code peut convenir aux premiers prototypes. Mais pour une utilisation en production, chaque composant doit être raisonnablement compris afin qu'il ne tombe pas en panne de manière inattendue dans les conditions d'utilisation réelles. Vous devez respecter les structures de données données et concevoir votre application autour de ces abstractions.
Regardons une autre comparaison abstraite en Python, cette fois en obtenant JSON à partir d'une API.
Utilisez le package http intégré :
Utilisez le package de requêtes :
La différence est évidente. Voilà à quoi ressemble une bonne abstraction.
Bien sûr, ce sont des exemples triviaux. Mais ce que j'essaie de dire, c'est que les bonnes abstractions simplifient le code et réduisent la charge cognitive requise pour le comprendre.
LangChain essaie de vous faciliter la vie en masquant les détails et en faisant plus avec moins de code. Mais si cela se fait au détriment de la simplicité et de la flexibilité, alors l’abstraction perd de sa valeur.
LangChain hat auch die Angewohnheit, Abstraktionen zusätzlich zu anderen Abstraktionen zu verwenden, sodass Sie oft in verschachtelten Abstraktionen denken müssen, um die API richtig zu verwenden. Dies führt unweigerlich dazu, dass Sie große Stapelspuren verstehen und internen Framework-Code debuggen, den Sie nicht geschrieben haben, anstatt neue Funktionen zu implementieren.
Auswirkungen von LangChain auf Entwicklungsteams
Im Allgemeinen nutzen Anwendungen in hohem Maße KI-Agenten, um verschiedene Arten von Aufgaben auszuführen, wie z. B. das Erkennen von Testfällen, das Generieren von Playwright-Tests und automatische Korrekturen.
Wenn wir von einer einzelnen Sequential Agent-Architektur zu einer komplexeren Architektur wechseln möchten, wird LangChain zu einem limitierenden Faktor. Generieren Sie beispielsweise Subagenten und lassen Sie sie mit dem ursprünglichen Agenten interagieren. Oder mehrere professionelle Agenten interagieren miteinander.
In einem anderen Beispiel müssen wir die Verfügbarkeit von Tools, auf die der Agent zugreifen kann, basierend auf der Geschäftslogik und der Ausgabe des LLM dynamisch ändern. Allerdings bietet LangChain keine Methode zur Beobachtung des Agent-Status von außen, was dazu führte, dass wir den Umfang der Implementierung reduzieren mussten, um uns an die eingeschränkte Funktionalität von LangChain Agent anzupassen.
Sobald wir es entfernen, müssen wir unsere Bedürfnisse nicht mehr in eine für LangChain geeignete Lösung übersetzen. Wir müssen nur Code schreiben.
Welches Framework sollten Sie verwenden, wenn Sie LangChain nicht verwenden? Vielleicht brauchen Sie überhaupt kein Framework.
Brauchen wir wirklich ein Framework zum Erstellen von KI-Anwendungen?
LangChain stellte uns in den frühen Tagen LLM-Funktionalität zur Verfügung, sodass wir uns auf die Entwicklung von Anwendungen konzentrieren konnten. Aber im Nachhinein betrachtet wären wir ohne den Rahmen langfristig besser dran gewesen.
LangChain Die lange Liste der Komponenten erweckt den Eindruck, dass die Erstellung einer LLM-basierten Anwendung sehr komplex ist. Aber die für die meisten Anwendungen benötigten Kernkomponenten sind normalerweise wie folgt:
Client für LLM-Kommunikation
Funktionen/Tools für Funktionsaufrufe
Vektordatenbank für RAG
Observability-Plattform für Tracking, Bewertung, und mehr.
Der Agentenbereich entwickelt sich rasant weiter und bringt aufregende Möglichkeiten und interessante Anwendungsfälle mit sich, aber unser Rat: Halten Sie es vorerst einfach, bis sich die Nutzungsmuster der Agenten verfestigt haben. Ein Großteil der Entwicklungsarbeit im Bereich der künstlichen Intelligenz wird durch Experimente und Prototyping vorangetrieben.
Das Obige ist die persönliche Erfahrung von Fabian Both im letzten Jahr, aber LangChain ist nicht ganz unbegründet.
Ein anderer Entwickler, Tim Valishev, sagte, dass er noch eine Weile bei LangChain bleiben wird:
Ich mag Langsmith wirklich:
Visuelle Protokollierung sofort einsatzbereit
Prompt-Spielplatz, Sie können Eingabeaufforderungen sofort beheben aus den Protokollen und sehen Sie, wie es unter den gleichen Eingaben funktioniert
Erstellen Sie ganz einfach Testdatensätze direkt aus den Protokollen, mit der Option, einfache Testsätze in Eingabeaufforderungen mit einem Klick (oder im Code) durchgängig auszuführen Testen)
Testergebnisverlauf
Prompte Versionskontrolle
und es bietet gute Unterstützung für das Streaming der gesamten Kette, es dauert einige Zeit, dies manuell zu implementieren.
Darüber hinaus reicht es nicht aus, sich ausschließlich auf APIs zu verlassen. Die APIs jedes großen Modellherstellers sind unterschiedlich und ein „nahtloser Wechsel“ ist nicht möglich.
Was meint ihr?
Originallink: https://www.octomind.dev/blog/why-we-no-longer-use-langchain-for-building-our-ai-agents
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!