本地 Agent 接了两个说明很像的工具,问库存却去查订单:我把工具说明重写了一遍

19 阅读3分钟

图:Slashme / Wikimedia Commons

“我问的是那批纸箱还剩多少,它回了我一串订单号。”

下午仓库的小林在群里发了张截图。办公室这个本地 Agent 是我搭的,接了几个内部工具,能查库存、查订单、查发货进度。小林问的是库存,Agent 却调用了查订单的工具,把最近几张采购单列了出来,最后还一本正经地总结“该物料近期有三笔采购”。

我把那次调用的记录翻出来看。Agent 选工具,靠的是每个工具的名字和说明。当初接工具的时候我图省事,查库存的说明写的是“查询物料信息”,查订单的写的是“查询物料相关订单信息”,两句话只差几个字。小林的问题里有“那批”,模型大概觉得“那批”更像订单,就选错了。

我又翻了最近两周的调用记录,按问题和实际调用的工具人工对了一遍,一百三十多次调用里有十一次选错,基本都在库存和订单之间来回错。

小林问:“是不是模型太笨了,换个大点的就好?”我说先别急着换,先把它看的说明书写清楚。分三件事改。

图:U.S. Department of Agriculture / Wikimedia Commons

第一件,重写每个工具的说明。每条说明写三部分:这个工具回答什么问题、什么时候该用、什么时候不该用。查库存的写成“回答某个物料现在还剩多少、放在哪个库位;问还有多少、够不够时用;问采购、下单、到货时间时不要用”。查订单的反过来写。说明里各举两个真实问法当例子。

第二件,合并重复的工具。原来还有一个“查询物料详情”,和查库存返回的内容大半重合,我把它并进了查库存,工具从五个减到四个。要选的东西少了,选错的机会也少了。

第三件,加一套选工具的测试题。我从调用记录里挑了四十个真实问题,人工标好每个问题应该调用哪个工具,其中库存和订单容易混的有十八个。以后每次改工具说明或者换模型,先跑一遍这四十题,看工具选对没有,再上线。

验收结果:改之前,这四十题里工具选对的是三十一题,容易混的十八题里错了八题;改之后四十题选对三十八题,剩下两题是问题本身就含糊,比如“那批货怎么样了”,人看了也不知道问的是库存还是到货。对这种问题,我让 Agent 先反问一句“你想问库存还是订单进度”,不再自己猜。上线后一周的真实调用里,选错工具只出现了一次。

小林后来说,Agent 反问那一句一开始觉得多余,用了几天反而觉得踏实。

图:U.S. Department of Agriculture / Wikimedia Commons

这件事让我意识到,工具说明是写给模型看的,跟写给新同事看是一个道理,越具体越不容易误会。你们给 Agent 接工具时,说明是怎么写的?有没有遇到过选错工具的情况,欢迎在评论区分享。

工具说明的写法和测试题的整理方式,我放在 evafang.com 上了。