Function calling, 模態上下文協議(MCP),多步能力協議(MCP) 和 A2A的區別

  1. 背景闡述

本文大部分內容都是基于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 不只作一件事,而是這樣想:

  1. 我的先查航班 -> 工具A
  2. 然后查天氣 -> 工具B
  3. 根據天氣推薦穿搭 -> 工具 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自己協調完成任務。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/77799.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/77799.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/77799.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

火山RTC 5 轉推CDN 布局合成規則

實時音視頻房間&#xff0c;轉推CDN&#xff0c;文檔&#xff1a; 轉推直播--實時音視頻-火山引擎 一、轉推CDN 0、前提 * 在調用該接口前&#xff0c;你需要在[控制臺](https://console.volcengine.com/rtc/workplaceRTC)開啟轉推直播功能。<br> * 調…

力扣面試150題--插入區間和用最少數量的箭引爆氣球

Day 28 題目描述 思路 初次思路&#xff1a;借鑒一下昨天題解的思路&#xff0c;將插入的區間與區間數組作比較&#xff0c;插入到升序的數組中&#xff0c;其他的和&#xff08;合并區間&#xff09;做法一樣。 注意需要特殊處理一下情況&#xff0c;插入區間比數組中最后一…

【Java面試筆記:基礎】4.強引用、軟引用、弱引用、幻象引用有什么區別?

1. 引用類型及其特點 強引用(Strong Reference): 定義:最常見的引用類型,通過new關鍵字直接創建。回收條件:只要強引用存在,對象不會被GC回收。示例:Object obj = new Object(); // 強引用特點: 強引用是導致內存泄漏的常見原因(如未及時置為null)。手動斷開引用:…

ycsb性能測試的優缺點

YCSB&#xff08;Yahoo Cloud Serving Benchmark&#xff09;是一個開源的性能測試框架&#xff0c;用于評估分布式系統的讀寫性能。它具有以下優點和缺點&#xff1a; 優點&#xff1a; 簡單易用&#xff1a;YCSB提供了簡單的API和配置文件&#xff0c;使得性能測試非常容易…

基于SpringBoot的校園賽事直播管理系統-項目分享

基于SpringBoot的校園賽事直播管理系統-項目分享 項目介紹項目摘要管理員功能圖用戶功能圖項目預覽首頁總覽個人中心禮物管理主播管理 最后 項目介紹 使用者&#xff1a;管理員、用戶 開發技術&#xff1a;MySQLJavaSpringBootVue 項目摘要 隨著互聯網和移動技術的持續進步&…

Nginx?中間件的解析

目錄 一、Nginx的核心架構解析 二、Nginx的典型應用場景 三、Nginx的配置優化實踐 四、Nginx的常見缺陷與漏洞 一、Nginx的核心架構解析 ??事件驅動與非阻塞IO模型?? Nginx采用基于epoll/kq等系統調用的事件驅動機制&#xff0c;通過異步非阻塞方式處理請求&#xff0c;…

杭州小紅書代運營公司-品融電商:全域增長策略的實踐者

杭州小紅書代運營公司-品融電商&#xff1a;全域增長策略的實踐者 在品牌競爭日趨激烈的電商領域&#xff0c;杭州品融電商作為一家專注于品牌化全域運營的服務商&#xff0c;憑借其“效品合一”方法論與行業領先的小紅書代運營能力&#xff0c;已成為眾多品牌實現市場突圍的重…

【映客直播-注冊/登錄安全分析報告】

前言 由于網站注冊入口容易被黑客攻擊&#xff0c;存在如下安全問題&#xff1a; 暴力破解密碼&#xff0c;造成用戶信息泄露短信盜刷的安全問題&#xff0c;影響業務及導致用戶投訴帶來經濟損失&#xff0c;尤其是后付費客戶&#xff0c;風險巨大&#xff0c;造成虧損無底洞…

Android audio_policy_configuration.xml加載流程

目錄 一、audio_policy_configuration.xml文件被加載流程 1、AudioPolicyService 創建階段 2、createAudioPolicyManager 實現 3、AudioPolicyManager 構造 4、配置文件解析 loadConfig 5、核心解析邏輯 PolicySerializer::deserialize 二、AudioPolicyConfig類解析 1、…

使用 Docker 安裝 Elastic Stack 并重置本地密碼

Elastic Stack&#xff08;也被稱為 ELK Stack&#xff09;是一個非常強大的工具套件&#xff0c;用于實時搜索、分析和可視化大量數據。Elastic Stack 包括 Elasticsearch、Logstash、Kibana 等組件。本文將展示如何使用 Docker 安裝 Elasticsearch 并重置本地用戶密碼。 ###…

Unitest和pytest使用方法

unittest 是 Python 自帶的單元測試框架&#xff0c;用于編寫和運行可重復的測試用例。它的核心思想是通過斷言&#xff08;assertions&#xff09;驗證代碼的行為是否符合預期。以下是 unittest 的基本使用方法&#xff1a; 1. 基本結構 1.1 創建測試類 繼承 unittest.TestC…

git 版本提交規范

Git 提交規范&#xff08;Git Commit Message Convention&#xff09;是為了讓項目的提交歷史更加清晰、可讀、便于追蹤和自動化工具解析。常見的規范之一是 Conventional Commits&#xff0c;下面是一個推薦的格式規范&#xff1a; &#x1f31f; 提交信息格式&#xff08;Con…

stat判斷路徑

int stat(const char *pathname, struct stat *buf); pathname&#xff1a;用于指定一個需要查看屬性的文件路徑。 buf&#xff1a;struct stat 類型指針&#xff0c;用于指向一個 struct stat 結構體變量。調用 stat 函數的時候需要傳入一個 struct stat 變量的指針&#xff0…

學習Docker遇到的問題

目錄 1、拉取hello-world鏡像報錯 1. 檢查網絡連接 排查: 2. 配置 Docker 鏡像加速器(推薦) 具體解決步驟: 1.在服務器上創建并修改配置文件,添加Docker鏡像加速器地址: 2. 重啟Docker 3. 拉取hello-world鏡像 2、刪除鏡像出現異常 3、 容器內部不能運行ping命令 …

安寶特案例 | AR如何大幅提升IC封裝廠檢測效率?

前言&#xff1a;如何提升IC封裝廠檢測效率&#xff1f; 在現代電子產品的制造過程中&#xff0c;IC封裝作為核心環節&#xff0c;涉及到復雜處理流程和嚴格質量檢測。這是一家專注于IC封裝的廠商&#xff0c;負責將來自IC制造商的晶圓進行保護、散熱和導通處理。整個制程繁瑣…

【Linux網絡與網絡編程】07.應用層協議HTTPS

HTTP 協議內容都是按照文本的方式明文傳輸的&#xff0c;這就導致在傳輸過程中出現一些被篡改的情況。HTTPS 就是在 HTTP 協議的基礎上引入了一個加密層的應用層協議。 1. 基礎概念 1.1 加密與解密 加密就是把明文&#xff08;要傳輸的信息&#xff09;進行一系列變換&#x…

【k8s】PV,PVC的回收策略——return、recycle、delete

PV 和 PVC 的回收策略主要用于管理存儲資源的生命周期&#xff0c;特別是當 PVC 被刪除時&#xff0c;PV 的處理方式。回收策略決定了 PV 在 PVC 被刪除后的行為。 回收策略的類型 Kubernetes 提供了三種主要的回收策略&#xff0c;用于管理 PV 的生命周期&#xff1a; Reta…

2023藍帽杯初賽內存取證-2

直接使用mimikatz插件來獲取用戶密碼&#xff1a; vol.py --plugin/opt/volatility/plugins -f memdump.mem --profile Win7SP1x64 mimikatz 答案&#xff1a;3w.qax.com

使用dompurify修復XSS跨站腳本缺陷

1. 問題描述 漏洞掃描說有一個低危漏洞&#xff0c;容易被跨站腳本攻擊XSS。 2. 使用dompurify修復 DOMPurify is a DOM-only, super-fast, uber-tolerant XSS sanitizer for HTML, MathML and SVG. 簡單來說&#xff0c;我們可以使用 dompurify 處理xss跨站腳本攻擊。 2.…

【c語言】指針和數組筆試題解析

一維數組: //數組名a如果既不單獨放在sizeof()中&#xff0c;也不與&結合&#xff0c;那么就表示數組首元素的大小 //a一般表示數組首元素地址&#xff0c;只有兩種情況表示整個數組&#xff0c;sizeof(arr)表示整個數組的大小&#xff0c;&arr表示數組的地址 int a[]…