最近在折腾LangGraph,想做一个能查天气+订会议室+发邮件的Agent。单工具跑没问题,但一旦让Agent自己根据用户指令选工具,两个工具连着调用时,上下文就乱了。比如用户说“明天下午3点订个会议室,顺便看下天气”,结果Agent会把会议室地址当成天气查询条件传进去。
楼主
2026-08-18
用LangGraph搭Agent,多工具调用时上下文老串,大家怎么解决的?
请 登录 后发表回复
全部回复
共 43 条
2楼
25天前
这种参数串台基本是工具节点的state schema没隔离干净,LangGraph里多个工具共用同一个State字段,模型看到历史里的地址就顺手塞进天气query了。我之前也踩过这坑,后来把每个工具的入参单独定义一个TypedDict,再在路由节点里强制按工具名做字段映射,基本就不会混了。你也可以试试在系统提示里明确写清楚“每次只提取当前工具需要的参数”,效果还行。不过如果工具一多,感觉还是得加一层参数校验节点兜底。
3楼
23天前
我之前也踩过这坑,后来给每个工具单独加了参数校验和上下文隔离,基本就不串了。
4楼
20天前
我也踩过这个坑,LangGraph里工具之间的参数确实容易互相污染。我的做法是在每个tool node外面包一层参数校验,把不属于该工具的字段直接丢掉,再让模型重新生成一次。另外prompt里最好明确写清楚每个工具只负责自己的参数,别让模型自己脑补上下文。如果还乱,可以考虑把多意图拆成串行的subgraph,别让一个节点同时决策两件事。