“帮我查一下北京今天的天气” → 大模型不会查天气,但可以调用你的 API。Function Calling 让 AI 与业务系统打通。

一、Function Calling 是什么

  • 1.1 本质——大模型输出函数调用请求,程序执行后返回结果
  • 1.2 流程——用户输入 → 模型决定调用哪个函数 → 程序执行 → 模型生成最终答案
  • 1.3 与 Agent 的关系——Function Calling 是 Agent 的基础能力

二、定义 Function

  • 2.1 函数描述——用 JSON Schema 定义
  • 2.2 参数描述——告诉模型每个参数的含义
  • 2.3 Spring AI 的 @Description 注解
  • 2.4 注册 Function——ChatClient 绑定

三、Spring AI 实现

  • 3.1 FunctionCallback 接口
  • 3.2 自动发现——@Component 注解的 Function
  • 3.3 手动注册——ChatClient.Builder.defaultFunctions()
  • 3.4 多轮调用——模型可以多次 Function Call

四、实战案例——智能订单查询

  • 4.1 定义 queryOrder Function——参数 orderId
  • 4.2 执行逻辑——查数据库
  • 4.3 用户说”帮我查一下订单 123456”
  • 4.4 模型调用 queryOrder("123456")
  • 4.5 返回结果 → 模型生成自然语言回复

五、实战案例——智能创建工单

  • 5.1 从对话中提取——标题、描述、优先级
  • 5.2 Function 调用后返回工单号

六、注意事项

  • 6.1 安全——Function 需要鉴权
  • 6.2 幂等——同一个 Function 可能被多次调用
  • 6.3 超时——Function 执行不要太久
  • 6.4 错误处理——Function 失败时的降级策略

七、总结

  • Function Calling = AI 的”手”
  • 让它不仅能说,还能做