Function Calling
Function Calling(函数调用)是指 AI 模型为回答问题需要使用外部程序的功能(函数)时,按规定格式生成“请用哪些值执行哪个函数”的请求的功能。实际执行不由模型负责,而由使用该模型的应用负责。
通俗解释 这类似于接到食客(用户)点单的服务员(模型)不亲自下厨,而是把规定格式的点菜单(函数调用)交给后厨,再把做好的菜端给食客。不过这个比喻没有体现出:服务员可能写错点菜单,所以后厨(应用)需要核对内容。
工作原理
开发者先告诉模型可以使用的函数列表。每个函数都附有说明,写明名称、功能和需要接收的值(参数)。用户提问后,模型判断是直接回答还是需要使用函数,必要时以 JSON 等规定格式输出函数名称和参数。应用按照这个请求实际执行函数,并把结果交回模型,模型再根据结果写出最终回答。
为什么重要
LLM 只根据学到的内容生成文本,因此无法自行得知今天的天气、公司数据库中的订单记录等外部最新信息,也无法执行发送邮件之类的操作。Function Calling 是把模型与这类外部系统连接起来的基本通道。由于模型以规定格式而非自由文本发出请求,程序可以稳定地读取并处理这些请求。AI 智能体轮流使用多种工具来完成工作,也是建立在这一功能之上的。
注意事项
关键在于模型并不直接执行函数,只生成执行请求。模型可能编造不存在的函数或填错参数,因此应用一侧需要检查格式和数值。对于会花钱或删除数据的函数,执行前让人工确认更安全。业界中它与“工具使用(Tool Use)”几乎同义,而 MCP 则是把这种工具连接方式标准化,供多个服务共同使用。
示例
如果向旅行 App 中的 AI 助手询问“告诉我下周六去釜山的火车”,模型不会编造答案,而是生成一个请求,要求带着出发地·目的地·日期的值调用“火车时刻表查询”函数。应用从实际的订票系统获取时刻表并交回模型后,模型把它整理成易读的句子展示给用户。主要的 LLM API 都默认提供这一功能,业务自动化聊天机器人和编程智能体也以同样的方式调用外部功能。