大模型從聊天走向智能體,智能體開(kāi)發(fā)協(xié)議之——MCP協(xié)議的初步理解 原創(chuàng)
“ 智能體應(yīng)用是大模型應(yīng)用的一個(gè)重點(diǎn)方式,而怎么才能做出一個(gè)合格的智能體是很多人都在考慮的問(wèn)題?!?/strong>
對(duì)大模型有過(guò)了解的人應(yīng)該都知道,大模型應(yīng)用目前主要還處于探索階段,而關(guān)于大模型應(yīng)用的技術(shù)也是日新月異,在不斷持續(xù)的發(fā)展。
而關(guān)于大模型的應(yīng)用目前的主要形式是聊天,然后通過(guò)大模型的自身能力去完成一些工作;比如生成內(nèi)容,總結(jié)文檔等。但我們對(duì)大模型的期待要遠(yuǎn)遠(yuǎn)高于簡(jiǎn)單的聊天,我們需要的是大模型根據(jù)我們的指令去完成具體的任務(wù)。
但大模型本身又沒(méi)有使用外部工具的能力,因此openai就提出了一項(xiàng)新的技術(shù)-Function call,通過(guò)Function call大模型就能實(shí)現(xiàn)使用外部工具的能力,而這能大大提升大模型的能力范圍,使得大模型能夠真正解決實(shí)際問(wèn)題。
但是Function call也有很多缺陷,比如說(shuō)沒(méi)有統(tǒng)一的標(biāo)準(zhǔn),接口實(shí)現(xiàn)復(fù)雜;因此最近一段時(shí)間爆火的MCP就出現(xiàn)了。
MCP本質(zhì)上是一種協(xié)議,類似于互聯(lián)網(wǎng)界的Http協(xié)議,硬件中的USB-C接口,它提供一個(gè)統(tǒng)一的標(biāo)準(zhǔn),讓大模型能夠使用統(tǒng)一的方式去使用外部工具,這樣就可以大大提升效率,加快大模型應(yīng)用的發(fā)展。
協(xié)議本質(zhì)上是一種標(biāo)準(zhǔn),大家都按照統(tǒng)一的標(biāo)準(zhǔn)進(jìn)行設(shè)計(jì)和開(kāi)發(fā),這樣就可以節(jié)省大量的時(shí)間和成本,提升效率。
當(dāng)然,MCP協(xié)議雖然說(shuō)類似于HTTP協(xié)議和USB-C標(biāo)準(zhǔn),但到底能不能真正成為大模型領(lǐng)域的標(biāo)準(zhǔn)還有待商榷。
MCP協(xié)議
MCP協(xié)議采用的還是經(jīng)典的C-S架構(gòu),主要由客戶端和服務(wù)端組成;只不過(guò)在MCP協(xié)議中,有了更多的概念,而其核心概念主要有三個(gè)——Host,Client和Server。
其工作流程如下,以找電腦上的文件為例:
- Host:Claude Desktop 作為 Host,負(fù)責(zé)接收你的提問(wèn)并與 Claude 模型交互。
- Client:當(dāng) Claude 模型決定需要訪問(wèn)你的文件系統(tǒng)時(shí),Host 中內(nèi)置的 MCP Client 會(huì)被激活。這個(gè) Client 負(fù)責(zé)與適當(dāng)?shù)?MCP Server 建立連接。
- Server:在這個(gè)例子中,文件系統(tǒng) MCP Server 會(huì)被調(diào)用。它負(fù)責(zé)執(zhí)行實(shí)際的文件掃描操作,訪問(wèn)你的桌面目錄,并返回找到的文檔列表。
整個(gè)流程是這樣的:你的問(wèn)題 → Claude Desktop(Host) → Claude 模型 → 需要文件信息 → MCP Client 連接 → 文件系統(tǒng) MCP Server → 執(zhí)行操作 → 返回結(jié)果 → Claude 生成回答 → 顯示在 Claude Desktop 上。
這種架構(gòu)設(shè)計(jì)使得 Claude 可以在不同場(chǎng)景下靈活調(diào)用各種工具和數(shù)據(jù)源,而開(kāi)發(fā)者只需專注于開(kāi)發(fā)對(duì)應(yīng)的 MCP Server,無(wú)需關(guān)心 Host 和 Client 的實(shí)現(xiàn)細(xì)節(jié)。
這里關(guān)于Client和Server都很好理解,可能很多人有疑問(wèn)的是Host和Client之間的關(guān)系。
其實(shí),Host和Cllient的關(guān)系很好理解;簡(jiǎn)單來(lái)說(shuō)就類似于我們自己的電腦,Host電腦的系統(tǒng),我們使用電腦寫文章,刷網(wǎng)頁(yè),看視頻等等;而Client就是我們的網(wǎng)卡,我們需要進(jìn)行網(wǎng)絡(luò)請(qǐng)求的時(shí)候就通過(guò)網(wǎng)卡(Client)去調(diào)用外部服務(wù)獲取數(shù)據(jù),然后再在電腦中顯示。
但這里有一個(gè)問(wèn)題就是,我們使用電腦使用什么工具,什么時(shí)候使用這些工具,是由我們用戶決定的;但在MCP中,使用什么工具和怎么使用這些工具,是由大模型自己理解用戶的意圖之后,然后決定使用哪些工具。
而這一步事實(shí)上是根據(jù)Prompt engineering提示詞工程來(lái)實(shí)現(xiàn)的;簡(jiǎn)單來(lái)說(shuō)就是通過(guò)JSON或其它格式的數(shù)據(jù)按照MCP的客戶端要求進(jìn)行約束,然后根據(jù)這些描述來(lái)決定怎么使用這些工具;本質(zhì)上就是一個(gè)Schema。
當(dāng)然,由于MCP采用的是C-S架構(gòu),因此網(wǎng)絡(luò)通訊也成了其必不可少的一環(huán);而在MCP的網(wǎng)絡(luò)通訊中主要使用了兩種協(xié)議:
1. stdio standard input/output 標(biāo)準(zhǔn)輸入輸出 適用于本地調(diào)用
2. SSE Server-sent events 服務(wù)端推送協(xié)議
通過(guò)這兩種協(xié)議就可以實(shí)現(xiàn)MCP客戶端與服務(wù)端的通訊能力。
MCP協(xié)議現(xiàn)在還無(wú)法完全取代Function call的功能,而且Function call的能力也在不斷升級(jí),因此最后鹿死誰(shuí)手還不太好說(shuō)。
本文轉(zhuǎn)載自公眾號(hào)AI探索時(shí)代 作者:DFires
原文鏈接:??https://mp.weixin.qq.com/s/TjKysHt1L3QgFhmWgGGTew??
