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,不需要定义AgentTypetools_condition帮你看tool_calls字段自动路由。


五、实战第二步:加入“持久化记忆”(Checkpointer)

这是2026年最实用的升级——支持暂停/恢复/回溯:

python

from langgraph.checkpoint.sqlite import SqliteSaver

创建内存检查点(生产用PostgresSaver)

with SqliteSaver.from_conn_string(“:memory:”) 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 协议》,转载必须注明作者和本文链接
IT爱知识
讨论数量: 1

寻会 Darksword(DS)的技术,合作滴滴 Seeking Top-Tier Technical Experts Proficient in Darksword (DS) Technology

寻某东ios拉码、破控高手,合作滴滴 Reverse Engineering Expert,The iOS API for JD.com, Implement the integration with the CK API.,Place an order, check order status, add an address、 Real-name registration, code scanning/referral, etc., Can bypass risk controls TxG:@wanbaolu9394

5天前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!