2026版LangChain教程,langchain快速入门, Agent智能体rag项目实战
2026年的LangChain已全面演进为以LangGraph为核心的图控编程范式。这份指南将直接带你切入最新版本(v0.8+)的核心。
一、2026年LangChain核心认知(先破后立)
| 旧思维(2024前) | 新思维(2026) |
|---|---|
| 链式调用(Chain) | 图状态机(Graph)——节点是逻辑,边是路由 |
| PromptTemplate拼接 | 消息组(Messages)——系统/用户/AI角色分离 |
| 工具调用靠解析 | 工具节点(ToolNode)——原生并行调用 |
| 记忆用ConversationBuffer | 持久化检查点(Checkpointer)——支持时间旅行回放 |
⚠️ 零基础警告:如果你搜到教程让你
from langchain.chains import LLMChain,请直接关掉——那已经是“化石版本”。
二、环境搭建(5分钟)
bash
创建虚拟环境
python -m venv langchain_env
source langchain_env/bin/activate # Windows用 langchain_env\Scripts\activate
安装核心包(2026推荐版本)
pip install langgraph langchain-core langchain-openai langchain-community
pip install tavily-python # 搜索引擎工具
pip install chromadb # 向量数据库
在项目根目录创建 .env 文件:
text
OPENAI_API_KEY=your_key_here
TAVILY_API_KEY=your_key_here
三、入门第一步:从“单节点聊天”开始
这是最简的LangGraph应用,替代了旧版的ChatOpenAI直接调用:
python
from langgraph.graph import StateGraph, MessagesState, START, END
from langchain_openai import ChatOpenAI
1. 定义状态(就是对话消息列表)
class MyState(MessagesState):
pass # 继承自带messages字段
2. 定义模型
model = ChatOpenAI(model=”gpt-4o-mini”)
3. 定义节点函数
def chat_node(state: MyState):
response = model.invoke(state[“messages”])
return {“messages”: [response]}
4. 构建图
builder = StateGraph(MyState)
builder.add_node(“chat”, chat_node)
builder.add_edge(START, “chat”)
builder.add_edge(“chat”, END)
5. 编译并运行
graph = builder.compile()
result = graph.invoke({“messages”: [(“user”, “你好,请介绍一下自己”)]})
print(result[“messages”][-1].content)
🧠 理解要点:
State是贯穿全图的“黑板”,每个节点往上面写新数据,下游节点能读取所有历史。
四、实战第一步:让Agent拥有“搜索工具”
这里是2026年标准做法——用ToolNode(不再手写@tool装饰器):
python
from langgraph.graph import StateGraph, MessagesState
from langgraph.prebuilt import ToolNode, tools_condition
from langchain_community.tools.tavily_search import TavilySearchResults
1. 创建工具
search_tool = TavilySearchResults(max_results=3)
2. 绑定工具到模型
model_with_tools = ChatOpenAI(model=”gpt-4o-mini”).bind_tools([search_tool])
3. 定义路由节点
def agent(state: MessagesState):
response = model_with_tools.invoke(state[“messages”])
return {“messages”: [response]}
4. 构建图(关键:加入条件边)
builder = StateGraph(MessagesState)
builder.add_node(“agent”, agent)
builder.add_node(“tools”, ToolNode([search_tool])) # 工具节点
builder.add_edge(START, “agent”)
builder.add_conditional_edges(“agent”, tools_condition) # 自动判断是否调工具
builder.add_edge(“tools”, “agent”) # 工具结果返回给agent
graph = builder.compile()
5. 运行——它会自动决定是否搜索
result = graph.invoke({“messages”: [(“user”, “2026年欧洲杯冠军是谁?”)]})
💡 对比旧版:你不需要写
AgentExecutor,不需要定义AgentType,tools_condition帮你看tool_calls字段自动路由。
五、实战第二步:加入“持久化记忆”(Checkpointer)
这是2026年最实用的升级——支持暂停/恢复/回溯:
python
from langgraph.checkpoint.sqlite import SqliteSaver
创建内存检查点(生产用PostgresSaver)
with SqliteSaver.from_conn_string(“
”) as checkpointer:
graph_with_memory = builder.compile(checkpointer=checkpointer)
第一次对话(指定thread_id)
config = {“configurable”: {“thread_id”: “user_123”}}
response1 = graph_with_memory.invoke(
{“messages”: [(“user”, “我叫小明”)]},
config=config
)
第二次对话——它记得你叫小明
response2 = graph_with_memory.invoke(
{“messages”: [(“user”, “我叫什么名字?”)]},
config=config
)
print(response2[“messages”][-1].content) # 输出:你叫小明
🔑 核心概念:
thread_id相当于“会话房间号”,检查点自动保存每轮状态,甚至支持graph.get_state(config)查看历史快照。
六、实战第三步:多节点“人工审核”工作流(模拟真实业务)
这是一个模拟“AI写文章→人工审核→修改或发布”的流程:
python
from typing import Literal
from langgraph.graph import StateGraph, MessagesState
class WorkflowState(MessagesState):
draft: str # 草稿内容
approved: bool # 是否通过
def writer(state: WorkflowState):
AI生成草稿
response = ChatOpenAI(model=”gpt-4o-mini”).invoke(
state[“messages”] + [(“system”, “写一篇100字的产品介绍”)]
)
return {“draft”: response.content}
def reviewer(state: WorkflowState):
模拟人工审核(实际可由用户输入)
这里演示条件路由:如果草稿包含”免费”则通过,否则驳回
if “免费” in state[“draft”]:
return {“approved”: True}
else:
return {“approved”: False}
def publisher(state: WorkflowState):
最终发布
print(f”✅ 已发布:{state[‘draft’]}”)
return {“messages”: [(“system”, “发布成功”)]}
def reviser(state: WorkflowState):
驳回后修改
response = ChatOpenAI(model=”gpt-4o-mini”).invoke([
(“system”, f”用户说:’{state[‘draft’]}’ 不够好,请加入’免费’关键词重新写”)
])
return {“draft”: response.content, “approved”: False} # 重置状态
构建图
builder = StateGraph(WorkflowState)
builder.add_node(“writer”, writer)
builder.add_node(“reviewer”, reviewer)
builder.add_node(“publisher”, publisher)
builder.add_node(“reviser”, reviser)
builder.add_edge(START, “writer”)
builder.add_edge(“writer”, “reviewer”)
条件边:审核通过则发布,否则修改
def route_after_review(state: WorkflowState) -> Literal[“publisher”, “reviser”]:
return “publisher” if state[“approved”] else “reviser”
builder.add_conditional_edges(“reviewer”, route_after_review)
builder.add_edge(“reviser”, “writer”) # 修改后回到writer重新生成
app = builder.compile()
app.invoke({“messages”: []})
🎯 这个案例揭示了LangGraph的本质:它不是“链”,而是“带状态的工作流引擎”。
七、2026年必学的高级特性(简要指引)
| 特性 | 作用 | 何时用 |
|---|---|---|
| SubGraphs | 将一个大图嵌入另一个图 | 多Agent协作时 |
| Streaming | astream_events()实时输出 |
需要打字机效果或进度展示 |
| Human-in-the-loop | interrupt()暂停等待输入 |
敏感操作需人工确认 |
| Persistence | PostgresSaver/RedisSaver |
生产环境会话持久化 |
八、零基础学习路线建议(按周)
| 周次 | 学习内容 | 产出 |
|---|---|---|
| 第1周 | 本文三、四节(单节点+工具调用) | 能做出带搜索功能的对话机器人 |
| 第2周 | 本文五节(Checkpointer记忆) | 多轮对话不丢失上下文 |
| 第3周 | 本文六节(多节点条件路由) | 能设计简单审批工作流 |
| 第4周 | 官方文档 LangGraph Tutorials | 复刻“多Agent辩论”等示例 |
九、避坑指南(2026最新)
| 坑 | 解决 |
|---|---|
| 幻觉:工具调用不生效 | 检查模型是否支持bind_tools(需gpt-4o或claude-3.5+) |
| 状态污染 | 不同thread_id之间状态隔离,务必每次指定config |
| 循环死锁 | 在图边中设置max_iterations限制,或用while循环检测重复 |
| 旧代码报错 | 别用from langchain.chains,全部转向langgraph包 |
本作品采用《CC 协议》,转载必须注明作者和本文链接
关于 LearnKu
推荐文章: