掘金 人工智能 前天 17:12
Function calling, 模态上下文协议(MCP),多步能力协议(MCP) 和 A2A的区别
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文深入探讨了基于LLM的Agent功能,着重阐述了Function calling、MCP(模态上下文协议和多步能力协议)以及A2A等关键概念的区别与应用。Function calling实现了LLM与外部系统的交互,MCP则赋予LLM上下文记忆和状态管理能力,多步能力协议让LLM能够规划并执行复杂任务,而A2A则实现了AI助理之间的协同工作。通过这些协议,LLM的应用场景得以极大拓展,为用户带来更智能、更高效的体验。

🔗Function calling:通过提示工程,LLM可以与外部系统(如大数据系统、报价系统等)对接,获取数据并融入模型,实现与传统系统的交互,无需特定协议,例如获取巴黎的天气信息。

💾MCP(模态上下文协议):该协议使LLM能够记住对话历史,管理工具模式,并提供上下文记忆支持。例如,在对话中,AI能够理解“刚才说的那个电影”指的是之前提到的电影,或者根据上下文自动将“巴黎”作为参数传递给天气查询工具。

🪜MCP(多步能力协议):此协议让LLM能够自主规划并逐步完成复杂任务,例如,用户只需说“帮我订巴黎的机票,查天气,推荐穿搭”,AI即可自动调用航班查询工具、天气查询工具和穿搭推荐工具,无需用户手动指挥每一步。

🤝A2A(Agent to agent protocol):A2A协议定义了AI助理之间的沟通规则,允许多个职能体相互配合。例如,一个时尚助理Agent可以向天气Agent请求天气信息,然后根据天气结果生成穿搭建议,最终回复用户。这种协议背后可能使用JSON、消息队列、RPC或自然语言通信等方式。

背景阐述

本文大部分内容都是基于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, GroupChat weather_agent = AssistantAgent(name="WeatherAgent", ...)stylist_agent = AssistantAgent(name="StylistAgent", ...) # 组建一个 GroupChat(自动使用 A2A 协议)chat = GroupChat(agents=[weather_agent, stylist_agent], messages=[...]) chat.start()

总结:

A2A 协议让多个智能体像“会合作的团队”一样工作,自动沟通,自动分工,自动协作。用户只管发指令,背后多个Agent自己协调完成任务。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

LLM Agent Function calling MCP A2A
相关文章