Function calling, 模态上下文协议(MCP),多步能力协议(MCP) 和 A2A的区别

背景阐述

本文大部分内容都是基于openAI 的 chatGPT自动生成。作者进行了一些细微的调整。

LLM 带来了很多思维的活跃,基于LLM,产生了很多应用,很多应用也激活了LLM的新的功能。 Function calling,MCP(Modal Context Protocol/模态上下文协议), MCP(Multi-step capability Protocol/多步能力协议) 和 A2A 都是基于LLM的Agent的功能,这篇博客的作用就是阐明它们的区别。

2. Function calling/外部函数调用

起到和LLM交互的是提示工程,在提示工程中,需要和LLM以外的系统对接,特别是强绑定的系统,比如大数据系统,报价系统,。。,得到数字后,填入大模型的提示语句中去。

外部函数调用的好处是可以结合传统的系统的进行交互,不需要任何协议。

js 复制代码
def get_weather(location: str) -> str:
    return "巴黎今天天气多云,16°C

(以下内容ChatGPT 生成)json:

js 复制代码
{
  "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

伪代码:

js 复制代码
# 用户输入任务
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交互逻辑

js 复制代码
# 用户输入
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 框架程序:

js 复制代码
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自己协调完成任务。

相关推荐
Lilith的AI学习日记1 小时前
AI提示词(Prompt)终极指南:从入门到精通(附实战案例)
大数据·人工智能·prompt·aigc·deepseek
盏灯2 小时前
🔥下达一条指令,MCP工具自动帮你抓包,并导出数据
mcp·cline
新智元2 小时前
100 年企业知识超 10 万文件,「内网版 ChatGPT」血洗最卷行业!全员 70% 和 AI 共事
人工智能·openai
新智元2 小时前
AGI 幻灭,LeCun 观点得证?哈佛研究实锤 AI 不懂因果,世界模型神话破灭
人工智能·openai
小和尚同志3 小时前
热门 AI 编辑器(Cursor、v0、Manus、Windsurf 等)及工具的系统提示词
人工智能·aigc
孟健4 小时前
MCP 哪家强?深度分析 Cline、Cursor、Trae、Coze 四大平台
mcp
JavaDog程序狗4 小时前
【deepseek】无套路免费不花一分钱,5分钟带你体验部署deepseek的快乐
aigc·deepseek
Zuojiangtao4 小时前
Cursor+MCP,AI时代前端开发工作流
前端·cursor·mcp
郭不耐5 小时前
DeepSeek智能时空数据分析(五):基于区域人口数量绘制地图散点-大模型搜集数据NL2SQL加工数据
数据分析·aigc·时序数据库·数据可视化·大屏端