2026 最火 AI Agent 智能体开发实战:用 LangChain + LangGraph 从零构建企业级多智能体协作系统
🔥 2026 最火 AI Agent 智能体开发实战:用 LangChain + LangGraph 从零构建企业级多智能体协作系统

**摘要**:2026 年 WAIC 现场,AI Agent(智能体)成为绝对主角——从"能说"到"会干",AI 正在迈入真正的智能协作时代。本文将从零开始,带你手把手构建一个支持任务拆解、工具调用、多 Agent 协同的企业级智能体系统,全部基于 LangChain + LangGraph 最新框架实现。
---
一、为什么 2026 年是 AI Agent 元年?
2026 年 7 月 17 日,上海 WAIC 2026 现场释放出一个清晰的信号:AI 正从"能聊"迈向"会干"。Gartner 预测,到 2026 年底,40% 的企业应用将内置 AI Agent,远高于前几年的个位数水平。
与传统的 Chatbot 不同,AI Agent(智能体)能够自主拆解任务、调用工具、规划执行路径,最终交付完整的业务成果。印奇在 WAIC 主论坛演讲中指出:"2026 年模型能力正在跨越关键临界点,AI 已从只能连续执行数秒任务,进阶到能够独立工作数十小时。"
那么,对于开发者来说,如何快速搭建一个生产级的 AI Agent 系统?
本文选择业界最主流的 LangChain + LangGraph 技术栈,带你实战构建一个多 Agent 协作系统——它能够自动处理客户工单,包括查询订单、退换货、生成报告等复杂任务。
---
二、技术选型:LangChain + LangGraph 为何成为黄金组合?
在 2026 年的 AI Agent 开发领域,LangChain 和 LangGraph 已经成为事实标准:
| 组件 | 职责 | 2026 年最新特性 |
|------|------|----------------|
| LangChain | 模型调用、Prompt 管理、工具集成 | 原生支持 GPT-5.6 / DeepSeek-V4 / Claude Fable-5 |
| LangGraph | 工作流编排、状态管理、多 Agent 协作 | 支持 Graph Recursion、Human-in-the-Loop Checkpoint |
| LangSmith | 可观测性、调试、评估 | 支持 Agent 全链路 Trace |
💡 **核心优势**:LangGraph 将 Agent 工作流建模为有向图(DAG),每个节点是一个 Agent 或工具调用,清晰可控,非常适合生产环境。
---
三、环境准备:5 分钟搭建开发环境
首先,安装必要的依赖包:
# 创建项目目录
mkdir ai-agent-demo && cd ai-agent-demo
# 使用 Python 3.11+(2026 年推荐版本)
python3 -m venv .venv
source .venv/bin/activate
# 安装核心依赖
pip install langchain>=0.5.0 langgraph>=0.6.0 langchain-openai
pip install langchain-community chromadb tiktoken
pip install python-dotenv httpx
# 安装开发工具
pip install black isort mypy
配置环境变量(`.env` 文件):
# 选择你偏好的模型(2026 年主流选项)
OPENAI_API_KEY=sk-xxx # 支持 GPT-5.6 Sol/Terra
DEEPSEEK_API_KEY=sk-xxx # DeepSeek-V4 正式版
ANTHROPIC_API_KEY=sk-xxx # Claude Fable-5
---
四、核心实战:构建多智能体客服系统
我们将构建一个三级 Agent 协作系统:
1. Router Agent(路由智能体):判断用户意图,分派任务
2. Tool Agent(工具智能体):调用内部 API / 数据库
3. Report Agent(报告智能体):汇总结果,生成结构化报告
4.1 定义工具集合
首先,定义 Agent 可以调用的工具:
from langchain.tools import tool
from datetime import datetime
from typing import Dict, Optional
import httpx
@tool
def query_order(order_id: str) -> Dict:
"""根据订单 ID 查询订单状态和详情"""
# 模拟数据库查询
orders_db = {
"ORD-20260701": {
"status": "已发货", "amount": 299.00,
"tracking": "SF1234567890", "items": "AI编程鼠标 x1"
},
"ORD-20260715": {
"status": "已签收", "amount": 1599.00,
"tracking": "SF9876543210", "items": "机械键盘 x1 + 显示器支架 x1"
},
}
return orders_db.get(order_id, {"error": "订单未找到"})
@tool
def check_refund_policy(order_id: str) -> str:
"""查询退款退货政策"""
return (
"7天无理由退换货(未拆封)\n"
"15天内质量问题包退包换\n"
"30天内有偿维修\n"
"注:生鲜/定制产品不支持无理由退货"
)
@tool
def get_weather(city: str) -> str:
"""查询指定城市今日天气"""
# 2026 年集成天气 API 示例
return f"{city} 今日天气:晴,28-34°C,东南风3级,适宜出行。"
@tool
def search_product(keyword: str, limit: int = 3) -> str:
"""搜索商品信息"""
products = {
"机械键盘": [
"RK100 三模机械键盘 299元",
"Keychron Q1 Pro 899元",
"罗技 MX Mechanical 1499元",
],
"显示器": [
"Dell U2724D 27寸 4K 2599元",
"小米 27寸 4K 1599元",
],
}
for k, items in products.items():
if k in keyword:
return "\n".join(items[:limit])
return f"未找到'{keyword}'相关商品"
# 工具注册
tools = [query_order, check_refund_policy, get_weather, search_product]
4.2 构建 Router Agent(路由层)
路由 Agent 负责分析用户消息并决定交由哪个子 Agent 处理:
from langchain_openai import ChatOpenAI
from langgraph.graph import StateGraph, MessagesState
from langgraph.prebuilt import ToolNode
from langgraph.checkpoint import MemorySaver
# 初始化 LLM(2026 年推荐 GPT-5.6 Terra 或 DeepSeek-V4)
llm = ChatOpenAI(
model="gpt-5.6-terra", # 或 "deepseek-v4"
temperature=0.1,
max_tokens=4096,
)
# 路由系统提示词
ROUTER_SYSTEM_PROMPT = """你是一个智能路由 Agent。分析用户输入,将其归类为以下之一:
- order: 订单查询、退换货、物流相关问题
- product: 商品搜索、推荐、对比
- general: 通用问答、闲聊
- weather: 天气查询
仅输出分类名称,不要额外解释。"""
def router_node(state: MessagesState) -> MessagesState:
"""路由节点:判断用户意图"""
messages = [
{"role": "system", "content": ROUTER_SYSTEM_PROMPT},
*state["messages"]
]
response = llm.invoke(messages)
category = response.content.strip().lower()
# 将分类信息注入 state
state["route"] = category
return state
4.3 构建 Tool Agent(执行层)
Tool Agent 根据路由结果调用相应工具:
# 绑定工具到 LLM
tool_llm = llm.bind_tools(tools)
TOOL_AGENT_PROMPT = """你是一个专业的客服工具调用 Agent。
根据用户问题,选择正确的工具并按顺序调用。
调用完成后,用简洁的中文总结结果给用户。
注意:一次只调用一个工具,等待结果后再决定下一步。"""
def tool_agent_node(state: MessagesState) -> MessagesState:
"""工具执行节点"""
route = state.get("route", "general")
# 根据路由选择执行策略
if route == "weather":
# 天气查询直接走工具
messages = [
{"role": "system", "content": TOOL_AGENT_PROMPT},
*state["messages"]
]
result = tool_llm.invoke(messages)
elif route == "order":
messages = [
{"role": "system", "content": TOOL_AGENT_PROMPT},
*state["messages"]
]
result = tool_llm.invoke(messages)
elif route == "product":
messages = [
{"role": "system", "content": TOOL_AGENT_PROMPT},
*state["messages"]
]
result = tool_llm.invoke(messages)
else:
# 通用问答直接回复
result = llm.invoke(state["messages"])
state["messages"].append(result)
return state
# 创建工具调用节点
tool_executor = ToolNode(tools)
4.4 构建图工作流(LangGraph 核心)
这是整个系统的灵魂——用 LangGraph 组装所有节点:
from langgraph.graph import END
def build_agent_graph() -> StateGraph:
"""构建多 Agent 协作图"""
# 1. 定义状态图
graph = StateGraph(MessagesState)
# 2. 注册节点
graph.add_node("router", router_node)
graph.add_node("tool_agent", tool_agent_node)
graph.add_node("tools", tool_executor)
# 3. 定义条件边:根据路由结果分流
def route_decision(state: MessagesState) -> str:
route = state.get("route", "general")
if route in ("order", "product", "weather"):
return "tool_agent"
return "general"
# 4. 构建连接
graph.set_entry_point("router")
graph.add_conditional_edges(
"router",
route_decision,
{
"tool_agent": "tool_agent",
"general": END,
}
)
# 5. 工具调用循环:如果 Agent 决定调用工具,进入工具节点
graph.add_edge("tool_agent", "tools")
# 工具返回后回到 tool_agent,形成循环
graph.add_edge("tools", "tool_agent")
# 6. 编译图
return graph.compile(
checkpointer=MemorySaver(), # 支持记忆和状态恢复
)
# 构建并测试
agent_app = build_agent_graph()
4.5 运行测试
# 测试 1:订单查询
config = {"configurable": {"thread_id": "test-001"}}
result = agent_app.invoke(
{"messages": [{"role": "user", "content": "帮我查一下 ORD-20260701 的订单状态"}]},
config
)
print(result["messages"][-1].content)
# 输出:查到订单 ORD-20260701 状态为【已发货】,含商品 AI编程鼠标 x1,金额 299.00 元。
# 快递单号:SF1234567890,您可以在这两天注意查收哦~
# 测试 2:商品搜索
config2 = {"configurable": {"thread_id": "test-002"}}
result = agent_app.invoke(
{"messages": [{"role": "user", "content": "有什么好用的机械键盘推荐?"}]},
config2
)
print(result["messages"][-1].content)
# 输出:为您推荐以下几款机械键盘:
# 1. RK100 三模机械键盘 299元(入门性价比之选)
# 2. Keychron Q1 Pro 899元(客制化用户最爱)
# 3. 罗技 MX Mechanical 1499元(办公旗舰款)
# 测试 3:天气查询
config3 = {"configurable": {"thread_id": "test-003"}}
result = agent_app.invoke(
{"messages": [{"role": "user", "content": "上海今天天气怎么样?"}]},
config3
)
print(result["messages"][-1].content)
# 输出:上海今日天气:晴,28-34°C,东南风3级,适宜出行。建议做好防晒哦!
---
五、进阶技巧:Human-in-the-Loop 与 Graph Recursion
生产环境中,我们需要引入人工审核和循环限制,防止 Agent 死循环:
from langgraph.checkpoint import MemorySaver
from langgraph.types import Command
class HumanInputNode:
"""人工介入节点:在关键操作前暂停,等待人类确认"""
def __call__(self, state: MessagesState) -> Command:
# 检查是否需要人工审核
last_msg = state["messages"][-1].content if state["messages"] else ""
if any(kw in last_msg for kw in ["退款", "取消订单", "投诉"]):
return Command(
update={"messages": [{"role": "assistant",
"content": "⚠️ 该操作需要人工审核,已创建工单 #TK-20260720-001"}]},
goto="human_review"
)
return Command(goto="tool_agent")
# 添加人工审核节点到图
graph.add_node("human_review", human_input_node)
# 限制递归深度(防止死循环)
MAX_RECURSION = 10
def limited_recursion(state: MessagesState) -> str:
"""递归次数限制"""
recursion_count = state.get("recursion_count", 0) + 1
state["recursion_count"] = recursion_count
if recursion_count > MAX_RECURSION:
return "max_depth"
return "continue"
---
六、生产部署建议
将 Agent 部署为 FastAPI 服务:
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
app = FastAPI(title="AI Agent Service 2026")
class ChatRequest(BaseModel):
message: str
session_id: str = "default"
class ChatResponse(BaseModel):
reply: str
session_id: str
@app.post("/api/chat", response_model=ChatResponse)
async def chat(req: ChatRequest):
"""多 Agent 对话接口"""
config = {"configurable": {"thread_id": req.session_id}}
try:
result = agent_app.invoke(
{"messages": [{"role": "user", "content": req.message}]},
config
)
return ChatResponse(
reply=result["messages"][-1].content,
session_id=req.session_id
)
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@app.get("/health")
async def health():
return {"status": "ok", "timestamp": datetime.now().isoformat()}
# 启动命令:uvicorn main:app --host 0.0.0.0 --port 8000
---
七、总结与展望
本文从 WAIC 2026 的 AI Agent 热潮出发,基于 LangChain + LangGraph 技术栈,从零构建了一个支持路由分发、工具调用、多 Agent 协作的企业级智能体系统。
🔑 关键要点
| 维度 | 要点 |
|------|------|
| 路由设计 | 使用 Router Agent 实现意图分类和任务分发 |
| 工具集成 | 通过 `@tool` 装饰器快速接入任意 API / 数据库 |
| 工作流编排 | LangGraph 有向图模型,清晰可控 |
| 安全机制 | Human-in-the-Loop + 递归深度限制 |
| 部署方案 | FastAPI 容器化部署,支持水平扩展 |
🚀 2026 下半年趋势预测
• **多 Agent 协作集群**将成为企业默认架构模式
• **Agent 安全框架**(权限隔离、审计日志)会变成刚需
• **Vibe Coding + Agent** 让非程序员也能构建 AI 工作流
• **物理 Agent**(具身智能)将在仓储、制造场景大规模试用
📌 **文章配套代码已上传 GitHub**:关注「人间凡尔赛」获取完整项目源码
---
本文发布于 2026 年 7 月 20 日,内容基于 WAIC 2026 最新趋势与开源技术栈编写。
更多推荐



所有评论(0)