
如何在Python中使用ChatGPT API?
MCP 是否要取代 Function Calling?下文詳細(xì)剖析。
Function Calling 是由 OpenAI 等公司推動(dòng)的一種技術(shù),它允許大語言模型(LLM)通過自然語言指令與外部工具和服務(wù)進(jìn)行交互,從而將自然語言轉(zhuǎn)換為具體的 API 調(diào)用。這一技術(shù)解決了大語言模型在訓(xùn)練完成后知識更新停滯的問題,使大模型能夠獲取實(shí)時(shí)信息,比如:當(dāng)前的天氣、股市收盤點(diǎn)數(shù)等。
Function Calling 的工作原理可以通過以下4個(gè)步驟來理解:
識別需求:大模型識別出用戶的問題需要調(diào)用外部 API 來獲取實(shí)時(shí)信息。例如:用戶詢問“今天北京的天氣如何?”大模型會(huì)識別出這是一個(gè)關(guān)于實(shí)時(shí)天氣的問題。
選擇函數(shù):大模型從可用的函數(shù)庫中選擇合適的函數(shù)。在這個(gè)例子中,大模型會(huì)選擇 get_current_weather 函數(shù)。
準(zhǔn)備參數(shù):大模型準(zhǔn)備調(diào)用函數(shù)所需的參數(shù)。例如:
{
"location":?"北京",
"unit":?"celsius"
}
調(diào)用函數(shù):AI 應(yīng)用使用這些參數(shù)調(diào)用實(shí)際的天氣 API,獲取北京的實(shí)時(shí)天氣數(shù)據(jù)。
整合回答:大模型將獲取的數(shù)據(jù)整合成一個(gè)完整的回答,比如:“根據(jù)最新數(shù)據(jù),北京今天的天氣晴朗,當(dāng)前溫度23°C,濕度45%,微風(fēng)。今天的最高溫度預(yù)計(jì)為26°C,最低溫度為18°C。”
對于開發(fā)者來說,使用 LLM 的 Function Calling 入門相對容易。
然而,F(xiàn)unction Calling 也有一些局限性:
Function Calling 是一種強(qiáng)大的工具,它為大語言模型提供了與外部工具和服務(wù)交互的能力,從而解決了大模型知識更新停滯的問題。然而,它的局限性在于缺乏跨模型的一致性和平臺(tái)依賴性。盡管如此,F(xiàn)unction Calling 仍然是一個(gè)重要的技術(shù),尤其是在需要快速實(shí)現(xiàn)特定功能時(shí)。未來,隨著技術(shù)的不斷發(fā)展,我們期待看到更多能夠克服這些局限性的解決方案。
MCP(Model Context Protocol)是由 Anthropic 公司提出的一種協(xié)議,旨在解決不同大語言模型(LLM)與不同外部工具集成的標(biāo)準(zhǔn)化問題。通過 MCP,開發(fā)者能夠以一種統(tǒng)一的方式將各種數(shù)據(jù)源和工具連接到 AI 大模型,從而提升大模型的實(shí)用性和靈活性。
目前,MCP 生態(tài)已經(jīng)得到了廣泛的支持,包括 Anthropic 的 Claude 系列、OpenAI 的 GPT 系列、Meta 的 Llama 系列、DeepSeek、阿里的通義系列以及 Anysphere 的 Cursor 等主流模型均已接入 MCP 生態(tài)。
MCP 采用了客戶端-服務(wù)器架構(gòu),主要包括以下幾個(gè)核心組件:
MCP 主機(jī)(Hosts)
MCP 客戶端(Clients)
MCP 服務(wù)器(Servers)
數(shù)據(jù)源
MCP 通過其客戶端-服務(wù)器架構(gòu)和標(biāo)準(zhǔn)化的協(xié)議,為 AI 大模型與外部工具和數(shù)據(jù)源的集成提供了一個(gè)高效、安全且靈活的解決方案。它不僅解決了不同大模型與工具之間的兼容性問題,還為開發(fā)者提供了一個(gè)豐富的生態(tài)系統(tǒng),使得 AI 應(yīng)用的開發(fā)和部署變得更加簡單和高效。
MCP 不是 Function Calling 的替代,而是基于 Function Calling 的工具箱。
很多人誤認(rèn)為,MCP 是對傳統(tǒng) Function Calling 的一種替代。而實(shí)際上,兩者并非替代關(guān)系,而是緊密合作的關(guān)系。
因此 MCP 不是要取代 Function Calling,而是在 Function Calling 基礎(chǔ)上,聯(lián)合 Agent 一起去完成復(fù)雜任務(wù)。
如果把整個(gè)工具調(diào)用的流程剖析開來,實(shí)際是“Function Calling + Agent + MCP 系統(tǒng)”的組合。
用一句話說清楚:
用一個(gè)比喻來理解:
在過去沒有 MCP 時(shí):
而有了 MCP 后:
但大模型的 Function Calling 沒有任何變化。
{tool: “買咖啡”, "type": "美式"}
這個(gè)形式。不過在過去,有人會(huì)把這一整套 Function Calling + Agent + API 的模式叫做一個(gè) Function Calling,所以會(huì)引起混淆。
通過區(qū)分 Function Calling 和 MCP,我們可以清晰地看出,MCP 并不負(fù)責(zé)決定使用哪個(gè)工具,也不進(jìn)行任務(wù)規(guī)劃或理解用戶意圖。這些是 Agent 層面的工作。MCP 只是提供了一個(gè)統(tǒng)一的工具接口,成為了產(chǎn)業(yè)內(nèi)認(rèn)可的工具調(diào)用標(biāo)準(zhǔn)協(xié)議。
原文轉(zhuǎn)載自:https://mp.weixin.qq.com/s/-9VgvTPPe75IPEjlr5vYzQ