工具调用
工具调用是让模型在生成过程中请求调用你提供的函数的机制。模型只负责决定调哪个、填什么参数,真正的执行仍然发生在你的代码里。
工具调用指开发者把一组函数的名称、说明与参数结构交给模型,模型在需要时返回一个结构化的调用请求,由调用方执行该函数并把结果回传给模型继续生成。不同厂商称之为 Tool Calling 或 Function Calling,本质是同一件事:模型负责判断与填参,执行权始终在你手里。
一次完整的往返
- 你在请求里附上工具定义:函数名、用途说明、参数结构。
- 模型判断需要用某个工具,返回一个包含函数名与参数的结构化请求——它不会自己执行。
- 你的代码执行这个函数,拿到结果。
- 把结果回传给模型,模型据此继续生成最终回答。
关键在第 2 步和第 3 步之间:模型只是提出请求,是否执行、怎么执行、要不要拒绝,完全由你决定。
常见误解
- 模型不会真的访问外部系统。 它没有网络权限,所有实际操作都是你的代码做的。这也意味着安全边界在你这一侧——不要盲目执行模型给出的参数。
- Tool Calling 和 Function Calling 不是两种技术。 只是不同厂商的命名差异,接口字段略有不同,概念一致。
- 返回的参数不保证合法。 除非启用了严格模式一类的约束,模型给出的参数完全可能缺字段或类型不对。解析端必须校验,不能直接送进业务逻辑。
- 工具定义写得含糊,模型就调不准。 函数说明与参数描述是提示词的一部分,写清楚「什么时候该用它」比写清楚「它是什么」更重要。
值得提前验证的边界情况
材料里根本没有所需信息时模型会怎么办——给空值、拒绝、还是硬编一个?这个行为必须在上线前确认。
在第三方兼容接口上还要额外确认:严格模式一类的开关是否被静默忽略,验证方法见 OpenAI 兼容接口怎么判断。调参数与试工具定义的顺手环境见 Google AI Studio 入门。