设计理念
LangChain 基于以下核心信念驱动:
- 大语言模型 (LLM) 是强大的新技术。
- 当你将 LLM 与外部数据源结合时,它们会变得更加强大。
- LLM 将改变未来应用程序的形态。具体来说,未来的应用程序将越来越具有智能体特性。
- 这种转变仍处于非常早期的阶段。
- 虽然构建这些智能体应用程序的原型很容易,但构建足够可靠以投入生产的智能体仍然非常困难。
在 LangChain,我们有两个核心关注点:
我们希望让开发者能够使用最好的模型进行构建。
不同的提供商暴露不同的 API,具有不同的模型参数和不同的消息格式。标准化这些模型输入和输出是核心关注点,使开发者能够轻松切换到最新的最先进模型,避免供应商锁定。
我们希望让使用模型来编排与其他数据和计算交互的更复杂流程变得容易。
模型不应该只用于文本生成 - 它们还应该用于编排与其他数据交互的更复杂流程。LangChain 使定义 LLM 可以动态使用的工具变得容易,并帮助解析和访问非结构化数据。
历史
鉴于该领域持续变化的速度,LangChain 也随着时间的推移而演变。以下是 LangChain 多年来如何变化的简要时间线,随着使用 LLM 进行构建的含义而演变:
v0.0.1
在 ChatGPT 发布前一个月,LangChain 作为 Python 包发布。它由两个主要组件组成:
- LLM 抽象
- "链",即用于常见用例的预定义计算步骤。例如 - RAG:运行检索步骤,然后运行生成步骤。
LangChain 这个名字来自 "Language"(语言模型)和 "Chains"(链)。
第一个通用智能体被添加到 LangChain。
这些通用智能体基于 ReAct 论文(ReAct 代表推理和行动)。它们使用 LLM 生成表示工具调用的 JSON,然后解析该 JSON 以确定要调用哪些工具。
OpenAI 发布了 'Chat Completion' API。
以前,模型接收字符串并返回字符串。在 ChatCompletions API 中,它们演变为接收消息列表并返回消息。其他模型提供商也纷纷效仿,LangChain 也更新为使用消息列表。
LangChain 发布了 JavaScript 版本。
LLM 和智能体将改变应用程序的构建方式,而 JavaScript 是应用程序开发者的语言。
LangChain Inc. 作为公司成立,围绕开源 LangChain 项目。
主要目标是"让智能代理无处不在"。团队意识到,虽然 LangChain 是关键部分(LangChain 使 LLM 入门变得简单),但还需要其他组件。
OpenAI 在其 API 中发布了 'function calling'。
这允许 API 显式生成表示工具调用的有效载荷。其他模型提供商也纷纷效仿,LangChain 更新为使用此方法作为工具调用的首选方法(而不是解析 JSON)。
LangSmith 发布,作为 LangChain Inc. 的闭源平台,提供可观测性和评估功能。
构建智能体的主要问题是使它们可靠,而 LangSmith 提供可观测性和评估,就是为了解决这个需求。LangChain 更新为与 LangSmith 无缝集成。
v0.1.0
LangChain 发布 0.1.0,这是其第一个非 0.0.x 版本。
行业从原型成熟到生产,因此 LangChain 增加了对稳定性的关注。
LangGraph 作为开源库发布。
原始的 LangChain 有两个重点:LLM 抽象和用于入门常见应用程序的高级接口;然而,它缺少一个低级编排层,允许开发者控制其智能体的确切流程。于是:LangGraph 诞生了。
在构建 LangGraph 时,我们从构建 LangChain 时学到的经验中汲取教训,并添加了我们发现需要的功能:流式输出、持久执行、短期记忆、人机协作等。
LangChain 拥有超过 700 个集成。
集成从核心 LangChain 包中分离出来,要么移入自己的独立包(对于核心集成),要么移入 @langchain/community。
LangGraph 成为构建任何超过单个 LLM 调用的 AI 应用程序的首选方式。
随着开发者试图提高其应用程序的可靠性,他们需要比高级接口提供的更多控制。LangGraph 提供了这种低级灵活性。LangChain 中的大多数链和智能体都被标记为已弃用,并附有如何将它们迁移到 LangGraph 的指南。在 LangGraph 中仍然创建了一个高级抽象:智能体抽象。它构建在低级 LangGraph 之上,并具有与 LangChain 的 ReAct 智能体相同的接口。
模型 API 变得更加多模态。
模型开始接受文件、图像、视频等。我们相应地更新了 @langchain/core 消息格式,允许开发者以标准方式指定这些多模态输入。
v1.0.0
LangChain 发布 1.0,有两个主要变化:
-
对
langchain中的所有链和智能体进行了完全改版。所有链和智能体现在都被替换为仅一个高级抽象:基于 LangGraph 构建的智能体抽象。这是最初在 LangGraph 中创建的高级抽象,只是移到了 LangChain。对于仍在使用旧 LangChain 链/智能体且不想升级的用户(注意:我们建议你升级),你可以通过安装
@langchain/classic包继续使用旧 LangChain。 -
标准消息内容格式:模型 API 从返回具有简单内容字符串的消息演变为更复杂的输出类型 - 推理块、引用、服务器端工具调用等。LangChain 演变其消息格式以跨提供商标准化这些。