Function Calling 与 Tool Use:让模型调用你的 API

理解 Function Calling 的原理与实现,让大模型从「只会说话」变成「能做事」的智能体。

大模型本身只能「生成文本」,Function Calling(工具调用)让它能触发外部动作,这是从聊天机器人走向 Agent 的关键一步。

它解决了什么

想象一个天气助手:模型光靠训练数据无法知道「现在北京的天气」。Function Calling 让模型在需要时声明调用一个工具,由你的代码执行,再把结果交还给模型生成回答。

工作流程

Function Calling 是一个「模型 ↔ 应用」的往返循环:

  1. 你告诉模型有哪些工具可用(工具定义);
  2. 模型判断需要调用某个工具,返回工具名 + 参数(JSON);
  3. 你的代码执行工具,拿到结果;
  4. 把结果作为新消息发给模型;
  5. 模型基于结果生成最终回答。

工具定义与调用

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 应用,而不仅仅是「聊天」。