Function Calling 是 AI Agent 从“会聊天”走向“能做事”的关键能力。模型通过函数调用访问天气、数据库、Git、Jenkins、飞书、Kubernetes 等外部工具,才能真正进入业务流程。
但企业场景下,工具调用不是简单暴露几个 API。它必须包含权限、参数校验、审计、错误处理和人工确认机制。
1. 基本工作流程
1 | 用户请求 |
其中最容易被忽略的是“权限判断”和“审计日志”。没有这两层,Function Calling 很难进入生产环境。
2. 工具定义
一个好的工具定义至少包含:
1 | { |
工具描述要清晰,参数要明确,边界要写出来。否则模型会误选工具或生成错误参数。
3. 参数提取与校验
3.1 显式参数
1 | 用户:部署 myapp 到 production,3 个副本 |
3.2 隐式参数
1 | 用户:查下北京天气 |
3.3 参数校验
1 | def validate_params(schema, params): |
校验不只是类型检查,还应包含:
- 枚举值;
- 路径白名单;
- 数值范围;
- 字符串长度;
- 是否包含敏感信息;
- 是否需要人工确认。
4. 权限分级
建议把工具分成四类:
| 类型 | 示例 | 策略 |
|---|---|---|
| 只读工具 | 搜索、查询天气、读取状态 | 可自动执行 |
| 低风险写工具 | 创建草稿、生成报告 | 限定目录/范围 |
| 高风险写工具 | 发消息、部署、删除文件 | 必须确认 |
| 禁止工具 | 导出密钥、破坏系统 | 直接拒绝 |
企业 Agent 平台不应该让模型自由调用所有工具。
5. OpenClaw 技能系统实践
OpenClaw 的技能可以看作 Function Calling 的工程化封装:
1 | # k8s-deploy 技能 |
技能不仅描述“怎么执行”,还要描述“什么时候不能执行”。
6. 错误处理
1 | try: |
好的错误信息应该让用户知道:
- 哪个工具失败;
- 为什么失败;
- 是否可重试;
- 是否需要补充参数;
- 是否需要人工审批。
7. 审计日志
每次工具调用都建议记录:
- 用户请求;
- 工具名称;
- 参数摘要;
- 权限决策;
- 执行结果;
- 耗时;
- 错误信息;
- 是否人工确认。
审计日志是企业 AI Agent 安全治理的基础。
8. 架构师点评
Function Calling 的本质是把模型接入现实系统。它带来的不是“多一个 API 调用”,而是权限、安全、审计、可靠性和责任边界问题。企业落地时,工具调用层应该像网关一样被设计,而不是像 demo 一样随手注册函数。
真正成熟的 AI Agent 平台,工具调用一定是可配置、可审批、可观测、可回滚的。
9. 企业落地建议
建议按三步推进:
- 先接入只读工具,验证意图识别和参数提取;
- 再接入低风险写工具,增加权限和审计;
- 最后接入部署、消息、工单等高风险工具,并加入人工确认。
需要设计企业 AI Agent 工具调用、OpenClaw 技能体系或安全审批流程,可以查看 企业 AI Agent / AI Coding 落地咨询 和 AI Agent 专题。
延伸阅读:工具调用如何进入 Agent Loop
Function Calling 解决的是“Agent 如何调用工具”,Loop Agent 解决的是“Agent 如何持续观察、调用、评估并决定下一步”。如果你要把工具调用升级为可控自主智能体,可以继续看 Loop Agent 设计最佳实践。