首页 n8n教程 LangChain Agent 能多工具联用吗?调度如何控制?

LangChain Agent 能多工具联用吗?调度如何控制?

作者: Dr.n8n 更新时间:2025-12-11 12:00:41 分类:n8n教程

当你的 LangChain Agent 只会“单打独斗”,业务就卡在半路了

上周一位做跨境电商的朋友找我救火:“Dr.n8n,我的客服 Agent 能查订单,也能查物流,但用户问‘我买的蓝牙耳机到哪了?订单号是#12345’,它居然只会回‘请提供订单号’或‘请提供运单号’——根本不会自己串联!”这正是典型痛点:工具能用,但不会协同;功能齐全,调度却一团乱麻。

Agent 多工具联用不是“加法”,而是“交响乐团”

很多人以为给 Agent 加一堆工具(Tools)就行,就像给厨房塞满锅碗瓢盆。但真正的大厨,知道什么时候该炒、什么时候该炖、火候怎么控——这就是“调度控制”的本质。

我在帮某母婴品牌搭建退货处理 Agent 时发现:光有“查库存”“生成退款单”“发邮件通知”三个工具没用,关键是让 Agent 懂得“先查库存→再判断是否可退→最后才发邮件”。否则,用户收到“退款已处理”的邮件,仓库却显示无货,那就社死了。

调度控制三板斧:Plan → Route → Retry

LangChain 的 AgentExecutor 不是傻瓜式流水线,而是一个带“大脑”的指挥官。它的调度逻辑分三层:

  1. Plan(规划):根据用户问题,决定调用哪些工具、按什么顺序。类比点外卖:你下单后,系统得先派单给骑手,再通知商家出餐,而不是同时喊“骑手快跑!”和“老板炒菜!”
  2. Route(路由):动态选择工具。比如用户说“帮我订明天去上海的机票”,Agent 得识别“城市=上海”“时间=明天”,然后路由到“航班查询API”,而不是错误调用“酒店预订工具”。
  3. Retry & Fallback(重试与兜底):工具调用失败怎么办?是重试三次?还是换备用工具?或是直接回复“亲,系统开小差了,稍后再试?”——这层策略必须显式定义,否则 Agent 一出错就“装死”。

实战:用 Python 写一个“智能客服调度器”

下面这段代码,展示如何让 Agent 自动串联“查订单”和“查物流”两个工具,并加入重试机制:

from langchain.agents import AgentExecutor, Tool
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI

# 定义工具
def lookup_order(order_id: str) -> str:
    # 模拟查订单数据库
    return f"Order {order_id} status: shipped, tracking: SF123456789CN"

def track_package(tracking_id: str) -> str:
    # 模拟调用快递API
    return f"Package {tracking_id} is in transit, next stop: Shanghai Hub"

# 注册工具
tools = [
    Tool(name="OrderLookup", func=lookup_order, description="根据订单号查状态和运单号"),
    Tool(name="PackageTracker", func=track_package, description="根据运单号查物流轨迹")
]

# 创建带重试的 Agent
prompt = ChatPromptTemplate.from_messages([...]) # 略去提示词模板
llm = ChatOpenAI(model="gpt-4-turbo")
agent = create_react_agent(llm, tools, prompt)

# 关键:设置最大迭代次数和错误处理
agent_executor = AgentExecutor(
    agent=agent,
    tools=tools,
    max_iterations=5,          # 最多尝试5次工具调用
    handle_parsing_errors=True # 解析错误时返回友好提示
)

# 用户提问
result = agent_executor.invoke({"input": "订单#12345现在到哪了?"})
print(result["output"])

运行结果会是:您的订单#12345已发货,运单号SF123456789CN,目前正运往上海中转站。 ——这才是真正的“多工具协同”。

别让 Agent 变成“工具僵尸”,调度才是灵魂

总结一下:LangChain Agent 当然支持多工具联用,但成败关键在于“调度控制”。没有合理的 Plan/Route/Retry 策略,再多的工具也只是摆设。记住:工具是四肢,调度是大脑。四肢再强壮,大脑不灵光,照样走不了路。

你在搭建多工具 Agent 时踩过哪些调度坑?是在工具选择上翻车,还是在重试机制上栽跟头?欢迎在评论区分享你的“血泪史”,我们一起把 Agent 训练成真正的“六边形战士”!