-
背景闡述
本文大部分內容都是基于openAI 的 chatGPT自動生成。作者進行了一些細微的調整。
LLM 帶來了很多思維的活躍,基于LLM,產生了很多應用,很多應用也激活了LLM的新的功能。 Function calling,MCP(Modal Context Protocol/模態上下文協議), MCP(Multi-step capability Protocol/多步能力協議) 和 A2A 都是基于LLM的Agent的功能,這篇博客的作用就是闡明它們的區別。
2. Function calling/外部函數調用
起到和LLM交互的是提示工程,在提示工程中,需要和LLM以外的系統對接,特別是強綁定的系統,比如大數據系統,報價系統,。。,得到數字后,填入大模型的提示語句中去。
外部函數調用的好處是可以結合傳統的系統的進行交互,不需要任何協議。
def get_weather(location: str) -> str:return "巴黎今天天氣多云,16°C"
(以下內容ChatGPT 生成)json:
{"functions": [{"name": "get_weather","description": "獲取指定城市的天氣","parameters": {"type": "object","properties": {"location": {"type": "string","description": "城市名稱"}},"required": ["location"]}}],"prompt": "請告訴我巴黎今天的天氣。"
}
3. MCP (Modal context protocol/模態上下文協議)(chatGPT 生成)
這是一個讓LLM能記住你說過什么,知道你在用什么工具,處在哪種模式下的協議。如果你在一個對話中說了:“剛才說的那個電影不錯”,MCP 能讓AI 理解“那個電影”是你前面提到的那部。
在生活上,再比如: 你和助理在對話:
。你說:“我明天要飛巴黎。”
。后面你說:“查一下天氣。”
如果沒有context(上下文),助理會懵:“查哪里的天氣?” 有MCP協議,AI知道你提到了“巴黎”,就能自動把“巴黎”作為參數傳進去。
MCP的一些特性:
。保留對話歷史
。管理工具模式 (比如你正在用哪種插件,調用了哪些函數)
。提供上下文記憶支持。
4. MCP (Multi-step capability protocol/多步能力協議)
是讓LLM 能“自己規劃并一步步完成復雜任務” 的一種協議
比如:你說:“幫我訂巴黎的機票,查天氣,推薦穿搭。”
AI 不只作一件事,而是這樣想:
- 我的先查航班 -> 工具A
- 然后查天氣 -> 工具B
- 根據天氣推薦穿搭 -> 工具 C
偽代碼:
# 用戶輸入任務
user_input = "我要下周去巴黎,幫我查天氣并推薦穿搭"# Step 1: LLM 解析意圖
steps = plan_task(user_input)
# steps = [
# {"tool": "get_weather", "args": {"location": "巴黎", "date": "下周"}},
# {"tool": "recommend_outfit", "args": {"weather_info": "<來自上一步結果>"}}
# ]# Step 2: MCP協議驅動工具執行
weather = call_tool("get_weather", location="巴黎", date="下周")
outfit = call_tool("recommend_outfit", weather_info=weather)# Step 3: LLM 整合最終答案
final_answer = format_response(weather, outfit)# 輸出
print(final_answer)
每一步都調用一個工具,等一個結果,再進入下一步。整個過程是AI自己規劃的,不是你一步步指令。
在生活上,再比如, 你跟一個懂事的助理說:“我下周要去巴黎,幫我安排一下。”
。助理就自己去查航班??
。然后查巴黎天氣??
。在給你搭配穿搭
這個流程不需要你手動指揮每一步。
MCP/多步能力協議的特性:
。任務規劃
。多工具結合調用
。能解決需要多個步驟的復雜問題
如果你在使用像 OpenAI Assistants v2 或者 LangGraph / LangChain Agents,就已經是在使用 多步能力協議 的變體了。
協議名 | 簡單解釋 | 類比 | 核心用途 |
模態上下文協議 | 讓 AI 記住上下文和當前狀態 | 記住你說過什么 | 上下文管理、記憶 |
多步能力協議 | 讓 AI 會自己分步驟完成任務 | 懂事的助理幫你安排事情 | 多工具任務執行 |
5. A2A (Agent to agent protocol)
就是“AI 助理之間的溝通規則”,讓多個職能體可以相互配合。
偽代碼示意A2A交互邏輯
# 用戶輸入
user_input = "我下周去巴黎,查天氣并推薦穿搭"# AgentStylist 接到請求后:
def agent_stylist_handle(user_input):# 1. 識別出需要天氣數據location = "巴黎"date = "下周"# 2. 向 AgentWeather 請求天氣(A2A 協議調用)weather = send_to_agent("AgentWeather", {"location": location,"date": date})# 3. 根據天氣生成穿搭建議outfit = recommend_outfit(weather)# 4. 回復用戶return f"巴黎{date}天氣:{weather}。建議穿:{outfit}。"
這種協議背后可能使用 JSON,消息隊列,RPC,或自然語言通信等方式。
有些系統比如 微軟等AutoGen,LangGraph,OpenAgents內置這種對話。
真實的微軟AutoGen 框架程序:
from autogen import AssistantAgent, GroupChatweather_agent = AssistantAgent(name="WeatherAgent", ...)
stylist_agent = AssistantAgent(name="StylistAgent", ...)# 組建一個 GroupChat(自動使用 A2A 協議)
chat = GroupChat(agents=[weather_agent, stylist_agent], messages=[...])chat.start()
總結:
A2A 協議讓多個智能體像“會合作的團隊”一樣工作,自動溝通,自動分工,自動協作。用戶只管發指令,背后多個Agent自己協調完成任務。