在AI开发工具的生态系统里,LangChain一直是一个备受争议的产品。一些开发者欣赏其丰富的工具、组件和易于集成的特点,另一些开发者则认为其复杂的抽象和嵌套抽象反而成为了开发的障碍。本文将结合Fabian Both的实际经验,详细探讨为什么他的团队最终决定放弃LangChain,以及如何开发大模型应用。
引言
Fabian Both是Octomind的深度学习工程师,负责使用多个大语言模型的AI Agent来自动创建和修复Playwright中的端到端测试。在使用LangChain一年多的时间里,Fabian的团队经历了从最初的满怀期待到最终弃坑的全过程。本文将详细解读Fabian团队的经历,探讨LangChain的优势与劣势,并提供如何开发大模型应用的建议。
LangChain的最初选择
2023年初,Fabian的团队选择了LangChain作为他们的AI开发工具。LangChain当时凭借其丰富的组件和工具,以及“让开发人员一个下午就能将一个想法变成可以运行的代码”的口号,成为了团队的最佳选择。一开始,一切都很正常,LangChain确实提高了团队的生产力。
面临的挑战
然而,随着产品需求变得越来越复杂,问题也逐渐浮出水面。LangChain从一个生产力工具变成了阻碍生产力的源头。以下是团队面临的主要问题:
1. 不灵活的抽象
人工智能和大语言模型的技术变化非常快,LangChain故意将许多细节做得很抽象,导致使用者无法轻松编写底层代码。在需求较简单的时候,LangChain还能帮上忙,但随着需求变得复杂,高级抽象让代码变得越来越难以理解,维护过程也越来越困难。
2. 嵌套抽象
LangChain经常会在其他抽象之上使用抽象,导致开发人员不得不从嵌套抽象的角度来思考如何正确使用API。这不可避免地会导致开发人员花费大量时间去理解和调试那些跟实际功能代码无关的内部框架代码。
3. 实际开发的影响
在实际开发中,AI应用程序会大量使用AI Agent来执行不同类型的任务。当Fabian的团队想从单一的顺序Agent架构转向更复杂的架构时,LangChain立刻就成为了制约因素。例如,生成Sub-Agent并让它们与原始的Agent互动,或者让多个专业Agent相互交互。LangChain没有提供从外部观察Agent状态的方法,导致团队不得不缩小功能的实现范围来适应LangChain Agent有限的功能。
解决方案:放弃LangChain
最终,Fabian和他的团队决定放弃LangChain,转而使用更加简洁和灵活的构建基本块。以下是他们的策略:
1. 使用基本构建块
核心的组件只有几个:用于大模型通信的客户端、函数或者调用函数的工具、用于RAG的向量数据库和用于追踪、评估等功能的可观测平台。其余的组件要么是这些核心组件的辅助,要么只是完成常规应用程序的任务。
2. 简化代码和外部依赖
通过简洁的底层代码和精心挑选的外部依赖包,保持架构的精简,从而让开发人员可以专注在真正需要解决的问题上。
3. 避免过度抽象
不使用任何框架,尽可能少地使用抽象进行模块化构建,从而让开发过程更快、更流畅。
结论与未来展望
虽然LangChain有很多优点,但对于快速变化的AI领域来说,简洁和灵活性显得尤为重要。放弃LangChain后,Fabian的团队不仅工作更加高效,内耗也减少了。对于AI创业公司来说,创新和迭代的速度是成功的关键。未来,大模型应用的开发应该更多地依赖于基本构建块,而不是过度依赖复杂的框架。
版权归原作者 微凉的衣柜 所有, 如有侵权,请联系我们删除。