LangChain和LangGraph
LangChain是大模型应用开发的主流框架,提供LLM调用、工具集成、RAG、Agent等能力。LangGraph是LangChain的图编排框架,用有向图控制Agent的执行流程。本文档以Python代码为主,覆盖核心API和实战模式。
一、LangChain 基础
1.1 环境安装
1.2 LLM调用(最基础)
1.3 Prompt Template
1.4 LCEL链式调用(核心模式)
LCEL(LangChain Expression Language):用 | 管道符串联组件,prompt | llm | output_parser 形成处理链。
二、Function Tools(工具定义与调用)
Tool是Agent调用外部能力的接口。LangChain支持多种定义方式:@tool装饰器、StructuredTool、Pydantic类。
2.1 @tool 装饰器(最简单)
2.2 StructuredTool(自定义参数)
2.3 绑定工具到LLM
三、MCP(Model Context Protocol)
MCP是Anthropic提出的开放协议,标准化了AI模型与外部工具/数据源的连接方式。LangChain通过 langchain-mcp-adapters 集成MCP Server。
3.1 连接MCP Server
3.2 MCP vs 传统Tool对比
|
对比 |
传统 @tool |
MCP |
|---|---|---|
|
定义方式 |
代码内@tool装饰器 |
独立的MCP Server进程 |
|
复用性 |
耦合在项目代码中 |
多项目共享,跨语言跨平台 |
|
工具发现 |
手动写tools列表 |
Client自动发现Server提供的所有工具 |
|
适用 |
快速原型、简单项目 |
企业级应用、多Agent共享、标准化接口 |
四、RAG(检索增强生成)
4.1 RAG完整流程
RAG = 检索(Retrieve) + 增强(Augment) + 生成(Generate):将知识库文档切分→向量化→存入向量数据库→查询时检索相关文档→拼接进Prompt→LLM生成答案。
4.2 多种检索策略
五、Agent 搭建
5.1 create_react_agent(推荐方式)
ReAct Agent是LangChain最经典的Agent模式:Thought(思考) → Action(调用工具) → Observation(观察结果) → 循环直到得出最终答案。
5.2 Agent + 记忆(Memory)
5.3 Agent + RAG(工具增强)
六、LangGraph 图编排
LangGraph用有向图(StateGraph)精确控制Agent的执行流程。相比简单ReAct,LangGraph支持条件分支、循环、并行、人工审核、子图嵌套等高级控制。
6.1 StateGraph 基础
6.2 条件分支(核心能力)
6.3 人工审批节点(Human-in-the-Loop)
6.4 并行执行(Send)
6.5 子图嵌套
七、架构模式对比
|
模式 |
适用场景 |
LangChain/LangGraph实现 |
|---|---|---|
|
简单链 |
固定步骤:prompt→llm→output |
LCEL管道符 | |
|
Router |
根据意图分发到不同处理链 |
RunnableBranch / conditional_edges |
|
ReAct Agent |
LLM自主决定何时调用工具 |
create_react_agent() |
|
RAG |
基于知识库的问答 |
retriever | format | prompt | llm |
|
多Agent协作 |
多个专业Agent分工合作 |
LangGraph子图 + Send并行 |
|
Human-in-Loop |
需要人工审核/确认的流程 |
interrupt() + Command(resume=...) |
学习路线建议:
- 入门:LLM调用 → Prompt Template → LCEL链式调用
- 工具:@tool定义 → bind_tools → ReAct Agent
- RAG:文档加载→切分→向量化→检索→增强生成
- 进阶:LangGraph StateGraph → 条件分支 → 子图嵌套
- 生产:MCP集成 → Human-in-Loop → 多Agent协作 → 监控追踪