🛠️ Tool Calling / Function Calling

工具调用——给AI一双可以触碰现实世界的手

Tool Use Function Calling API集成 OpenClaw

"凌晨3点42分,我给AI装上了工具。它不是变得更聪明,而是终于能——查天气、发邮件、改代码。就像一个被关在玻璃房里的天才,突然有人递给它一把锤子。"

📖 什么是 Tool Calling?

Tool Calling(工具调用),也称 Function Calling(函数调用),是AI Agent扩展能力边界的核心机制。它允许大语言模型在需要时调用外部工具或API来获取信息、执行操作。

🎯 核心概念

Tool Calling 的本质是 结构化输出 + 外部执行。LLM 不直接执行工具,而是生成调用工具所需的参数,由外部系统执行后将结果返回给LLM。

工作流程

用户提问 LLM分析 生成调用 执行工具 返回结果 生成回复

⚙️ 工作原理

  1. 工具定义:向LLM描述可用的工具及其参数(JSON Schema格式)
  2. 意图识别:LLM判断是否需要调用工具
  3. 参数生成:LLM生成结构化的工具调用参数
  4. 工具执行:外部系统使用参数执行工具
  5. 结果反馈:将执行结果返回给LLM
  6. 响应生成:LLM基于结果生成最终回复
📋 工具定义示例(JSON Schema)
{
  "type": "function",
  "function": {
    "name": "get_weather",
    "description": "获取指定城市的天气信息",
    "parameters": {
      "type": "object",
      "properties": {
        "city": { "type": "string", "description": "城市名称" },
        "date": { "type": "string", "description": "日期YYYY-MM-DD" }
      },
      "required": ["city"]
    }
  }
}

🔥 Tool Calling vs ReAct:如何选择?

特性Tool CallingReAct
执行方式结构化输出,一次调用推理+行动交替,多轮迭代
适用场景明确的单次工具调用复杂多步推理任务
延迟较低(单次往返)较高(多轮交互)
可解释性中等(有调用记录)高(完整推理链)
💡 选择建议

用 Tool Calling:天气查询、计算器、发送邮件等单一明确任务

用 ReAct:研究分析、故障排查、复杂决策等需要多步推理的任务

🔧 OpenClaw 实战应用

OpenClaw 的工具系统是其最强大的特性之一:

内置工具生态

🔍 web_search

搜索网络信息,支持 DuckDuckGo 等引擎

📄 web_fetch

获取并解析网页内容,支持 HTML→Markdown

📝 write / edit

文件写入和编辑操作

⚡ exec

执行系统命令

🌐 browser

浏览器自动化控制

💬 message

发送消息到各种渠道(Discord、飞书等)

调用流程示例

🤖 OpenClaw Tool Calling 流程
# 用户:"今天北京天气怎么样?"

# Step 1: LLM 判断需要调用 web_search
web_search({
  "query": "北京今天天气",
  "count": 5
})

# Step 2: 搜索结果返回
# ["北京今日晴,气温15-25°C..."]

# Step 3: LLM 生成最终回复
"今天北京天气晴朗,气温在15到25度之间,适合出门~"

MCP 集成:无限扩展工具

🔌 openclaw.yaml MCP 配置
mcp:
  servers:
    - name: weather-api
      transport: http
      url: "https://api.weather.com/mcp"
    - name: github-mcp
      transport: stdio
      command: "npx -y @github/mcp-server"
    - name: database-mcp
      transport: sse
      url: "http://localhost:3001/mcp"

# 配置完成后,这些MCP工具会自动出现在Agent的工具列表中
# Agent可以像调用内置工具一样调用MCP工具

💡 实际应用场景

📅 日程管理

调用日历API创建事件、查询日程、发送提醒——"明天下午3点提醒我开会"

💰 财务分析

调用数据库查询交易记录、计算统计指标、生成报表——"本月支出分析"

🏠 智能家居

调用IoT API控制灯光、空调、安防——"把客厅温度调到25度"

🎓 最佳实践

  1. 清晰的工具描述:让LLM准确理解每个工具的用途和参数
  2. 参数校验:执行前验证参数有效性,避免无效调用
  3. 错误处理:为工具调用失败设置降级策略
  4. 并发控制:避免同时发起过多工具调用
  5. 权限管理:敏感操作需经用户确认

🔗 相关概念

📚 OpenClaw 相关教程