一切从「能做什么」开始
做一个 AI Agent,最令人兴奋的时刻通常是它第一次自己调用工具。但在把工具列表交给模型前,我会先写下来:它能做什么、不能做什么,以及什么时候必须请人确认。
一个有用的 Agent 并不需要一开始就拥有无限权限。相反,权限越清晰,实验往往越容易复现。
先缩小工具集合
先做一个只读的工具箱:搜索知识库、读取公开文档、查询任务状态。等到流程稳定,再考虑创建文件、发送消息这样的写入操作。
# 演示:工具白名单,真实项目还需权限隔离与参数验证
ALLOWED_TOOLS = {"search_docs", "read_article", "list_tasks"}
def can_call(tool_name: str) -> bool:
return tool_name in ALLOWED_TOOLS
assert can_call("search_docs")
assert not can_call("delete_all_files")
小建议:不要把「模型说它会小心」当作安全边界。真正的边界应该由模型之外的代码来执行。
把动作分成三个等级
| 动作等级 | 例子 | 建议 |
|---|---|---|
| 只读 | 查询文档、计算 | 可以自动执行 |
| 可撤销写入 | 新建草稿、更新测试记录 | 记录日志并限制范围 |
| 高风险操作 | 删除数据、发正式邮件 | 人工确认后再执行 |
做好观察,再谈智能
至少保留三类记录:用户要求、模型选择的工具、工具实际返回的结果。遇到异常时,才能定位是规划错误、参数错误,还是工具本身出错。
最后
Agent 的魅力不在于「替你点击了多少次」,而在于在可控范围内完成了多少真正有用的事。从小任务开始,持续验证,比堆一排工具更靠谱。