📖 定义
Tool Calling (工具调用),也称为 Function Calling,是指大语言模型(LLM)能够识别何时需要调用外部工具,并生成正确的调用参数的能力。这是AI Agent从"聊天机器人"进化为"行动者"的关键能力。
简单来说,Tool Calling 让AI不仅能"说",还能"做"——搜索网页、查询数据库、发送消息、执行代码等。
🧠 工作原理
用户提问
→
LLM分析
→
识别工具需求
→
生成调用参数
→
执行工具
→
返回结果
→
生成回答
技术实现
Tool Calling 的核心步骤:
- 工具定义 - 描述工具的功能、参数和返回值(JSON Schema)
- 意图识别 - LLM 分析用户意图,判断是否需要调用工具
- 参数生成 - LLM 生成符合工具定义的调用参数
- 执行与返回 - 执行工具调用,将结果返回给LLM
- 结果整合 - LLM 整合工具结果,生成最终回答
💻 OpenClaw 中的 Tool Calling
OpenClaw 提供了强大的工具系统,支持多种工具类型:
1. 内置工具
# OpenClaw 内置工具示例
内置工具:
- web_search # 网页搜索
- web_fetch # 获取网页内容
- read/write/edit # 文件操作
- exec # 执行命令
- browser # 浏览器控制
- message # 发送消息
- cron # 定时任务
2. MCP 工具集成
# 通过 MCP 集成外部工具
mcp:
servers:
- name: "github"
tools:
- list_issues
- create_issue
- add_comment
3. 自定义工具 (SKILL.md)
# 在 SKILL.md 中定义自定义工具
## 工具定义
{
"name": "search_database",
"description": "搜索产品数据库",
"parameters": {
"type": "object",
"properties": {
"query": {"type": "string", "description": "搜索关键词"},
"limit": {"type": "number", "description": "返回数量"}
}
}
}
🎯 实战案例:智能客服Agent
用户问:"我的订单 #12345 到哪了?"
Agent 处理流程:
- 识别意图 → 查询订单状态
- 调用工具 → order_status(order_id="12345")
- 获取结果 → "订单已发货,预计明天到达"
- 生成回答 → "您的订单 #12345 已发货,预计明天到达。"
📊 主流LLM的Tool Calling支持
| 模型 | 并行调用 | 流式支持 | 工具数量 |
|---|---|---|---|
| Claude 3.5+ | ✅ | ✅ | 128+ |
| GPT-4o | ✅ | ✅ | 128+ |
| Gemini 2.0 | ✅ | ✅ | 64+ |
| Qwen 2.5+ | ✅ | ✅ | 64+ |
✅ 优势
- 扩展LLM能力边界
- 结构化输出,可靠执行
- 支持复杂工作流
- 标准化接口(MCP)
⚠️ 挑战
- 工具定义占用上下文窗口
- 幻觉可能导致错误调用
- 嵌套调用增加延迟
- 安全审查不可忽视
🔗 相关术语
- MCP - 工具调用的标准化协议
- OpenClaw Skills - 工具的组织形式
- Agent Workflow - 工具编排的工作流