LangChain 架构演进与功能扩展
1. LangChain 的演变
v0.1 与 v0.2 的主要差异
v0.1 是初始版本,包含基本功能。从 0.1 到 0.2 完成的关键特性包括:
- 流式支持增强:通过事件流 API 提供更好的流式支持。
- 工具调用标准化:Tools Calling 得到标准化支持。
- 输出结构接口:标准化的输出结构接口。
- @chain 装饰器:更容易创建 RunnableLambdas。
- 异步支持:在 Python 中对许多核心抽象的更好异步支持。
- 元数据访问:在 AIMessage 中包含响应元数据,方便访问底层模型的原始输出。
- 可视化:提供可视化的 runnables 或 langgraph 应用的工具。
- 互操作性:大多数提供商之间的聊天消息历史记录互操作性。
- 集成包:超过 20 个 Python 流行集成的合作伙伴包。
LangChain 的未来发展
- 持续致力于 LangGraph 的开发(向 LangGraph 迁移),增强代理架构的能力。
- 重新审视 vectorstores 抽象,以提高可用性和可靠性。
- 改进文档和版本化文档。
- 计划在 7 月至 9 月之间发布 0.3.0 版本,全面支持 Pydantic 2,并停止对 Pydantic 1 的支持。
注意:自 0.2.0 版本起,langchain 不再依赖 langchain-community。langchain-community 将依赖于 langchain-core 和 langchain。
具体变化
从 0.2.0 版开始,langchain 必须与集成无关。这意味着,langchain 中的代码默认情况下不应实例化任何特定的聊天模型、LLMs、嵌入模型、vectorstores 等;相反,用户需要明确指定这些模型。
以下这些 API 从 0.2 版本起要显式的传递 LLM:
langchain.natbot.NatBotChain.from_default已被移除,推荐使用from_llm类方法。
@tool 修饰符的变化
0.2 前运行结果会显示工具签名:my_tool: (x: str) -> str - Some description.
0.2 后的运行结果简化为:Some description.
LangChain 生态系统定位
LangChain 简化了 LLM 应用程序生命周期的每个阶段:
- 开发:使用 LangChain 的开源构建块、组件和第三方集成构建您的应用程序。使用 LangGraph 构建具有一流流媒体和人机交互支持的状态代理。
- 生产化:使用 LangSmith 检查、监控和评估您的链,以便您可以不断优化和自信地部署。
- 部署:使用 LangServe 将您的 LangChain 链部署为 REST API。
该框架目前将自身定位为覆盖 LLM 应用开发全生命周期的框架。包含开发、部署、工程化三个大方向:
- 开发阶段:主要是 python 和 javascript 两种语言的 SDK,配合开放的社区组件模板,来便捷的实现跨 LLM 的 APP 开发。
- 工程化或产品化阶段:主要是以 LangSmith 为代表的产品,集监控、playground、评估等功能于一身。
- 部署阶段:主要是 LangServe 产品,基于 fastapi 封装的 LLM API 服务器。


