一文搞懂MCP协议与Function Call的区别

news/2025/3/25 19:50:35/文章来源:https://www.cnblogs.com/longronglang/p/18787489

一、前言

大家好,我是六哥!

今天咱们聊聊编程里两个听起来有点复杂的概念——MCP协议和函数调用(function call),其实用大白话来讲,它们就是两种不同的“沟通方式”,就像咱们人与人之间交流也有不同的方式一样。下面我就用生活中的例子和Python代码,给大家好好讲讲它们的区别。

二、Function Call是啥

1、生活例子

咱先来说说Function Call。Function Call就好比你去餐厅点菜。你走进餐厅,跟服务员说“给我来一份红烧肉”,服务员听到你的话后,就去厨房把你的需求告诉厨师,厨师按照这个需求去做菜,做好了之后服务员再把菜端给你。在这个过程中,你点菜的这个动作就相当于一次Function Call,你是调用者,服务员是传递需求的媒介,厨师是实际执行任务的人。

2、Python代码例子

def make_red_cooked_pork():return "一份香喷喷的红烧肉"# 调用函数
dish = make_red_cooked_pork()
print(dish)

在这段代码里,make_red_cooked_pork 就是那个“厨师”,它定义了如何做出红烧肉。而 dish = make_red_cooked_pork() 这行代码就是你“点菜”的动作,也就是一次Function Call。调用之后,函数会返回结果,最后把结果打印出来。

3、Function Call的特点

Function Call有个特点,就是它是同步的。啥意思呢?就是说你调用一个函数之后,程序会一直等着这个函数执行完,把结果返回给你,才会继续执行后面的代码。就像你在餐厅点菜后,得一直等着菜做好端上来,才能接着做别的事。

三、MCP协议又是啥

1、生活例子

MCP协议就像是你在网上购物。你在购物平台上下单买了一件衣服,下单之后,你不用一直等着衣服送到你手上才能去做别的事,你可以该干嘛干嘛,该上班上班,该追剧追剧。购物平台会在衣服准备好之后,安排快递给你发货,等快递到了你家附近,会给你发消息通知你取件。在这个过程中,你下单的动作就相当于通过MCP协议发送了一个请求,购物平台和快递就是处理这个请求的系统,它们会在合适的时间给你反馈结果。

2、Python代码例子

import asyncioasync def prepare_clothes():print("开始准备衣服...")await asyncio.sleep(3)  # 模拟准备衣服需要3秒print("衣服准备好啦,开始发货...")return "一件漂亮的衣服"async def order_clothes():task = asyncio.create_task(prepare_clothes())print("下单成功,你可以去做别的事啦。")result = await taskprint("衣服到啦:", result)# 运行异步函数
asyncio.run(order_clothes())

在这段代码里,prepare_clothes 函数就像是购物平台和快递,负责处理你买衣服的请求。order_clothes 函数里,asyncio.create_task(prepare_clothes()) 这行代码就相当于你下了单,程序不会等着 prepare_clothes 函数执行完,而是会继续执行后面的代码,打印出“下单成功,你可以去做别的事啦”。等 prepare_clothes 函数执行完后,再通过 await task 获取结果。

3、MCP协议的特点

MCP协议是异步的。也就是说,你发送一个请求之后,程序不会停下来等结果,而是会继续执行其他代码。等结果出来了,再回来处理这个结果。就像你网上下单后不用一直等着衣服到,还能去做其他事情。

四、MCP协议与Function Call的区别总结

1、同步与异步

Function Call是同步的,调用函数后程序会一直等待函数执行完返回结果,才继续执行后续代码;而MCP协议是异步的,发送请求后程序不会等待结果,会继续执行其他代码,等结果出来再处理。

2、执行方式

Function Call就像你在餐厅点菜,得等菜做好才能接着干别的;MCP协议就像网上购物,下单后可以去做其他事情,等东西到了再处理。

3、应用场景

Function Call适合那些需要立即得到结果,并且后续代码依赖这个结果的场景;MCP协议适合那些处理时间较长,不需要立即得到结果,并且不想让程序阻塞的场景,比如网络请求、文件读写等。

五、结尾

通过上面的生活例子和Python代码,相信大家对MCP协议和Function Call的区别有了更清晰的认识。其实编程里很多概念都能和生活中的事情联系起来,这样理解起来就会容易很多。希望大家都能在AI的道路上越走越顺!

好了本次就先介绍到这里吧 如果觉得对你有用的话 欢迎星标我啊

你们的点赞、在看、留言、分享是我持续更新的最大动力!(求求了)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/904055.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Arduino设计RFID门锁系统

使用基于arduino的RFID锁系统实现无缝,无钥匙进入和增强保护,从而改变您的门安全性。你是否厌倦了每次需要开门时都要找钥匙?不如建一个智能锁系统,你只需刷卡就能开门?在本节中,我们将学习如何使用Arduino构建RFID门锁系统。这是一种既有趣又安全的开门方式。 这个Ardui…

MQ消息持久化解决方案

消息持久化 1. RabbitMQ 发送与消费消息的模型2. 消息丢失的几种情况?生产者发送消息未到达交换机消息到达交换机,没有正确路由到队列MQ 宕机,队列中的消息不见了消费者收到消息,还没消费,消费者宕机3. 如何保证消息不丢失? 3.1 生产者确认机制publisher-confirm消息成功…

『Plotly实战指南』--柱状图绘制高级篇

在数据可视化的世界里,柱状图是一种直观且强大的工具,用于展示数据的分布、比较和趋势。 从基础的柱状图出发,我们可以进一步探索更复杂的图表类型,如分组柱状图和堆积柱状图,它们在处理多维数据和复杂关系时具有独特的优势。 本文将深入探讨如何使用Plotly库绘制这些高级…

读DAMA数据管理知识体系指南28文件和内容管理概念(下)

读DAMA数据管理知识体系指南28文件和内容管理概念(下)1. 文件和档案 1.1. 文件(Document)是包含任务说明,对执行任务或功能的方式和时间的要求以及任务执行和决策的日志等的电子或纸质对象 1.2. 只有部分文件才能称为档案(Record)1.2.1. 档案可用于证明所做的决策和所采取的…

AMD Instinct™MI300系列微架构

AMD Instinct™MI300系列微架构 AMD Instinct MI300系列加速器基于AMD CDNA 3架构,旨在为HPC、人工智能(AI)和机器学习(ML)工作负载提供领先性能。AMD Instinct MI300系列加速器非常适合极端的可扩展性和计算性能,可以在单个服务器到世界上最大的EB级超级计算机的所有设备…

节点级架构与MI300和MI200系列性能计数器和指标

节点级架构 MI300系列节点级架构,显示了8个完全互连的MI300X OAM模块,通过重定时器和HGX连接器连接到(可选)PCIEe交换机。 如图5-9所示,显示了具有双插槽配置的AMD EPYC处理器和八个AMD Instinct MI300X加速器的系统的节点级架构。MI300X OAM通过PCIe Gen 5 x16链路(黄线…

推荐专著《AI芯片开发核心技术详解》(1)、《智能汽车传感器:原理设计应用》(2)、《TVM编译器原理与实践》(3)、《LLVM编译器原理与实践》(4)

4本书推荐《AI芯片开发核心技术详解》、《智能汽车传感器:原理设计应用》、《TVM编译器原理与实践》、《LLVM编译器原理与实践》由清华大学出版社资深编辑赵佳霓老师策划编辑的新书《AI芯片开发核心技术详解》已经出版,京东、淘宝天猫、当当等网上,相应陆陆续续可以购买。该…

GPU到GPU通信选项

GPU到GPU通信选项 将讨论使用AMD Instinct™MI250和AMD InstinctTM MI250X GPU的系统中的GPU到GPU通信选项。每个MI250(X)GPU由两个图形计算芯片(GCD)组成。如图4-20所示,显示了具有4个MI250 GPU(8个GCD)的节点的示意图。每个绿色框代表一个MI250 GPU和两个GCD。GCD通过…

2025年3月月记

2025.3.1 新的一月到来啦!今天干了个啥呢?好像没干啥也是把昨天编程学习的作业做了,待会又要去学S组的知识了,我先去刷题了。。。 OK啊,也是把课学完了,待会我又要去打atcoder了,今天学的是差分约束,其实就是图上的知识,主要的表达形式是:u <= v + w或者u >= v…

Linux版本的MAT(Eclipse Memory Analyzer)内存分析工具使用

首先先下载对应平台的工具 官方地址:https://eclipse.dev/mat/download/ 因为我是arm的架构 所以下载的是arm64的安装包 下载完成后解压 得到以下内容 先修改初始化的启动的内存大小 vim MemoryAnalyzer.ini 主要修改这个值 这个要尽量大点 不然我们的内存分析文件很大 会执行…

【CodeForces训练记录】Codeforces Round 1011 (Div. 2)

训练情况赛后反思 B题因为分讨的问题WA了一发,异或还是不大会做 A题 猜猜题,显然对于字符串全部都是一个字母的,无论怎么换字典序都不可能更小,对于其他情况因为可以选择两个字母互换,我们容易观察到对于某一个字符串一定存在一种换法能让字典序更小(无非就是换头或者换尾…

集美大学课程实验报告-实验3:栈、队列与递归

集美大学课程实验报告-实验3:栈、队列与递归项目名称 内容课程名称 数据结构班级 网安2413指导教师 郑如滨学生姓名 林沁茹学号 202421336067实验项目名称 实验3:栈、队列与递归上机实践日期上机实践时间 2学时一、目的(本次实验所涉及并要求掌握的知识点) 以下内容请根据实…