当前位置: 首页 > news >正文

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

相关文章:

  • Vue3+TS中svg图标的使用-@unocss/preset-icons
  • 【深度学习】LoRA:低秩适应性微调技术详解
  • 第33周JavaSpringCloud微服务 电商进阶开发
  • VSCode连服务器一直处于Downloading
  • 多骨干、多融合:RT-DETR 如何解锁主干网络新姿势?
  • 面试网络基础知识 — IP地址
  • 聚能芯半导体禾润一级代理HT7886开关限流降压变换器 5V – 100V 的宽输入电压3.5A 开关限流降压变换器
  • USB 共享神器 VirtualHere 局域网内远程使用打印机与扫描仪
  • 丰富多样功能的小白工具,视频提取音频,在线使用,无需下载软件
  • QEMU源码全解析 —— 块设备虚拟化(21)
  • 【Pandas】pandas DataFrame div
  • 三网通电玩城平台系统结构与源码工程详解(二):Node.js 服务端核心逻辑实现
  • SAS宏核心知识与实战应用
  • MCP(3):在CherryStudio中使用MCPServer
  • HTTP 请求头与请求体:数据存储的底层逻辑与实践指南
  • 第 2.1 节: 机器人仿真环境选择与配置 (Gazebo, MuJoCo, PyBullet)
  • 映射(Mapping)和地址(Address)
  • 创建表结构
  • UiPath API 调用文档
  • \r在C语言中是什么意思(通俗易懂,附带实例)
  • 男粉丝咬伤女主播嘴后写的条子引争议:赔偿“十万元”还是“十5元”?
  • 民政部:从未设立或批准设立“一脉养老”“惠民工程”项目,有关App涉嫌诈骗
  • 大学2025丨浙大哲学院院长王俊:文科的价值不在于直接创造GDP
  • 全球在役最大火电厂被通报
  • 今年一季度,上海对东盟进出口总值同比增长7.1%
  • 全球前瞻|中国印尼举行首次“2+2”部长级会议,美乌将签署矿产协议