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

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

相关推荐
风象南5 分钟前
SpringBoot实现单点登录(SSO)的4种方案
java·spring boot·后端
程序员一诺17 分钟前
【Flask开发】嘿马文学web完整flask项目第3篇:2.用户认证,2.用户认证【附代码文档】
后端·python·flask·框架
慕容莞青8 小时前
MATLAB语言的进程管理
开发语言·后端·golang
陈明勇8 小时前
用 Go 语言轻松构建 MCP 客户端与服务器
后端·go·mcp
麻芝汤圆9 小时前
MapReduce 的广泛应用:从数据处理到智能决策
java·开发语言·前端·hadoop·后端·servlet·mapreduce
努力的搬砖人.9 小时前
java如何实现一个秒杀系统(原理)
java·经验分享·后端·面试
怒放吧德德10 小时前
实际应用:使用Nginx实现代理与服务治理
后端·nginx
6<710 小时前
【go】空接口
开发语言·后端·golang
Asthenia041210 小时前
BCrypt vs MD5:加盐在登录流程和数据库泄露中的作用
后端
追逐时光者10 小时前
由 MCP 官方推出的 C# SDK,使 .NET 应用程序、服务和库能够快速实现与 MCP 客户端和服务器交互!
后端·.net·mcp