最近在做一个客服场景的Agent,接了查询订单、退款、查物流三个tool,用的GPT-4o加function calling。发现一个问题:用户说“我东西还没到”,它有时候调查订单,有时候调查物流,偶尔还给我调退款……我在system prompt里写了每个工具的描述和使用场景,但感觉模型还是分不清边界。试过few-shot示例,效果有一点但不稳定。想问下大家实际项目中是怎么让Agent稳定选对工具的?是加一层意图分类,还是在tool description上做文章?真诚求教。
楼主
3天前
用LangChain做Agent时,工具调用总是选错,大家怎么优化prompt的?
请 登录 后发表回复
全部回复
共 1 条
2楼
2天前
我遇到过类似的情况,工具描述写得好不好影响真的很大。你试试把每个tool的description写得更“排他”一点,比如查订单就明确写“仅用于查询订单状态和详情,不涉及物流轨迹”,查物流那边写“仅用于查询配送进度和物流轨迹”,把边界互相写死。另外“东西还没到”这种确实模糊,我一般在tool前面加一层轻量意图判断,用规则或者小模型先分流,命中不了再交给主Agent,稳定性提升挺明显的。few-shot也别只在system里堆,可以针对容易混的case单独做示例,比如“还没到”统一映射到物流而不是订单。还有个细节是工具参数设计,能不能让模型在调用前被迫输出一个简短理由,这样它自己会更谨慎,你也能从日志里看出它为什么选错。GPT-4o的function calling本身挺强,但工具一多就容易飘,减少同时暴露的tool数量或者做分组路由也值得试试。