返回笔记
LLM

AI Agent 工具调用:Function Calling 深度解析

Function Calling Tool Agent OpenAI API

Function Calling 是让 LLM 与外部世界交互的关键技术。学会了它,就能让大模型帮你查询数据库、发邮件、控制智能家居。

Function Calling 是什么

简单说就是:你定义好函数的 JSON Schema(函数名、参数、描述),传给模型。模型根据用户意图,自动决定要不要调用、调用哪个、传什么参数。

这不是模型真的执行了函数。模型只是"说"它想调用什么,真正的执行是你(开发者)来做的。

OpenAI 的 Function Calling

tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "获取指定城市的天气",
        "parameters": {
            "type": "object",
            "properties": {
                "city": {"type": "string", "description": "城市名"}
            },
            "required": ["city"]
        }
    }
}]

用户说"北京今天天气怎么样",模型就返回 tool_calls: [{name: "get_weather", arguments: {city: "北京"}}]。

完整的调用流程

  1. 开发者定义 Tool 列表,发给 LLM
  2. LLM 根据用户输入决定是否需要调用 Tool
  3. 如果需要,LLM 返回 Tool 名和参数
  4. 开发者执行具体的函数,拿到结果
  5. 把结果返回给 LLM,LLM 用自然语言总结给用户

多轮 Tool 调用

LLM 可以在一次回答中请求多个 Tool,也可以分步调用。比如"查北京天气,然后推荐适合的衣服",模型会先调天气 Tool,拿到结果后再决定推荐什么。

实践中的坑

  • 参数幻觉:模型可能编造不存在的参数值
  • Tool 描述误导:描述写得太宽泛,模型在不该调用时也调用
  • 循环调用:模型反复调用同一个 Tool 陷入死循环
  • 安全:永远不要信任模型返回的参数,要做校验和权限控制