Function Calling 和 MCP:大模型调用功能的两种方式

Function Calling 和 MCP:大模型调用功能的两种方式

大模型(像我这样的AI)经常需要"借力"来完成任务,比如查天气、算数字。这时候,开发者会给大模型设计一些"工具",主要有两种方式:Function CallingMCP。它们就像大模型的"左右手",各有特点。下面从大模型、开发者、使用者三个角度,带你搞清楚这两者的区别和相似点。


一、从大模型角度:我怎么用这两种方式?

大模型的角色是"发号施令",告诉系统做什么。Function Calling 和 MCP 就像我喊话的两种方式。

Function Calling:喊本地小弟干活

  • 我做什么 :我生成一个指令,比如"get_weather(city='Beijing')",就像喊:"本地小弟,去查北京天气!"
  • 怎么处理:我得知道有哪些本地小弟(内部函数),每个小弟需要啥信息(参数)。比如,我得学会"查天气需要城市名"。
  • 感觉如何:简单直接,小弟就在身边,喊一声就干活。出错了我也能马上知道,调整一下再喊。
  • 例子 :我喊"add(3, 5)",本地小弟算出 8,完事。

MCP:喊外面的快递员送货

  • 我做什么 :我生成一个请求,比如"{'city': 'Beijing'}",就像喊:"快递员,帮我查北京天气!"
  • 怎么处理:我得学会怎么跟外面的快递员(外部API)沟通,写清楚地址(参数格式)。但快递员具体咋送货,我不管。
  • 感觉如何:有点复杂,得写得更规范,不然快递员可能找不到路。反馈慢一点,得等快递员送回来。
  • 例子 :我喊"{'city': 'Beijing'}",快递员跑去天气公司查,回来告诉我"20度"。

大模型眼中的区别

  • Function Calling:像家里有台打印机,直接用就行,简单省心。
  • MCP:像网上订外卖,得填地址等配送,灵活但费点脑子。
  • 共同点:我都得学会"喊话",把任务拆成指令,交给别人干。

二、从开发者角度:我怎么给大模型造工具?

开发者是大模型的"装备师",负责造工具给大模型用。Function Calling 和 MCP 是两种造法。

Function Calling:自己造个工具箱

  • 我做什么 :我在系统里写好一堆函数(比如get_weather()),告诉大模型:"这些是你能用的工具。"
  • 特点:工具都在我家(应用系统),我说了算,想咋改就咋改。速度快,不用联网。
  • 挑战:得提前把工具造好,想加新工具得重新设计。
  • 例子 :我写个calculate_sum(),大模型喊一声,系统立刻算出结果。

MCP:借别人的工具

  • 我做什么:我搭个"中间人"(Controller),帮大模型跟外面的服务(API)对接。比如,找个天气API给大模型用。
  • 特点:不用自己造工具,直接借外面现成的,省事还能用最新服务。但得联网,得看别人脸色(API可能收费或挂掉)。
  • 挑战:得把大模型的指令翻译成API能懂的语言,还要处理网络问题。
  • 例子:我搭个Controller,大模型说"查北京天气",我转成API请求,去外面拿数据。

开发者眼中的区别

  • Function Calling:像自己开个小作坊,工具全自己造,稳但费力。
  • MCP:像找外包公司,省事但得协调好。
  • 共同点:都是给大模型造"功能按钮",让它能干更多事。

三、从使用者角度:我咋感觉这两者?

使用者是大模型的"老板",只管提需求,不管后面咋实现的。

Function Calling:系统自己搞定

  • 我体验啥:我说"北京天气咋样",大模型喊本地小弟,秒回"20度"。
  • 感觉如何:快,稳,完全不知道后面咋弄的,反正结果来了。

MCP:系统找外援

  • 我体验啥:我说"北京天气咋样",大模型喊快递员,可能慢一拍,但还是回"20度"。
  • 感觉如何:差不多,可能偶尔等久点,但结果一样靠谱。

使用者眼中的区别

  • Function Calling:像家里有台咖啡机,按一下就有咖啡。
  • MCP:像点了外卖咖啡,等送来但味道可能更丰富。
  • 共同点:我只管说需求,结果都到手,咋来的我不管。

四、总结对比表

角度 Function Calling(本地小弟) MCP(外部快递员)
大模型 喊本地函数,简单直接,调熟悉的工具 喊外部API,灵活但得学新格式
开发者 自己造工具,稳但费力,速度快 借别人工具,省事但得联网,靠外人
使用者 快而稳,结果秒出 稍慢但一样靠谱,体验差不多
比喻 家里打印机,自己用 网上订外卖,等送来

五、最后说一句

  • 大模型:Function Calling 是我的"内功",MCP 是我的"外援"。
  • 开发者:Function Calling 是自建工厂,MCP 是找外包。
  • 使用者:管它是工厂还是外包,我只要结果!

两种方式各有千秋,开发者选哪种看需求,用户用哪种都爽,大模型呢?努力学会两种喊法就行!

相关推荐
㳺三才人子6 小时前
初探 Flask
后端·python·flask·html
星栈独行6 小时前
我在 Rust 全栈项目里用 JWT 做无状态认证
开发语言·后端·rust·前端框架·开源·github·web
Java爱好狂.6 小时前
Java程序员体系化学习路线(2026最新版)
java·后端·java面试·java架构师·java程序员·java八股文·java学习路线
陈随易6 小时前
Redis 8.8发布,一定要更新
前端·后端·程序员
装不满的克莱因瓶7 小时前
SpringBoot 如何将 lib 目录中jar包打包进最终的jar包里面
spring boot·后端·maven·jar·mvn
ltl7 小时前
Transformer 原论文实验结果:为什么 28.4 BLEU 足以改写路线图
后端
excel8 小时前
为什么我推荐使用 Termius:现代 SSH 工具的完整体验
前端·后端
卷毛的技术笔记9 小时前
Java后端硬核实战:用Spring AI Alibaba+Redis给LLM装上“超强记忆中枢”
java·人工智能·redis·后端·spring·ai·系统架构
IT_陈寒10 小时前
Java的Optional差点让我掉坑里,这几个坑你别踩
前端·人工智能·后端
子兮曰10 小时前
Harness 驾驭工程深度教程:从 AGENTS.md 到全链路 AI 编码基础设施
前端·后端·ai编程