记录一下那天晚上的排查过程。客服 Agent 的工具从 40 个加到 130 个之后,接口直接 400,原文 Invalid 'tools': array too long, maximum 128,删到 120 能通,但模型选错工具的比例明显上升。
刚开始盯着「同义工具描述重复 模型无法区分」,折腾了半个多小时,排掉了。
把日志和配置对完,能解释这个现象的基本就这几处。单次请求的 tools 数组有硬上限。少数情况下是工具太多 模型注意力被稀释。
不容易想到的是,schema 体积把可用上下文挤占。
先统计当前工具数量
python -c "import json;t=json.load(open('tools.json'));print(len(t))"
随后按业务域拆成多个子 Agent 各自挂工具
python -c "print('split tools by domain')"
接着合并同义工具并统一命名
python tools_lint.py --in tools.json --report dup
末了用固定用例集回归工具选择准确率
python eval_tools.py --cases cases/tool_pick.jsonl
怎么算真的好了,看的是同一批现象。工具数降到 60 以内,请求返回 200,工具选择准确率提升,上下文 token 下降三成。
补一句。128 是硬上限,但真正的瓶颈在准确率,工具超过几十个就该分域而不是继续往一个数组里塞。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。
