一文搞懂MCP協(xié)議與Function Call的區(qū)別
一、前言
大家好,我是六哥!
今天咱們聊聊編程里兩個聽起來有點(diǎn)復(fù)雜的概念——MCP協(xié)議和函數(shù)調(diào)用(function call),其實(shí)用大白話來講,它們就是兩種不同的“溝通方式”,就像咱們?nèi)伺c人之間交流也有不同的方式一樣。下面我就用生活中的例子和Python代碼,給大家好好講講它們的區(qū)別。
二、Function Call是啥
1、生活例子
咱先來說說Function Call。Function Call就好比你去餐廳點(diǎn)菜。你走進(jìn)餐廳,跟服務(wù)員說“給我來一份紅燒肉”,服務(wù)員聽到你的話后,就去廚房把你的需求告訴廚師,廚師按照這個需求去做菜,做好了之后服務(wù)員再把菜端給你。在這個過程中,你點(diǎn)菜的這個動作就相當(dāng)于一次Function Call,你是調(diào)用者,服務(wù)員是傳遞需求的媒介,廚師是實(shí)際執(zhí)行任務(wù)的人。
2、Python代碼例子
def make_red_cooked_pork():
return "一份香噴噴的紅燒肉"
# 調(diào)用函數(shù)
dish = make_red_cooked_pork()
print(dish)
在這段代碼里,make_red_cooked_pork 就是那個“廚師”,它定義了如何做出紅燒肉。而 dish = make_red_cooked_pork() 這行代碼就是你“點(diǎn)菜”的動作,也就是一次Function Call。調(diào)用之后,函數(shù)會返回結(jié)果,最后把結(jié)果打印出來。
3、Function Call的特點(diǎn)
Function Call有個特點(diǎn),就是它是同步的。啥意思呢?就是說你調(diào)用一個函數(shù)之后,程序會一直等著這個函數(shù)執(zhí)行完,把結(jié)果返回給你,才會繼續(xù)執(zhí)行后面的代碼。就像你在餐廳點(diǎn)菜后,得一直等著菜做好端上來,才能接著做別的事。
三、MCP協(xié)議又是啥
1、生活例子
MCP協(xié)議就像是你在網(wǎng)上購物。你在購物平臺上下單買了一件衣服,下單之后,你不用一直等著衣服送到你手上才能去做別的事,你可以該干嘛干嘛,該上班上班,該追劇追劇。購物平臺會在衣服準(zhǔn)備好之后,安排快遞給你發(fā)貨,等快遞到了你家附近,會給你發(fā)消息通知你取件。在這個過程中,你下單的動作就相當(dāng)于通過MCP協(xié)議發(fā)送了一個請求,購物平臺和快遞就是處理這個請求的系統(tǒng),它們會在合適的時間給你反饋結(jié)果。
2、Python代碼例子
import asyncio
async def prepare_clothes():
print("開始準(zhǔn)備衣服...")
await asyncio.sleep(3) # 模擬準(zhǔn)備衣服需要3秒
print("衣服準(zhǔn)備好啦,開始發(fā)貨...")
return "一件漂亮的衣服"
async def order_clothes():
task = asyncio.create_task(prepare_clothes())
print("下單成功,你可以去做別的事啦。")
result = await task
print("衣服到啦:", result)
# 運(yùn)行異步函數(shù)
asyncio.run(order_clothes())
在這段代碼里,prepare_clothes 函數(shù)就像是購物平臺和快遞,負(fù)責(zé)處理你買衣服的請求。order_clothes 函數(shù)里,asyncio.create_task(prepare_clothes()) 這行代碼就相當(dāng)于你下了單,程序不會等著 prepare_clothes 函數(shù)執(zhí)行完,而是會繼續(xù)執(zhí)行后面的代碼,打印出“下單成功,你可以去做別的事啦”。等 prepare_clothes 函數(shù)執(zhí)行完后,再通過 await task 獲取結(jié)果。
3、MCP協(xié)議的特點(diǎn)
MCP協(xié)議是異步的。也就是說,你發(fā)送一個請求之后,程序不會停下來等結(jié)果,而是會繼續(xù)執(zhí)行其他代碼。等結(jié)果出來了,再回來處理這個結(jié)果。就像你網(wǎng)上下單后不用一直等著衣服到,還能去做其他事情。
四、MCP協(xié)議與Function Call的區(qū)別總結(jié)
1、同步與異步
Function Call是同步的,調(diào)用函數(shù)后程序會一直等待函數(shù)執(zhí)行完返回結(jié)果,才繼續(xù)執(zhí)行后續(xù)代碼;而MCP協(xié)議是異步的,發(fā)送請求后程序不會等待結(jié)果,會繼續(xù)執(zhí)行其他代碼,等結(jié)果出來再處理。
2、執(zhí)行方式
Function Call就像你在餐廳點(diǎn)菜,得等菜做好才能接著干別的;MCP協(xié)議就像網(wǎng)上購物,下單后可以去做其他事情,等東西到了再處理。
3、應(yīng)用場景
Function Call適合那些需要立即得到結(jié)果,并且后續(xù)代碼依賴這個結(jié)果的場景;MCP協(xié)議適合那些處理時間較長,不需要立即得到結(jié)果,并且不想讓程序阻塞的場景,比如網(wǎng)絡(luò)請求、文件讀寫等。
五、結(jié)尾
通過上面的生活例子和Python代碼,相信大家對MCP協(xié)議和Function Call的區(qū)別有了更清晰的認(rèn)識。其實(shí)編程里很多概念都能和生活中的事情聯(lián)系起來,這樣理解起來就會容易很多。希望大家都能在AI的道路上越走越順!
好了本次就先介紹到這里吧 如果覺得對你有用的話 歡迎星標(biāo)我啊
你們的點(diǎn)贊、在看、留言、分享是我持續(xù)更新的最大動力!(求求了)
優(yōu)秀不夠,你是否無可替代
軟件測試交流QQ群:721256703,期待你的加入!!
歡迎關(guān)注我的微信公眾號:軟件測試君


浙公網(wǎng)安備 33010602011771號