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

![AI Agent 智能体开发](cover.jpg)

**摘要**: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 最新趋势与开源技术栈编写。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐