返回笔记
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: "北京"}}]。
完整的调用流程
- 开发者定义 Tool 列表,发给 LLM
- LLM 根据用户输入决定是否需要调用 Tool
- 如果需要,LLM 返回 Tool 名和参数
- 开发者执行具体的函数,拿到结果
- 把结果返回给 LLM,LLM 用自然语言总结给用户
多轮 Tool 调用
LLM 可以在一次回答中请求多个 Tool,也可以分步调用。比如"查北京天气,然后推荐适合的衣服",模型会先调天气 Tool,拿到结果后再决定推荐什么。
实践中的坑
- 参数幻觉:模型可能编造不存在的参数值
- Tool 描述误导:描述写得太宽泛,模型在不该调用时也调用
- 循环调用:模型反复调用同一个 Tool 陷入死循环
- 安全:永远不要信任模型返回的参数,要做校验和权限控制