🔗 LangChain / LangGraph

1. 概述

LangChain 是当前最流行的LLM应用开发框架,由 Harrison Chase 于2022年创建。 它提供了一套标准的抽象层(Chain、Agent、Tool、Memory),让开发者可以快速构建基于LLM的应用。 LangGraph 是 LangChain 生态中的图编排引擎,专注于构建有状态的、可控的Agent工作流。

📦 LangChain 生态全景

组件定位核心能力
langchain-core核心抽象BaseChatModel、BaseTool、Runnable协议
langchain高级封装Chain、Agent、Retrieval等高级组合
LangGraph图编排有状态图、条件分支、人机协同
LangSmith可观测平台调试、测试、监控、评估
LCEL表达式语言声明式组合Runnable,管道式编程

2. LangChain 核心概念

2.1 Chain(链)

Chain 是 LangChain 最基础的组合单元,将多个处理步骤串联成一个pipeline。 每个步骤的输入来自前一步骤的输出,形成一条处理流水线。

🔗 常见Chain类型

  • LLMChain:最基础的链,Prompt + LLM + 输出处理
  • SequentialChain:顺序执行多个Chain,支持多输入多输出
  • RouterChain:根据输入动态选择下游Chain,实现条件路由
  • RetrievalQA:检索增强的问答链,结合向量搜索与LLM生成
  • ConversationChain:带记忆的对话链,维护会话上下文

2.2 Agent(智能体)

Agent 是 LangChain 的核心亮点——它让LLM不再只是被动回答问题,而是能够自主决策使用哪些工具、按什么顺序执行。 Agent = LLM(大脑) + Tools(手脚) + 决策循环(思考→行动→观察)。

💡 LangChain Agent 类型
  • ReAct Agent:经典的 Thought → Action → Observation 循环
  • OpenAI Functions Agent:基于 Function Calling 的Agent,最稳定可靠
  • Structured Chat Agent:支持多参数工具的对话式Agent
  • Tool Calling Agent:LangChain 最新推荐的统一Agent接口

2.3 Tool(工具)

Tool 是 Agent 与外部世界交互的接口。LangChain 提供了丰富的内置工具,也支持自定义工具。

🔧 内置工具分类

类别示例工具用途
搜索类GoogleSerperAPIWrapper, TavilySearch联网搜索实时信息
计算类WolframAlpha, PythonREPL数学计算、代码执行
数据类SQLDatabase, PandasDataFrame数据库查询、数据分析
文件类FileSystem, DocumentLoaders文件读写、文档处理
API类requests, OpenAPI spec tools调用外部REST API

2.4 Memory(记忆)

Memory 让 Agent 能够记住之前的对话和上下文。LangChain 提供了多种记忆策略:

  • ConversationBufferMemory:完整保存对话历史(最简单但Token开销大)
  • ConversationSummaryMemory:自动生成对话摘要(节省Token)
  • ConversationBufferWindowMemory:滑动窗口,只保留最近N轮对话
  • VectorStoreRetrieverMemory:基于向量搜索的长时记忆

3. LangGraph:有状态图编排

LangGraph 是 LangChain 推出的下一代Agent编排框架。与传统的线性Chain不同, LangGraph 将Agent工作流建模为有向图(Graph),每个节点是一个处理步骤,边定义了流转逻辑。

🕸️ LangGraph 核心概念

概念说明
StateGraph有状态图,维护一个贯穿所有节点的共享State对象
Node图中的一个处理步骤,接受State并返回State更新
Edge节点之间的连接,可配置条件路由(Conditional Edge)
Checkpointer状态持久化机制,支持断点续传和人机协同
Send动态并行:根据State动态创建并行分支
🎯 LangGraph 解决的核心问题
  • 循环控制:Agent需要在思考-行动-观察之间循环,传统DAG(有向无环图)无法表达
  • 状态持久化:长时运行的任务可以暂停、恢复,支持人机协同审核节点
  • 动态路由:基于LLM的输出决定下一步走哪个分支,而非硬编码
  • 并行执行:将任务拆分为多个并行分支,最后汇聚结果

4. 优势与局限

✅ 优势

  • 最大生态:最丰富的第三方集成(200+模型、100+工具、50+向量库)
  • 灵活抽象:从底层Runnable到高层Agent,覆盖所有抽象层次
  • 成熟稳定:2年+的社区积累,文档丰富,案例众多
  • LangGraph加持:有状态图编排能力强,适合复杂Agent工作流
  • 多语言:支持Python和JavaScript/TypeScript
⚠️ 局限
  • 抽象层过多:封装层次深,出现问题时难以定位根因
  • 版本迭代快:API变化频繁,升级迁移成本高
  • 学习曲线陡峭:概念众多(Chain/LCEL/Runnable/Graph),新手容易迷失
  • 调试困难:层层封装后,错误信息不够直观
  • 性能开销:抽象层带来额外的序列化和调用开销

5. 适用场景

✅ 适合

  • 需要对接大量第三方服务的应用
  • 多步推理与复杂工作流
  • RAG检索增强生成系统
  • 需要状态持久化和人机协同的Agent
  • 团队已有Python/TS技术栈

❌ 不适合

  • 追求极致简单(直接用API即可)
  • 需要快速原型验证
  • 对框架侵入性敏感的项目
  • 严格要求稳定的API(版本迭代太快)
  • 多Agent对话式协作(用AutoGen/CrewAI更好)