Function、Function Calling 与 Tool
本文目录 12 节
Function、Function Calling 与 Tool
1、定义
Tool 是 Agent 可以调用的外部能力。它可以查询天气、读取文件、运行测试、搜索网页、访问数据库,也可以调用另一个服务。
Function 通常指一种由程序定义的工具。它有名称、说明、参数结构和返回结果,常用 JSON Schema 描述输入。
Function Calling,也叫 Tool Calling,是模型请求调用工具的协议机制。模型不是自己执行函数,而是生成“我想调用哪个工具、参数是什么”的结构化请求。
真正执行工具的是你的应用、Runtime 或 Harness。模型负责提出调用意图,系统负责校验、执行、记录和把结果送回模型。
2、为什么它重要
没有工具调用,LLM 主要只能生成文本。它可以建议你“查天气”,但不能真的查;可以说“运行测试”,但不能真的运行。
Tool Calling 让 Agent 从“会说”变成“会做”。它把模型连接到外部世界,让模型能读取实时数据、执行任务和产生可验证结果。
但工具越强,风险越高。读文件、写数据库、发消息、付款、删除资源这类工具必须被权限、Schema、审批和审计约束。
3、一次完整调用链路
sequenceDiagram participant U as 用户 participant App as 应用 / Runtime participant M as 大模型 participant Tool as 外部工具
U->>App: 云南三日游,查下天气再规划 App->>M: 用户输入 + 可用 tools 定义 M-->>App: function_call(get_weather, {location:"云南"}) App->>App: 校验工具名、参数和权限 App->>Tool: 执行 get_weather("云南") Tool-->>App: 天气 JSON App->>M: function_call_output(call_id, 天气结果) M-->>App: 基于天气生成行程建议 App-->>U: 展示最终结果关键点是:模型并没有直接访问天气 API。它只是请求调用,真正的执行权在系统手里。
4、Tool 的常见分类
| 类型 | 说明 |
|---|---|
| Function Tool | 你自己定义的函数,通常有 JSON Schema 参数 |
| Built-in Tool | 平台内置工具,比如搜索、代码执行、文件解析 |
| MCP Tool | 来自 MCP Server 的工具,由外部服务暴露 |
| Custom Tool | 输入输出更自由的工具,适合复杂文本或非标准协议 |
| Human Tool | 把某一步交给人确认或补充信息 |
可以这样理解:
Tool = Agent 能使用的外部能力Function = Tool 的一种常见实现形式Function Calling = 模型请求使用 Tool 的机制5、一个代码结构例子
{ type: "function", name: "get_weather", description: "查询某个地点的天气", strict: true, parameters: { type: "object", properties: { location: { type: "string", description: "城市或地点名" } }, required: ["location"], additionalProperties: false }}模型可能返回:
{ "type": "function_call", "call_id": "call_abc123", "name": "get_weather", "arguments": "{\"location\":\"昆明\"}"}系统执行后,再把结果回传给模型:
{ "type": "function_call_output", "call_id": "call_abc123", "output": "{\"temperature\":25,\"condition\":\"晴\"}"}6、常见误区
误区一:模型调用了函数,所以函数是在模型里执行的
不是。模型只生成调用请求。函数执行发生在你的应用、服务端或 Agent Runtime 里。
误区二:工具说明写清楚就足够安全
不够。工具必须做参数校验、权限检查、超时处理、错误处理和审计记录。
误区三:所有能力都应该做成工具
不是。工具越多,路由和选择越难。高频、明确、可验证的能力更适合工具化。
误区四:工具返回自然语言就够了
很多场景下不够。工具结果最好结构化,方便模型引用,也方便系统验证和记录。
7、一句话总结
Tool 让 Agent 能真正连接外部世界;Function 是工具的一种结构化形式;Function Calling 是模型请求使用工具的协议。
Comments
留下评论