工具调用安全
工具调用让模型具备执行能力,也带来更高风险。模型生成的工具名和参数不能直接执行,必须经过权限、参数、风险和审计控制。
# 1. 工具调用风险
模型选择工具
-> 生成参数
-> 应用执行工具
-> 影响业务系统
模型可能选错工具、填错参数、被用户诱导或重复执行。
# 2. 工具分级
| 等级 | 示例 | 策略 |
|---|---|---|
| 低风险只读 | 查询公开文档 | 自动执行 |
| 敏感只读 | 查询订单、客户信息 | 权限过滤 |
| 低风险写入 | 创建草稿 | 用户确认 |
| 高风险写入 | 发邮件、提交工单 | 二次确认 |
| 不可逆操作 | 删除数据、支付、生产变更 | 人工审批 |
# 3. 参数安全
必须校验:
- 类型。
- 必填字段。
- 字符长度。
- 枚举值。
- 数值范围。
- 对象归属。
- 当前用户权限。
对 SQL、文件路径、URL、命令等参数要特别谨慎。
# 4. 幂等与回滚
工具可能被重复调用。
建议:
- 使用 idempotency_key。
- 记录执行状态。
- 重复请求直接返回已有结果。
- 支持撤销或回滚。
- 高风险操作先创建草稿而不是直接执行。
# 5. 审计字段
记录:
- 用户身份。
- 工具名称。
- 参数摘要。
- 权限判断结果。
- 模型请求 ID。
- 执行结果。
- 人工确认记录。
- 时间和 trace_id。
# 6. 常见反模式
| 反模式 | 风险 |
|---|---|
| 模型直接拼 SQL | 注入和越权 |
| 工具权限过大 | 一个错误影响巨大 |
| 不做二次确认 | 高风险动作误执行 |
| 不记录日志 | 无法追责 |
| 工具返回全量数据 | 敏感数据进入上下文 |
# 7. Tips 快问快答
Q:工具调用是不是 Agent 最危险的部分?
A:通常是。因为它从生成文本变成影响外部系统,必须严格治理。
Q:工具描述能不能写权限规则?
A:可以辅助模型理解,但真正权限必须由后端系统判断。
Q:如何降低误操作风险?
A:工具最小权限、参数校验、幂等设计、二次确认和完整审计。
上次更新: 2026/06/25, 17:53:09