
你有没有遇到过这种情况:用AI查自己的订单,AI说"我无法访问您的账户数据"。
用AI查天气,AI说"我没有联网能力,请自行查询"。
聊了半天,AI啥实际的事都没帮你干——它只是个会说话的工具,不是能干活的助手。
Function Calling,就是解决这个问题的。
01
Function Calling 到底是什么?
一句话定义:
Function Calling(函数调用),是大模型的一项原生能力,让AI在对话过程中,能够主动识别用户意图,自动调用你提前定义好的外部函数,拿到返回结果后再继续回答。
拆开说就是:

一个最直观的理解方式:
把AI想象成一个很会说话但没手没脚的大脑。
没有Function Calling之前:
用户:帮我查订单 ORD-2024-001 到哪了? AI:抱歉,我无法访问您的订单数据。
有了Function Calling之后:
用户:帮我查订单 ORD-2024-001 到哪了? AI(心里想):这个问题需要查订单,我来调 query_order 函数 → 拿到结果「已发货,快递单号SF12345678」→ 回复用户:您的订单已发货,快递单号SF12345678,预计明天送达。
这就是Function Calling的本质:让AI从"只会说"变成"能干活"。
02
为什么AI"查不了"?
大模型本质上是个语言处理机器,它的能力范围,就是它训练时见过的文本。
你的订单数据、你公司的数据库、今天的天气、实时股价……这些都不在它的训练数据里,它当然不知道。
那怎么让AI"知道"?
最早的方案是把数据塞进提示词——用户问订单,你先查数据库、把结果拼进提示词里再发给AI。这样能用,但很麻烦:
Function Calling 把这个"判断该调什么"的环节,交给了AI来做。
03
函数的定义
三行话告诉AI能干什么
要让AI调你的函数,你得先让AI"知道这个函数存在",以及"什么时候该用它"。
你只需要给函数写一个描述,结构大概是这样:
{
"name": "query_order",
"description": "根据订单号查询订单状态和物流信息。当用户询问订单状态、快递到哪了、是否发货等问题时调用此函数。",
"parameters": {
"order_id": {
"type": "string",
"description": "订单号,格式为 ORD-年份-编号"
}
}
}三个关键字段:
很多人第一次配Function Calling,发现AI总是调错函数或者不调函数,觉得"这玩意儿不好用"。其实99%的问题出在 description 写得太模糊。
回到文章开头的问题:AI为什么"只会说话不会干活"?
因为缺了Function Calling这一层。
大模型有很强的理解能力和表达能力,但没有"手"——没有访问数据库、调用API、操作文件的能力。
Function Calling给了AI这双"手"。
有了这层能力,AI才真正从"聊天工具"进化成"能执行任务的助手"——也就是我们说的 Agent。
没有Function Calling的AI:一问一答,答完就忘。 有了Function Calling的AI:理解需求 → 调函数拿数据 → 基于真实数据回答 → 记住上下文继续对话。