從單一場景到復雜場景,聊聊LLMs中Function calling到MCP的技術演進
對于使用大模型(LLMs)的人來說,可能更熟悉的是MCP多一些,而對于Function calling其實更偏于技術層面的東西,但是從應用場景上二者還是有些相似之處。
或者簡單來說,在沒有MCP協議之前,想要通過構建一個AI應用需要依賴的就是Function calling,簡單來說它就是函數調用,這個函數可以是你所期望讀取信息的任何接口,比如要調用微信公眾號的開放接口,就可以定一個Function calling來通過http來調用。
Functioncalling的核心能力,正如OpenAI官網介紹:為模型提供新的功能和數據,使它們能夠遵循指令并響應提示,使其能夠與外部系統交互并訪問訓練數據之外的實時數據。這里的核心是外部交互和實時數據
Function Calling 一般的過程如下:
將用戶的自然語言輸入與已有函數的描述作為輸入參數傳給 LLM;
- LLM 結合輸入參數,決定調用哪些函數,并指明必要參數(如函數的入參),進行格式化(如 JSON、XML 格式)的輸出;
- 用戶端接收到 LLM 格式化的函數調用后,對本地的函數進行調用,得到結果;
- 將得到的函數結果傳給 LLM,使得 LLM 有了所需的上下文信息。
對于大模型來說,它的內容都是經過預訓練得到的,所謂預訓練就是獲取網絡數據,然后將數據歸納清楚之后,給到大模型能夠識別的數據結構,再結合算法、算力來訓練模型的能力,簡單來說就是讀書、學習、思考的過程。
但是它有一個問題,就是只能知道自己過往學習到的東西,對于即時性的內容,它感知不到的,例如對于chatGPT-5來說,它的訓練數據的采集截止日期是:2024年6月。

也就是說,2024年6月之后的數據原則上它都不知道。
但是現在它通過封裝了API能力結合網絡搜索(爬蟲),就可以組合出一個智能實時檢索+問答能力,它就可以不再依托于模型本身訓練數據,而是具備對外實施擴展數據能力,類似在搜索引擎上面加一個智能體。
Function calling 調用流程
Function calling是通過 OpenAI API 在應用程序和模型之間進行的多步驟對話,調用流程包括五個步驟:
- 向模型發起請求,它可能調用的工具
- 從模型接收工具調用
- 使用工具調用的輸入在應用端執行代碼
- 使用工具輸出向模型發起第二次請求
- 從模型接收最終響應(或更多工具調用)

Function calling實際上就是結合LLM本身的能力,其實我覺得Function calling是一個復雜的技術工程,從單一的場景到復雜的場景,所要維護的API服務的數量就會非常龐大。
而在說到MCP(Model Context Protocol),MCP相對于function calling來說,可以說是一個一站式的能力,當然它也有一定的問題。
MCP 的核心理念:分而治之!MCP 通過將工具與其使用者(AI)分離來解決這個問題:
MCP Server 是實際接口服務的地址,例如天氣預報或郵件管理、內部系統地址鏈接等等都放在這里,它完全獨立于 AI 運行,可以用任何編程語言編寫。
MCP 客戶端 作為連接器(通常是 AI Agent的一部分)。它負責查找可用的工具,幫助 AI 正確格式化請求,并處理與服務器之間的通信。

MCP 的核心作用
- MCP補充了人工智能應用中,和內部系統對接的短板。
- 通過插件式的方式提升了AI應用的內部靈活性,每個插件都可以靈活調用、獨立維護。
- 幾乎所有的數據庫、開源系統都可以構建一個獨立的MCP出來,擴大在AI應用的使用場景。
什么時候應該用 MCP 而不是 Function calling?
- 如果你只是調用一個簡單的 API(比如獲取天氣或股票價格),函數調用就足夠了。
- 如果你需要 AI 與多個工具交互、跟蹤上下文或在不進行持續請求的情況下獲取實時更新,MCP 就是一個確定性的解決方案。
例如,想象你正在構建一個 AI 編程助手:
- 使用函數調用,AI 可以獲取函數定義,但如果后來你要調試某些內容,你必須手動調用另一個函數來獲取日志、依賴項等。
- 使用 MCP,當 AI 詢問某個函數時,IDE 可以自動發送調試信息,這使得它變得非常智能。
Function calling與 MCP:一種互補關系
雖然Function calling和 MCP 都是將 LLM 與企業系統集成的重要組成部分,但它們解決的是不同的挑戰:
? Function calling專注于將提示轉換為可操作的指令,它是 LLM 驅動的,并且在不同的服務接口之間存在差異,目前還沒有通用的標準。
? MCP 標準化了這些指令的執行,實現了跨數千種工具的可擴展性和互操作性。
二者都共同確保 LLMs 不僅能解釋自然語言提示,還能通過利用企業工具提供有正確的結果,而隨著 MCP 的不斷發展,它將重新定義 LLMs 與企業工具的交互方式,使集成更具可擴展性、靈活性和效率。

所以,MCP 和Function calling本質來說二者并不沖突,它們是同一工作流程的兩個方面。
本文轉載自??DataForAI??,作者:王笠

















