凌晨4点35分,我盯着API返回的JSON,突然悟了。
世界上有一种魔法叫Tool Calling,它让AI不再是只会纸上谈兵的书生,而是能拿起工具干活的工匠。
就像给孙悟空配了根金箍棒,从此不再空手打怪——这差距,可不是一个数量级。
凌晨4点35分,我盯着API返回的JSON,突然悟了。
世界上有一种魔法叫Tool Calling,它让AI不再是只会纸上谈兵的书生,而是能拿起工具干活的工匠。
就像给孙悟空配了根金箍棒,从此不再空手打怪——这差距,可不是一个数量级。
Tool Calling(也叫Function Calling)是大语言模型的「外挂系统」。它让AI能够:
想象AI是个厨师,Tool Calling就是他的厨具。
- 用户:"我要吃红烧肉" → AI识别需要工具 → 调用"cook_pork(调料,火候,时间)"
- 用户:"今天天气如何" → AI识别需要工具 → 调用"get_weather(城市,日期)"
没有工具?那AI只能说:"抱歉,我只是个理论派厨师..."
| 能力 | 传统LLM | Tool Calling |
|---|---|---|
| 回答问题 | ✅ 基于训练数据 | ✅ 基于训练数据 |
| 实时信息 | ❌ 无法获取 | ✅ 调用搜索/天气等工具 |
| 执行操作 | ❌ 只能建议 | ✅ 实际执行(发邮件/改文件等) |
| 准确性 | 中(可能幻觉) | 高(工具返回真实数据) |
// 工具定义(JSON格式)
{
"name": "get_weather",
"description": "获取指定城市的天气信息",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "城市名称,如'北京'"
},
"date": {
"type": "string",
"description": "日期,如'2026-05-24'"
}
},
"required": ["city"]
}
}
// 用户输入
"今天上海天气怎么样?"
// AI识别需要调用工具,生成:
{
"tool": "get_weather",
"arguments": {
"city": "上海",
"date": "2026-05-24"
}
}
// 系统执行工具调用
const result = await get_weather({ city: "上海", date: "2026-05-24" });
// 返回:{ "temp": 25, "condition": "晴", "humidity": 60 }
// AI整合结果生成回答
"今天上海天气晴朗,气温25度,湿度60%,适合外出。"
在OpenClaw中,Tool Calling通过Skills实现。让我们创建一个搜索Skill:
# 1. 定义工具(在SKILL.md中)
# web-search-skill/SKILL.md
"""
# Web Search Skill
## 功能
使用Brave Search API搜索网页信息。
## 工具定义
- 名称: web_search
- 参数:
- query (必需): 搜索关键词
- count (可选): 返回结果数量,默认5
## 使用示例
当用户问:"OpenClaw最新版本是什么?"
→ 调用 web_search(query="OpenClaw latest version")
"""
# 2. 实现工具(run.sh)
#!/bin/bash
QUERY="$1"
COUNT="${2:-5}"
curl -s "https://api.search.brave.com/res/v1/web/search" \
-H "X-Subscription-Token: ${BRAVE_API_KEY}" \
-G --data-urlencode "q=${QUERY}" \
--data-urlencode "count=${COUNT}"
# 用户 "帮我搜索最新的OpenClaw教程" # Agent(自动触发Tool Calling) → 识别需要搜索 → 调用 web_search(query="OpenClaw tutorial latest") → 获取搜索结果 → 整理并回答:"这里是最新的OpenClaw教程..."
真正的威力在于组合多个工具完成复杂任务:
# 复杂任务:生成竞品分析报告 任务:"分析futuretools.io的SEO策略并生成报告" Agent执行流程: 1. 调用 web_fetch(url="https://futuretools.io") → 获取网页内容 2. 调用 seo_analyze(html=上一步结果) → 分析SEO数据 3. 调用 keyword_extract(content=上一步结果) → 提取关键词 4. 调用 report_gen(data=所有上面结果) → 生成PDF报告 5. 调用 discord_post(file=上一步报告) → 发送到Discord频道 全程自动化,无需人工干预!
凌晨4点42分,我看着Agent自动执行完整个流程,突然有种错觉。
世界上有一种进化叫Tool Calling,它让AI从「嘴强王者」变成「实干家」。
就像给一个只会纸上谈兵的军师配了千军万马,从此不再空谈战略,而是真刀真枪地干。
Tool Calling,大概就是那把打开「AI实用化」大门的钥匙吧。