Function Calling 与 Tool Use:让模型调用你的 API
理解 Function Calling 的原理与实现,让大模型从「只会说话」变成「能做事」的智能体。
大模型本身只能「生成文本」,Function Calling(工具调用)让它能触发外部动作,这是从聊天机器人走向 Agent 的关键一步。
它解决了什么
想象一个天气助手:模型光靠训练数据无法知道「现在北京的天气」。Function Calling 让模型在需要时声明调用一个工具,由你的代码执行,再把结果交还给模型生成回答。
工作流程
Function Calling 是一个「模型 ↔ 应用」的往返循环:
- 你告诉模型有哪些工具可用(工具定义);
- 模型判断需要调用某个工具,返回工具名 + 参数(JSON);
- 你的代码执行工具,拿到结果;
- 把结果作为新消息发给模型;
- 模型基于结果生成最终回答。
工具定义与调用
const tools = [{
type: 'function',
function: {
name: 'get_weather',
description: '获取指定城市的天气',
parameters: {
type: 'object',
properties: {
city: { type: 'string' }
},
required: ['city']
}
}
}];
const res = await client.chat.completions.create({
model,
messages,
tools,
});
// res 可能包含 tool_calls,指明要调用 get_weather({ city: '北京' })
关键实践
- 工具描述要精确:模型靠描述理解工具用途,写清楚参数含义与返回值;
- 参数校验:模型生成的参数不可信,执行前务必校验类型与范围;
- 处理多轮:一次对话可能多次调用工具,做好循环与上下文组装;
- 安全边界:危险操作(删除、转账)需二次确认。
结语
Function Calling 是「让模型连接真实世界」的桥梁。掌握了它,你就能构建出真正能「办事」的 AI 应用,而不仅仅是「聊天」。