众所周知,人工智能和 LLM 是瞬息万变的领域,每周都会有新的概念和想法出现。而 LangChain 这样围绕多种新兴技术创建的抽象概念,其框架设计很难经得起时间考验。
直到看到了下面这个Blog的解释中的这句话:
It uses abstractions on top of abstractions and actually makes your codeneedlessly complicated
Langchain是抽象之上再抽象
在实际应用中随着需求越来越复杂,使用Langchain会遇到下面的场景:
那么问题来了,抽象到底好不好呢?答案是肯定的,用好抽象肯定是好,如果抽象的比较过,对于对于调用使用者来说可能就比较抽象难以理解。
请看下面的具体示例分析:
LangChain 为什么如此抽象
起初,当我们的简单需求与 LangChain 的使用假设相吻合时,LangChain 还能帮上忙。但它的高级抽象很快就让我们的代码变得更加难以理解,维护过程也令人沮丧。当团队用在理解和调试 LangChain 的时间和用在构建功能上的时间一样时,这可不是一个好兆头。
LangChain 的抽象方法所存在的问题,可以通过「将一个英语单词翻译成意大利语」这一微不足道的示例来说明。
下面是一个仅使用 OpenAI 软件包的 Python 示例: