MCP与Function Calling有什么区别

人工智能 潘老师 4周前 (03-25) 102 ℃ (0) 扫码查看

最近,MCP持续火爆,今天,咱们就来深入探讨一下Function Calling(函数调用)和MCP之间的区别。

一、Function Calling究竟是什么?

Function Calling,也就是函数调用,是部分大模型所具备的一种意图识别能力。简单来说,大模型能够对用户输入的自然语言进行分析,进而识别出其中与传入工具列表相关的意图。不过要注意,大模型本身并不会直接去调用这些函数。它会依据识别出的意图,生成一个函数调用指令,然后由模型的调用方负责执行。

咱们通过一个天气查询的例子来详细说明。假设用户询问“重庆天气如何”,具体流程是这样的:

  1. 用户提出“重庆天气如何”的问题。
  2. 客户端将请求进行封装,包含模型、参数以及工具库等信息。
  3. 客户端向大模型发起请求。
  4. 大模型识别到意图为getWeather,并确定参数为城市“重庆” 。
  5. 大模型返回包含意图的结果。
  6. 客户端判断意图,如果是查询天气,就向天气服务器发起请求。
  7. 天气服务器返回天气查询结果。
  8. 最终,客户端将天气结果返回给用户。

随着工具数量的不断增加,问题就出现了。在客户端上,需要编写各种工具的调用和声明代码。工具越来越多,不仅代码量庞大,维护起来也变得更加困难。

二、MCP登场,解决难题

为了解决上述问题,MCP(一种协议)应运而生。

(一)MCP的角色分工

MCP就像是一个协调者,它给相关组件重新命名并明确了职责。

  • MCP服务器:主要负责声明MCP工具,同时提供工具调用的功能。打个比方,它就像是一个工具库的管理员,管理着各种工具,并负责把工具提供给需要的人使用。
  • MCP客户端:承担着管理和连接多个MCP服务器的任务,在大模型和MCP服务器之间起到桥梁的作用。可以把它理解为一个采购员,负责从不同的工具库(MCP服务器)采购工具,然后提供给大模型使用。

(二)MCP的交互逻辑

还是以查询重庆天气为例,在MCP参与的情况下,交互流程如下:

  1. 用户询问“重庆天气如何”。
  2. MCP客户端向MCP服务器发送“你有什么工具吗(tool/list)?”的询问。
  3. MCP服务器回复,例如“我可以查天气”“我可以存文件”等工具信息。
  4. MCP客户端整理所有获取到的工具信息。
  5. MCP客户端带着整理好的工具信息(如[查天气,存文件])和用户的问题(重庆天气如何),请求大模型识别意图。
  6. 大模型分析后告知MCP客户端,用户的意思是要查天气,并明确具体参数(tool: 查天气,city: 重庆)。
  7. MCP客户端根据这些信息调用天气服务(tool/call)。
  8. 天气服务将查询到的天气数据返回。
  9. MCP客户端对返回的天气数据进行整理(因为可能返回的数据格式是JSON,需要处理)。
  10. MCP客户端整理好数据后,比如得到“哇,40℃,人家好热呀~”这样的结果。
  11. 最终将整理后的结果呈现给用户。

在没有MCP之前,使用Function Calling去请求第三方服务时,客户端需要编写大量代码来对接各种不同标准的服务。而有了MCP标准协议后,情况就大不一样了。客户端无需再承担这些繁琐的工作,函数声明和调用逻辑都交给了MCP服务器。MCP客户端只需要专注于整理工具信息以及执行调用操作即可。这种方式实现了声明和调用的分离,只要对方按照标准实现了MCP服务器,就能接入到支持MCP的客户端中。

三、总结与实践体验

通过上述对比和解释,相信大家对Function Calling和MCP的区别有了更清晰的认识。如果文中内容存在错误,欢迎大家批评指正。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/ai/16261.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】