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自己协调完成任务。

相关推荐
摆烂仙君8 小时前
南京邮电大学金工实习答案
人工智能·深度学习·aigc
DisonTangor9 小时前
阿里巴巴开源移动端多模态LLM工具——MNN
人工智能·开源·aigc
乌旭14 小时前
开源GPU架构RISC-V VCIX的深度学习潜力测试:从RTL仿真到MNIST实战
人工智能·深度学习·stable diffusion·架构·aigc·midjourney·risc-v
csdn56597385014 小时前
中国版 Cursor---腾讯云 CodeBuddy | 从安装VSCode到数独小游戏问世
腾讯云·mcp·mcp server·codebuddy首席试玩官·mcp头号玩家
LeeZhao@15 小时前
【AGI】大模型微调数据集准备
人工智能·数据挖掘·aigc·agi
梦醒沉醉18 小时前
MCP(一)——QuickStart
python·mcp
勇敢牛牛_1 天前
使用Rust开发的智能助手系统,支持多模型、知识库和MCP
ai·rust·rag·mcp
AI大模型系统化学习1 天前
Excel MCP: 自动读取、提炼、分析Excel数据并生成可视化图表和分析报告
人工智能·ai·大模型·ai大模型·大模型学习·大模型入门·mcp
SoraLuna1 天前
「Mac畅玩AIGC与多模态41」开发篇36 - 用 ArkTS 构建聚合搜索前端页面
前端·macos·aigc
StarRocks_labs2 天前
StarRocks MCP Server 开源发布:为 AI 应用提供强大分析中枢
数据库·starrocks·人工智能·开源·olap·mcp