为啥大模型能查天气、订外卖?FunctionCalling与MCP是关键

大模型工具使用核心技术解析,FunctionCalling与MCP的原理与实践,现在,用AI查天气、订外卖早不是新鲜事了,但是你有没有想过,AI明明只是个能生成文字的模型,怎么就能“动手”完成这些实际操作?其实背后靠的就是俩核心技术,FunctionCalling和MCP。

打开今日头条查看图片详情

没这俩技术撑着,大模型就算脑子再灵光,也只是“光有想法没法落地”的主儿,跟我们想做饭却没锅碗瓢盆一个道理,今天就掰开揉碎了说这俩技术,不光讲它们是啥、咋干活的,还得聊聊实际用的时候会遇到什么问题。

FunctionCalling,AI办事的“遥控器”,一步都不能错

FunctionCalling说直白点,就是给AI装了个“遥控器”,你想让AI干个啥具体活,比如查上海今天的温度,它不会自己瞎编个数,而是按“遥控器”上对应的键,把活交给专门的工具去干。

打开今日头条查看图片详情

本来想简单说下它的流程,但后来发现得拆细了才好懂,首先要有“按键”吧?这就是开发者提前定义好的函数,比如查天气的函数,得写清楚叫啥名、要填哪些信息,像城市得具体到市,日期可选默认当天,要是这步没弄明白,比如没说清要填城市,AI就算想调用工具也不知道该查哪儿的天气,这不就白忙活了。

接着AI得看懂你的需求

你说“今天上海温度多少”,它得判断出来“这得要实时数据,我自己没有,得调用工具”,要是你问“1加1等于几”,它就不用麻烦工具了,直接告诉你答案就行,这步挺考验AI“判断力”的,要是连啥活要工具、啥活自己能搞定都分不清,那这“遥控器”也白给。

然后就是选“按键”、填信息,AI从提前定义好的函数里,挑出查天气的那个,再把“上海”这个城市信息提出来,生成一个结构化的请求,一般是JSON格式。

打开今日头条查看图片详情

这一步不能出错,信息填错了,比如把“上海”写成“北京”,工具返回的结果肯定不对,请求发出去后,平台会帮着调用对应的工具,比如天气API。

工具跑完后,会把结果返回来,像“温度28℃、晴天”这样,最后,AI再把这个结果转换成咱能听懂的话,告诉你“上海今天气温28℃,天气晴朗”。

不过FunctionCalling也有麻烦事

不同AI厂商的玩法不一样,比如OpenAI和阿里云的接口参数格式就不一样,开发者要是想让工具在俩平台都能用,就得写两套代码,更别说有些早期模型,比如之前的DeepSeekR1,根本就不支持这功能。

这对小公司来说太不友好了,本来开发资源就少,还得在适配上面花额外功夫,MCP,解决“接口混乱”,让AI工具连接更顺畅,FunctionCalling的“接口混乱”问题,直到MCP出来才算是有了正经解决方案。

打开今日头条查看图片详情

MCP全名叫ModelContextProtocol,是Anthropic在2024年11月底推出的,这家公司就是做Claude的,他们搞出这个协议,确实帮行业解决了个大麻烦。


MCP可以理解成AI界的“USB-C接口”

以前AI跟工具连接,就像老式手机,充电得用Micro-USB,插耳机得用3.5mm接口,传数据还得用HDMI,特别麻烦,MCP一出来,不管是连数据库、调用工具,还是获取文件内容,一个接口就能搞定,要理解MCP,得先明白“模型上下文”是什么。

打开今日头条查看图片详情

你跟朋友聊天,朋友说“昨天那件事你怎么看”,你要知道“昨天那件事”指的是什么才能回答,AI的上下文也一样,就是它处理问题时能“记住”的背景,比如你之前说过要订上海到北京的高铁,后面又说要靠窗座位,AI得把“上海到北京、高铁”这些信息记住,才能准确调用订票工具。

要是没有上下文管理,AI肯定得问“你要订哪趟车”,这体验就差多了。


MCP的架构是客户端-服务器模式,分三个部分,Host、Client和Server

Host就是咱们用的AI应用,比如ClaudeDesktop或者Cursor代码编辑器,Client是嵌在Host里的“中间人”,负责把Host的需求转给Server,再把Server的结果带回来。

Server就厉害多了,能提供资源、工具和提示词模板,比如你让Claude分析PDF,Server就会把PDF解析成AI能读的格式,它的通信流程分三步,初始化、消息交换、终止。

打开今日头条查看图片详情

初始化的时候,Client先跟Server打个招呼,说清楚自己支持的协议版本,Server回应后,双方就算建立好连接了,消息交换的时候,要么是“你问我答”,比如调用工具要等结果,要么是“单向通知”,比如告诉对方“工具调用完了”。

最后,终止的时候,要么用close方法清理资源,要么直接断开连接,省得占着服务器资源,MCP最核心的价值,就是解决了FunctionCalling的“标准不统一”问题。

打开今日头条查看图片详情

现在,不管是支持FunctionCalling的模型,还是像早期DeepSeekR1那样不支持的,只要用MCP,都能调用同一套工具,我之前,听个开发者说,以前适配三个模型得写三套代码,用了MCP后,一套代码就够了,效率直接提上去不少。

有了FunctionCalling和MCP,工具管理就成了接下来要考虑的事

总不能让AI随便调用工具,要有规矩,现在主流的工具,要么按OpenAPI协议开发,要么按MCP协议来,这样不管是哪个AI平台,只要支持这俩协议,都能用上这些工具,不用再为每个平台单独改代码。

比如,有个快递查询工具,按OpenAPI协议开发后,不管是GPT、Claude还是文心一言,都能调用它查快递进度,要是按MCP协议开发,连早期不支持FunctionCalling的模型都能用。

打开今日头条查看图片详情

这样连统一的工具管理,其实是FunctionCalling和MCP落地的“保障”,没这步,再多工具也没法好好用,说到底,FunctionCalling让AI有了“动手办事”的能力,MCP让AI跟工具的连接更顺畅,再加上统一的工具管理,这三者一起,才让大模型从“只会说话”变成了“能干活”的实用工具。

现在,不管是电商客服查库存,还是代码编辑器帮着编译代码,背后都有这俩技术在支撑,你平时用AI的时候,有没有感觉到它在悄悄调用工具?比如查实时数据、算数学题的时候,说不定就是FunctionCalling和MCP在背后忙活。