函数调用与工具调用实战:让大模型真正「动手」

工具调用原理 · JSON Schema 声明 · 多轮回写 · 可运行示例与排错

核心结论:没有工具调用,大模型只是个「聊天框」;加上工具调用,它才能查数据库、调 API、算数、发消息——从「会说」变成「会做」。

一、工作原理

  1. 你用 JSON Schema 声明可用工具(名称、用途、参数)。
  2. 模型理解用户意图后,输出「调用函数 X,参数 Y」。
  3. 你的代码真正执行该函数,拿到结果。
  4. 把结果回传给模型,模型据此生成最终自然语言答复。

二、最小可运行示例

tools = [{
  "type": "function",
  "function": {
    "name": "get_weather",
    "description": "查询某城市当前天气",
    "parameters": {
      "type": "object",
      "properties": {"city": {"type": "string"}},
      "required": ["city"]
    }
  }
}]

# 1) 把 tools 随消息提交,模型返回 tool_calls
# 2) 本地执行 get_weather(city)
# 3) 把 {role:"tool", content: 结果} 回传,再让模型总结

三、提升命中率的写法

进阶把多个工具组合,就是 Agent 的雏形:模型自己决定先查哪个、再调哪个,逐步逼近目标。详见AI Agent 入门

四、常见问题

模型会乱调收费接口吗?

会。凡是「有副作用」的工具(发消息、下单、删数据)务必加人工确认或权限校验,不要完全自动放行。

中文函数名能用吗?

建议保留英文函数名(兼容性更好),用 description 写清中文用途即可。

AI Agent 入门与框架对比 » · 通用 API 接入 » · Prompt 工程入门 »