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 是找外包。
  • 使用者:管它是工厂还是外包,我只要结果!

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

相关推荐
David爱编程33 分钟前
深度解析:synchronized 性能演进史,从 JDK1.6 到 JDK17
java·后端
脑子慢且灵1 小时前
【JavaWeb】一个简单的Web浏览服务程序
java·前端·后端·servlet·tomcat·web·javaee
用户298698530141 小时前
如何在 C# 中用表格替换 Word 文档中的文本?
后端
山东小木2 小时前
JBoltAI需求分析大师:基于SpringBoot的大模型智能需求文档生成解决方案
人工智能·spring boot·后端·需求分析·jboltai·javaai·aigs
Moonbit2 小时前
MoonBit 再次走进清华:张宏波受邀参加「思源计划」与「程序设计训练课」
前端·后端·编程语言
RestCloud2 小时前
一站式数据集成:iPaaS 如何让开发者和业务人员都满意?
前端·后端·架构
稻草猫.2 小时前
Java多线程(一)
java·后端·java-ee·idea
Java中文社群2 小时前
炸裂:SpringAI新版发布,终于支持断线重连了!
java·后端·ai编程
哈喽姥爷3 小时前
Spring Boot--Bean的扫描和注册
java·spring boot·后端·bean的扫描和注册
problc3 小时前
Spring Boot `@Service` 互相调用全攻略:`@Autowired` vs `@Resource`
java·spring boot·后端