小林补充“线缆连接”后,模型提出查询 A301 的设备指引。演示环境里只有一个查询函数,直接调用似乎没问题;企业服务台上线后,系统可能同时有知识检索、设备台账、工单查询和建单能力。若模型只要写出一个函数名,程序就去寻找同名函数执行,工具边界很快会失控。
本篇给 Agent 增加一份明确的工具注册表。它像服务台的工作台目录:哪些工具存在、能接收哪些参数、当前任务阶段能否使用、调用失败如何返回,都由程序定义。模型只能在这个目录里提出候选,不能临时“发明”工具,也不能通过一段文字跳过参数校验。
文章目录
- 从小林的一次查询看工具契约
- 工具调用的流程图
- 用 Python 实现最小注册表
- 工具结果也需要契约
- 如何验收工具边界
- 总结
从小林的一次查询看工具契约
小林说的是 A301,连接方式是线缆。模型可能给出search_guide(room="A301", connection="线缆");也可能误把房间写成 A302,漏掉连接方式,或在参数中附加一句“同时创建工单”。这些情况不能都交给查询函数自行猜测。注册表应先检查工具名,再验证字段、类型、取值和任务状态,最后才进入业务实现。
| 工具 | 主要用途 | 输入来源 | 允许的副作用 |
|---|---|---|---|
get_room_device | 查会议室设备台账 | 已确认的房间编号 | 只读 |
search_guide | 查适用操作指引 | 可信设备信息与连接方式 | 只读 |
query_my_ticket | 查本人工单状态 | 服务端登录身份及工单号 | 只读 |
create_ticket | 创建普通故障单 | 经员工确认的任务卡 | 写入,需额外审批与 |