完整题目
在AI Agent系统中,如何设计和实现可供Agent调用的外部工具(如搜索、计算器、数据库接口)?请说明工具定义格式、注册机制与调用安全控制。
本文目录
1. 工具定义
每个工具声明稳定名称、用途、JSON Schema 参数、返回 Schema、权限等级、副作用、超时和幂等要求。描述应清楚区分相似工具,并限制枚举、范围和额外字段。Schema 校验只能保证结构,不能证明业务语义或授权正确。
2. 注册与发现
注册表保存工具实现、版本、Schema、所有者和策略。启动时可以通过显式配置或装饰器注册,但生产环境不应无条件扫描并暴露任意函数。给模型的工具列表应根据用户、租户、任务和当前授权动态裁剪。
3. 执行链路
模型产生 tool call 后,服务端依次做:解析参数、Schema 与业务规则校验、身份和资源权限检查、风险分级、幂等与预算检查、执行、结果脱敏和结构化回传。模型不能绕过服务端直接访问数据库或网络。
计算器等工具不得对模型文本直接使用 eval。应采用语法解析器和运算符白名单,或在受限进程/容器内执行,并限制 CPU、内存、文件、网络和运行时间。数据库工具优先使用参数化查询和只读账号。
4. 副作用与失败处理
- 只读、可逆和高风险写操作采用不同策略;高风险调用先 dry-run,再由用户或授权系统确认精确目标。
- 超时、限流、权限拒绝和业务失败返回可区分的错误码,重试必须有上限、退避和幂等保护。
- 审计日志记录经脱敏的调用者、工具版本、参数摘要、结果状态和耗时。
:模型只负责提出调用意图,工具注册表、权限策略和隔离执行层决定它能否以及如何执行。