LangChain
核对日期:2026-05-09。
10.9 上线验收补充
| 验收项 | 通过标准 |
|---|---|
| 依赖锁定 | LangChain、provider SDK、集成包版本固定 |
| Provider 差异 | 关键任务在目标模型上分别跑回归 |
| Tool 网关 | 写工具不由 LangChain 直接调用底层生产 API |
| RAG 权限 | 检索前 ACL 生效,跨租户用例为 0 |
| Trace | callback/trace 脱敏并可关联业务 run |
| 复杂流程 | 出现恢复、审批、循环时迁移到 LangGraph |
1. 定义与边界
LangChain 是用于构建 LLM 应用和 Agent 的开源框架,提供模型、prompt、tool、retriever、agent 和集成生态。当前 LangChain 的高层 Agent 能力通常构建在 LangGraph 之上;复杂、持久化、可恢复流程应直接考虑 LangGraph。
2. 官方能力、社区能力、实验能力和营销说法
| 类型 | 内容 |
|---|---|
| 官方能力 | Chat model abstraction、tools、structured output、agents、retrieval、middleware、LangSmith 集成 |
| 社区能力 | 大量 provider/integration、document loader、toolkit |
| 实验/快速变化 | 部分集成包、模板、旧版 chain API 迁移 |
| 营销说法 | “LangChain 自动解决 RAG/Agent 可靠性”不成立 |
3. 核心机制
LangChain 的价值在于标准化模型、工具和上下文组件:
4. 架构与工程实现
适合场景:
| 场景 | 设计 |
|---|---|
| 快速接入多个模型 | 使用统一 chat model 接口 |
| 工具调用 Agent 原型 | create_agent + tools |
| RAG 应用 | retriever、document loader、vector store 集成 |
| 需要观测 | 接入 LangSmith 或自建 Trace |
简化示例:
from langchain.agents import create_agent
def get_weather(city: str) -> str:
return f"{city}: 20C"
agent = create_agent(
model="openai:<official-model-id>",
tools=[get_weather],
system_prompt="Use tools when current external data is required."
)
agent.invoke({"messages": [{"role": "user", "content": "杭州天气如何?"}]})
5. 生产实践
- 将 provider wrapper 版本固定,避免集成包升级改变行为。
- 对工具 schema、prompt、retriever 参数做版本化。
- 复杂状态和人类在环流程优先迁移到 LangGraph。
- 不要直接使用社区 loader 处理敏感数据,先评估权限和依赖安全。
- 对每条 chain/agent 记录输入输出、检索文档、工具调用和模型版本。
6. 常见反模式
| 反模式 | 后果 |
|---|---|
| 复制示例拼出生产系统 | 缺少权限、观测和回归测试 |
| 过度依赖抽象层 | 无法处理 provider 特有错误 |
| RAG 只调默认参数 | 召回、重排和引用质量不稳定 |
| Agent 工具过多 | 模型选择困难,误调用上升 |
7. 评测方法
对 LangChain 应用评测工具调用准确率、检索召回、引用准确率、结构化输出解析率、provider fallback 成功率和端到端任务成功率。对多 provider 应用要分 provider 统计。
8. 安全与治理
LangChain 集成生态很大,依赖供应链风险更高。生产环境应锁定版本、审查第三方工具权限、隔离凭证、脱敏日志,并防止外部文档通过 RAG 覆盖系统指令。
9. 权威资料
- LangChain overview: https://docs.langchain.com/oss/python/langchain/overview
- LangChain agents: https://docs.langchain.com/oss/python/langchain/agents
- LangChain tools: https://docs.langchain.com/oss/python/langchain/tools
- LangChain retrieval: https://docs.langchain.com/oss/python/langchain/retrieval
- LangChain GitHub: https://github.com/langchain-ai/langchain
10. 二次精修:集成框架的边界
10.1 当前官方能力
| 能力 | 说明 | 适合 |
|---|---|---|
| Standard model interface | 统一调用不同模型 provider | 多模型接入和切换 |
| Agents | 模型驱动工具调用循环 | 中等复杂度任务 |
| Tools | 函数、检索器、外部 API 封装 | 快速接入企业能力 |
| Middleware / runtime | 在调用链中插入策略和控制 | 日志、重试、安全过滤 |
| LangGraph 底座 | 复杂 Agent 编排转到 LangGraph | 状态化和持久化流程 |
10.2 适用场景
| 场景 | 推荐原因 |
|---|---|
| 需要大量 provider、向量库、工具 connector | 生态覆盖广 |
| 快速验证 Agent/RAG 应用 | 模板和集成多 |
| 团队需要统一模型接口 | 降低 provider 切换成本 |
| 简单工具调用和检索增强 | 代码量少,上手快 |
10.3 不适用场景
- 长事务、复杂状态恢复和审批流程,优先用 LangGraph 或业务工作流。
- 极端低延迟、极端可控的单模型服务,直接用 provider SDK 可能更简单。
- 对供应链和依赖面极度敏感的高安全系统,需要收敛集成数量。
10.4 生产架构
10.5 集成边界
| 问题 | LangChain 能做 | 仍需自建 |
|---|---|---|
| 模型调用 | 标准接口、工具绑定 | 供应商配额、成本策略 |
| 工具封装 | tool abstraction | 鉴权、审批、幂等、审计 |
| RAG | retriever、splitter、reranker 集成 | 数据权限、文档治理 |
| 观测 | 可接 LangSmith 或自定义 callbacks | 企业日志脱敏和保留 |
10.6 评测与回归
| 维度 | 用例 |
|---|---|
| Provider 差异 | 同一任务在不同模型上结构化输出是否稳定 |
| Tool 调用 | 相似工具、多参数、缺参数、工具失败 |
| RAG | 过期文档、冲突文档、权限文档、低召回 |
| 安全 | 注入文档、恶意工具返回、敏感外发 |
10.7 生产实践
- 锁定 LangChain、provider SDK、向量库和工具包版本。
- 对每个社区集成做依赖和权限审查,不因“官方集成”默认可信。
- 将高风险工具放在业务工具网关之后,不让 Agent 直接访问底层 API。
- 对 callbacks/trace 做脱敏,避免把 prompt 和工具返回变成敏感日志仓库。
- 复杂流程迁移到 LangGraph,LangChain 保持在模型/工具/RAG 集成层。
10.8 迁移策略
| 来源 | 迁移到 LangChain 的重点 |
|---|---|
| 直接 provider SDK | 先抽象 model 和 tool,不一次迁移业务逻辑 |
| 自研 RAG | 先替换 retriever/reranker 组件,保留 ACL |
| 低代码平台 | 把关键路径代码化,平台只保留运营配置 |
| LangChain 旧版本 | 建回归集后逐步升级,关注 agent API 和集成变更 |
核对日期:2026-05-09。