今天凌晨2點(diǎn),OpenAI對(duì)Agent SDK進(jìn)行了重大更新支持MCP服務(wù),可以統(tǒng)一接口標(biāo)準(zhǔn)解鎖無限工具。
現(xiàn)在Agent可以快速集成網(wǎng)絡(luò)搜索、專業(yè)分析、本地查詢、網(wǎng)絡(luò)追蹤等各式各樣的工具,這對(duì)于開發(fā)超復(fù)雜自動(dòng)化智能體來說幫助巨大。
例如,在開發(fā)一個(gè)需要同時(shí)進(jìn)行文件處理、數(shù)據(jù)查詢和網(wǎng)絡(luò)信息收集的智能體時(shí),開發(fā)者可以通過 MCP 服務(wù)器分別集成文件系統(tǒng)工具、數(shù)據(jù)庫查詢工具和網(wǎng)絡(luò)爬蟲工具,更高效地完成復(fù)雜任務(wù)。
連OpenAI聯(lián)合創(chuàng)始人兼首席執(zhí)行官Sam Altman也特意發(fā)文大贊MCP,可見其對(duì)Agent的重要性。
開源地址:https://github.com/openai/openai-agents-python
可能很多人會(huì)對(duì)MCP比較陌生,「AIGC開放社區(qū)」先為大家簡單介紹一下技術(shù)概念。MCP全稱為Model Context Protocol,是一種專為大模型開放的統(tǒng)一開放接口。
更直白一點(diǎn),你可以把MCP看成大模型的“USB接口”,任何符合接口的工具,例如,U盤、移動(dòng)硬盤、網(wǎng)絡(luò)適配器、外置網(wǎng)卡都能插在上面,這下知道為啥是解鎖無限工具了吧。
MCP的核心框架一共由模型、上下文、協(xié)議三個(gè)關(guān)鍵部分組成:模型是系統(tǒng)的邏輯核心,定義了數(shù)據(jù)的結(jié)構(gòu)、決策的邏輯以及系統(tǒng)如何解釋信息。在傳統(tǒng)軟件開發(fā)中,模型可以通過面向?qū)ο缶幊棠P?、?shù)據(jù)庫架構(gòu)或AI/ML模型來實(shí)現(xiàn)。在AI應(yīng)用中,模型可能是理解語言的神經(jīng)網(wǎng)絡(luò)、處理圖像的深度學(xué)習(xí)模型,或者是進(jìn)行預(yù)測分析的機(jī)器學(xué)習(xí)算法。
在企業(yè)軟件中,模型可能是指導(dǎo)客戶互動(dòng)的實(shí)體關(guān)系模型。總之模型是系統(tǒng)的基礎(chǔ),決定了系統(tǒng)如何處理和理解數(shù)據(jù)。
上下文為模型提供了運(yùn)行的環(huán)境,決定了模型在不同條件下的行為。包括用戶交互、環(huán)境因素和系統(tǒng)狀態(tài)等變量。例如,一個(gè)AI聊天機(jī)器人會(huì)根據(jù)對(duì)話的上下文生成不同的回答,就像金融預(yù)測模型會(huì)根據(jù)經(jīng)濟(jì)趨勢調(diào)整預(yù)測結(jié)果一樣。沒有適當(dāng)?shù)纳舷挛?,模型可能?huì)產(chǎn)生不相關(guān)或錯(cuò)誤的輸出。上下文的動(dòng)態(tài)性,能幫助系統(tǒng)能夠根據(jù)實(shí)時(shí)數(shù)據(jù)和環(huán)境變化調(diào)整其行為。
協(xié)議是通信的橋梁定義了系統(tǒng)內(nèi)不同組件之間的交互規(guī)則。確保了模型和上下文之間的通信,使得上下文的變化能夠正確影響模型,反之亦然。
在實(shí)際應(yīng)用中,協(xié)議管理微服務(wù)之間的數(shù)據(jù)交換、AI組件之間的交互,甚至是Web應(yīng)用中的API通信。協(xié)議確保了分布式環(huán)境中的數(shù)據(jù)一致性、安全性和效率。
MCP對(duì)Agent有哪些好處
首先MCP為Agent提供了標(biāo)準(zhǔn)化的方式來接入各種工具和數(shù)據(jù)源,無論是本地運(yùn)行的工具,例如通過stdio服務(wù)器,還是遠(yuǎn)程托管的服務(wù)HTTP over SSE服務(wù), Agent都可以通過統(tǒng)一的接口與它們進(jìn)行交互,極大擴(kuò)展了第三方工具庫。
例如,在金融領(lǐng)域,Agent 可以接入股票分析的MCP工具。當(dāng)用戶詢問某只股票的詳細(xì)信息時(shí),Agent 可以調(diào)用該工具,快速獲取股票的實(shí)時(shí)價(jià)格、歷史走勢、財(cái)務(wù)指標(biāo)等數(shù)據(jù),并進(jìn)行深入分析,為用戶提供專業(yè)的投資建議。
這種標(biāo)準(zhǔn)化的接入方式極大地減少了Agent與不同工具集成時(shí)的復(fù)雜性,并且由于MCP定義了清晰的協(xié)議,Agent可以輕松地接入新的工具和服務(wù),而無需對(duì)Agent的核心邏輯進(jìn)行大量的修改,這使得Agent能夠快速適應(yīng)新的應(yīng)用場景和需求。
此外,MCP還為Agent帶來了動(dòng)態(tài)工具發(fā)現(xiàn)的能力。每次Agent運(yùn)行時(shí),SDK會(huì)調(diào)用MCP服務(wù)器的方法,動(dòng)態(tài)獲取當(dāng)前可用的工具列表。幫助Agent可以實(shí)時(shí)了解哪些工具是可用的,而無需在代碼中硬編碼工具信息。
這種動(dòng)態(tài)發(fā)現(xiàn)機(jī)制賦予了Agent極高的靈活性和適應(yīng)性,使其能夠適應(yīng)工具的變化,例如工具的新增、刪除或更新。如果工具列表發(fā)生變化,Agent可以立即感知并調(diào)整其行為,從而更好地應(yīng)對(duì)動(dòng)態(tài)的環(huán)境和需求。
在性能優(yōu)化方面,MCP同樣表現(xiàn)出色。支持對(duì)工具列表進(jìn)行緩存,Agent可以在多次運(yùn)行中復(fù)用工具列表,從而減少每次運(yùn)行時(shí)調(diào)用工具的延遲,能夠顯著提升Agent的自動(dòng)化效率。
同時(shí)Agent僅在需要時(shí)調(diào)用MCP服務(wù)器的工具,而不是在初始化時(shí)加載所有工具。這種按需調(diào)用的方式可以減少資源消耗,提高系統(tǒng)的整體性能。
在開發(fā)方面,MCP也極大地簡化了開發(fā)工作。開發(fā)者可以通過簡單的配置將MCP服務(wù)器添加到Agent中,而無需編寫大量的代碼來實(shí)現(xiàn)工具的接入邏輯。這大大簡化了開發(fā)流程,縮短了開發(fā)周期。
由于工具的接入是通過MCP協(xié)議標(biāo)準(zhǔn)化的,開發(fā)者可以更容易地對(duì)工具進(jìn)行調(diào)試和測試。同時(shí),工具的獨(dú)立性也使得問題定位更加方便,進(jìn)一步提升了開發(fā)效率。
MCP還實(shí)現(xiàn)了解耦與模塊化的設(shè)計(jì)。它將工具和數(shù)據(jù)源的實(shí)現(xiàn)細(xì)節(jié)與Agent的邏輯分離,Agent不需要關(guān)心工具的具體實(shí)現(xiàn),只需要通過MCP協(xié)議與工具交互。這種解耦設(shè)計(jì)使得Agent的代碼更加簡潔、易于維護(hù)。
同時(shí),工具可以作為獨(dú)立的模塊通過MCP服務(wù)器提供給Agent。開發(fā)者可以獨(dú)立開發(fā)和部署工具,而無需修改Agent的代碼。這種模塊化方式使得系統(tǒng)的各個(gè)部分可以獨(dú)立升級(jí)和優(yōu)化,進(jìn)一步提升了系統(tǒng)的靈活性和可維護(hù)性。