原文链接: https://docs.langchain.com/oss/python/langchain/philosophy
LangChain 的存在目标,是在 尽可能方便开发者开始使用 LLM 构建应用 的同时,依然保持足够的灵活性和可用于生产环境的可靠性。
LangChain 的设计由几条核心信念驱动:
- LLM 是一种强大且全新的技术。
- 当 LLM 与外部数据源结合使用时,会变得更强大。
- LLM 将重塑未来应用的形态,未来的应用会越来越具“智能体(agentic)”特征。
- 我们目前仍处在这种变革的早期阶段。
- 虽然做一个“原型级”的智能体应用很容易,但要做出足够可靠、可真正投入生产的智能体依然非常困难。
基于此,LangChain 有两个核心关注点:
-
让开发者可以方便地使用“最好的模型”。
不同提供商暴露出的 API 各不相同,包括模型参数、消息格式等。标准化这些模型输入与输出是 LangChain 的核心目标之一,这样开发者就可以轻松切换到最新、最先进的模型,而不被某个厂商锁定。
-
让开发者更容易用模型来编排复杂流程,并与其他数据和计算进行交互。
模型不应仅仅用于 文本生成,它还应该被用来编排更复杂的流程,这些流程会与其他数据源交互。LangChain 让你可以轻松定义供 LLM 动态调用的工具,同时也帮助解析和访问非结构化数据。
由于这一领域变化极快,LangChain 本身也在持续演进。下面是一个简要时间线,展示了 LangChain 如何随着 “用 LLM 构建应用” 这一概念的演变而变化:
在 ChatGPT 推出前一个月,LangChain 以 Python 包的形式发布。它最初包含两个主要组件:
- LLM 抽象层
- “Chains”:为常见用例预先设定的一系列计算步骤。例如:RAG(检索增强生成)包含“先检索,再生成”两个步骤。
“LangChain” 这个名字来源于 “Language”(语言/语言模型) 和 “Chains”(链式调用)。
第一批通用智能体被加入 LangChain。
这些通用智能体基于 ReAct 论文(ReAct = Reasoning and Acting,推理与行动)。它们使用 LLM 生成代表工具调用的 JSON,然后解析这段 JSON 来决定实际要调用哪些工具。
OpenAI 发布 “Chat Completion” API。
在此之前,模型只接受字符串并返回一个字符串;在 ChatCompletions API 中,模型演进为接受“消息列表”并返回一条消息。其他模型提供商很快跟进,LangChain 也随之更新以支持基于消息列表的交互方式。
LangChain 发布 JavaScript 版本。
LLM 和智能体正在改变应用的构建方式,而 JavaScript 则是应用开发者最常用的语言之一。
LangChain Inc. 公司围绕开源的 LangChain 项目成立。
其主要目标是“让智能体无处不在”。团队意识到,LangChain 虽然是关键一环(它让使用 LLM 入门变得简单),但要做到这一点,还需要更多配套组件。
OpenAI 在 API 中发布 “function calling” 功能。
这使得 API 可以显式生成表示工具调用的 payload。其他模型提供商也陆续支持,LangChain 更新后,把这种方式作为调用工具的首选方案(取代之前解析 JSON 的方式)。
LangSmith 以闭源平台形式发布,由 LangChain Inc. 提供,用于可观测性与评估(evals)。
构建智能体的最大难题是“可靠性”,LangSmith 正是为解决这一需求而生,它提供了可观测性和评估能力。LangChain 也更新以便无缝集成 LangSmith。
LangChain 发布 0.1.0,这是其首个非 0.0.x 版本。
随着行业从“原型阶段”走向“生产阶段”,LangChain 也更加重视稳定性。
LangGraph 以开源库形式发布。
最初的 LangChain 有两个重点:LLM 抽象层,以及用于快速上手常见应用的高级接口;但它缺少一个“低层级的编排层”,让开发者可以精细控制智能体的执行流程。LangGraph 正是为此而生。
在构建 LangGraph 时,团队基于构建 LangChain 所获得的经验,引入了他们发现必需的功能:流式传输、持久执行、短期记忆、人在回路等。
LangChain 拥有超过 700 个集成。
这些集成从核心 LangChain 包中拆分出来,核心集成迁移到各自独立的包,其他集成则迁移到 langchain-community。
对于任何超出“单次 LLM 调用”的 AI 应用,LangGraph 成为推荐的构建方式。
当开发者尝试提升应用的可靠性时,他们需要比高层接口更细粒度的控制。LangGraph 提供了这种低层级的灵活性。
在 LangChain 中,大多数 chains 和 agents 被标记为已弃用,并提供了迁移到 LangGraph 的指南。
但在 LangGraph 中仍保留了一个高层抽象:智能体抽象。它基于低层的 LangGraph 构建,并且与 LangChain 中最初的 ReAct 智能体接口保持一致。
模型开始支持文件、图像、视频等多种输入。
我们据此更新了 langchain-core 的消息格式,以便开发者可以用统一的方式指定这些多模态输入。
LangChain 发布 1.0 版本,带来两项重大变化:
-
对
langchain中所有 chains 和 agents 完全重构。
所有原有的 chains 和 agents 被统一为一个高层抽象:基于 LangGraph 构建的智能体抽象。
这个抽象最初在 LangGraph 中创建,如今被迁移回 LangChain。
对于仍然使用旧版 LangChain chains/agents 且暂时不想升级的用户(仍然推荐升级),可以通过安装langchain-classic继续使用旧版。 -
标准化消息内容格式。
模型 API 从“返回简单字符串内容的消息”逐步演进为返回更复杂的输出类型——推理块、引用信息、服务端工具调用等。
LangChain 也相应演进其消息格式,以在不同提供商之间对这些复杂结构进行标准化。
本文档由 LangChain 官方文档翻译而来,原文见 Philosophy。