Spring AI Function Calling 实战:让大模型调用你的 Java 方法——查询+下单一条龙
引言 去年给订单系统加了个"AI 助手",产品经理的原始需求只有一句话:"用户在对话框里说'帮我查下最近的订单',助手能直接把订单查出来回他。" 第一版我做得很快:关键词匹配 + 意图分支。if (msg.contains("订单")) 就查订单,if (msg.contains("退款")) 就走退款——上线三天,就暴露了灾难现场: 用户说"我的单子怎么还没到"——不含"订单"关键词,助手回复"抱歉我不明白您的意思" 用户说"昨天买的那杯咖啡去哪了"——命中了"咖啡"关键词,走错了咖啡优惠券分支 每加一种问法,就要加一组关键词、多一层 if——我在用代码模拟一个自然语言理解系统,而大模型本身就是干这个的 后来换成 Function Calling,思路彻底反转:我不写任何意图判断,只把 Java 方法"介绍"给大模型(方法名、用途、参数说明)。用户说"帮我查最近的订单",大模型自己决定该调 getOrders,自己从对话里抽取参数(limit=5),Spring AI 帮我执行方法、把结果喂回去——意图识别、参数抽取这两件最难的事,全部交给了模型;Java 代码里只剩纯粹的业务方....