首页 我太奶奶都懂的:Function Calling 和 MCP 的区别!

我太奶奶都懂的:Function Calling 和 MCP 的区别!

2025-04-19 17:11:18 62 0

AI与数学

今天这篇文章聊聊最近 AI 领域的一些新玩法,都是我个人的一些天马行空的思考,欢迎大家留言讨论。如果你觉得看完后能少踩点坑,不妨点个赞、留个言、关注一下~谢谢!

我们从一个非常接地气的问题出发:“今天五行分布怎样?”来看一看 AI 是怎么一步步发展的,同时也帮助大家理解 Function Calling 和 MCP 之间的区别。

背景设定

假设我们生活在一个世界,电脑一开始什么都不懂,不知道“甲”是木,也不知道“丙”是火。想要算出今天的五行分布,只有一种办法:使用一种“神秘算法”,它能根据天干地支计算出五行,然后再分析五行之间的分布情况。

五行基础对照如下(仅供参考):

  • 木——甲乙,寅卯辰

  • 火——丙丁,巳午未

  • 土——戊己,辰戌丑未

  • 金——庚辛,申酉戌

  • 水——壬癸,亥子丑

 

阶段1:人工查表的时代

用户:今天五行分布怎样?
我:(查表中)甲→木,丙→火……OK。然后我用神秘算法算出分布,再告诉你结果。

流程:用户 → 我 → 查表 → 算分布 → 回答用户

问题:太慢,纯靠体力劳动。

阶段2:电脑登场

我开始用计算机帮忙。用户给我一个“甲”,我把它输入电脑,它返回“木”。我还是中间人,只是把体力活外包给了电脑。

流程:用户 → 我 → 电脑 → 我 → 用户

进步:快多了,但还不智能。

阶段3:用户自助查询

我把查询系统开放给用户,只要他输入“甲乙丙”,系统就能自己返回五行。

流程:用户 → 电脑(我维护)→ 用户

缺点:用户要知道输入什么,像是在和 ATM 操作。

阶段4:自然语言交互的雏形

用户不想管什么“甲乙丙”,只想说“今天五行分布怎样?”于是我们写了一堆 if else,看到关键词就执行算法。

问题:只要含“五行”,就触发……哪怕是“我第五行第六列那个人今天请假了”。系统理解太死板。

阶段5:AI 大模型出现(如 ChatGPT)

AI 通过学习全网的知识来理解你说的“今天五行分布怎样”,并尝试回答。

问题:天干地支可以推理出来,但神秘算法不是公开知识,AI 不知道怎么算,只能打太极:

“你这个问题真不错,今天是癸巳日,但五行我建议你请教当地大师~”

阶段6:RAG(检索增强生成)

我把过去一百年的五行分布和对应的答案喂给系统,用户的问题被转换成关键词去匹配最接近的记录。

 流程:用户 → 匹配历史问答 → 模板化回答

问题:不灵活,遇到“今天的昨天的五行”就找不到匹配;神秘算法仍然是黑盒。

阶段7:Function Calling 登场!

终于!我们有了两个函数:

  1. getWuXingFromGanzhi(天干地支) → 返回五行

  2. analyzeDistribution(五行列表) → 返回五行分布

AI 可以动态调用这些函数,像拼积木一样完成复杂任务。

流程:
用户 → AI → 调用函数1 → 拿到五行 → 调用函数2 → 拿到分布 → AI 返回建议

下面模拟这个流程:(实际就是电脑交互过程)

    用户:今天五行分布怎样?

    我:我有2个函数:1.通过天干地支计算五行,参数是天干地支  2. 通过五行计算分布情况,参数是五行

    请根据用户的提供信息(今天五行分布怎样?)计算五行分布,并根据计算的结果提供建议。

    AI:我需要调用第一个函数,参数是:甲丙

    我:我有2个函数:1.通过天干地支计算五行,参数是天干地支  2. 通过五行计算分布情况,参数是五行

    请根据用户的提供信息(今天五行分布怎样?)计算五行分布,并根据计算的结果提供建议。

    我需要调用第一个函数,参数是:甲丙

    第一个函数的答案是:木火。

    AI: 我需要调用第二一个函数,参数是:木火

    我:我有2个函数:1.通过天干地支计算五行,参数是天干地支  2. 通过五行计算分布情况,参数是五行

    请根据用户的提供信息(今天五行分布怎样?)计算五行分布,并根据计算的结果提供建议。

    我需要调用第一个函数,参数是:甲丙

    第一个函数的答案是:木火。

    我需要调用第二一个函数,参数是:木火

    第二个函数的答案是:木80% 火50%

    AI:今天是五行木强势的一天,您可以去干一些金属相关的活动或者事情,今天的幸运数字是1.适合穿黄色的衣服。

    我:其他操作+AI的返回数据给用户。

    用户:得到答案

 

问题:

  1. 每轮调用时要重复贴系统提示,token 超长,成本高

  2. 函数只能我自己写,别人想复用就得贴我源代码

  3. 多函数时,执行顺序难控制

 

阶段8:MCP + Function Calling = 真正的 AI 模块化!

MCP(Model Context Protocol)来了,它就像是 AI 的 USB-C 插口。

我只需要告诉 MCP Server:

  • 有哪些函数(比如 getWuXingFromGanzhi 和 analyzeDistribution)

  • 函数的定义、权限、调用顺序

  • AI 应该在什么场景调用这些函数

然后:

流程:

用户:今天五行分布怎样?
→ MCP Client → MCP Server
→ Server 通知 AI:你有两个函数,可以先算出五行,再算分布
→ AI 决定调用顺序,获取中间结果,再给出个性化建议
→ MCP Server 返回给 Client → 用户看到结果!

下面模拟这个流程:(实际就是电脑交互过程)

用户:今天五行分布怎样

     我MCPclient: 今天五行分布怎样发给 MCP SERVER。

     腾讯云MCPSERVER: 用户输入的是 今天五行分布怎样。 你有2个函数:1.通过天干地支计算五行,参数是天干地支  2. 通过五行计算分布情况,参数是五行

                     请基于今天日期(甲辰年 壬辰月 癸巳日 丙午时),先调用函数获取五行,再分析分布并提供建议。 

    AI:     调用第一个函数(甲辰年 壬辰月 癸巳日 丙午时)  

     腾讯云MCPSERVER: ["木", "土", "水", "水", "火", "火", "火", "火"]

     AI:     调用第2个函数(["木", "土", "水", "水", "火", "火", "火", "火"])               

      腾讯云MCPSERVER: { "木": 1, "土": 1,"水": 2,"火": 4,"金": 0}

    AI:  今天的五行分布为:火旺(金缺)。火有4个,水有2个,木和土各1个,金为0。火气过旺,建议注意情绪控制,避免上火。

         可多接触水、金属性的事物,如清凉食物、静心冥想、穿戴白色或黑色衣物。 

    我:拿到结果给用户

    用户:拿到最终结果

优势:

  1. 节省 Token:函数定义只注册一次,不用每轮重复贴提示词

  2. 模块复用:别人也能用我的函数,像调用 API 一样

  3. 中间者能力增强:Server 可以动态优化提示词、调整执行顺序

  4. 协议统一:多个系统之间可以“插来插去”

 

那 Agent 呢?

Agent 其实就是把以上所有能力:检索、调用函数、记忆、计划,全都揉到一起!Agent 更像是“有大脑+手脚”的数字员工。

 

以上只是本人当下的拙见,若有错误,还请交流指正!

 

用户留言