当前位置: 首页 > 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自己协调完成任务。

http://www.xdnf.cn/news/80101.html

相关文章:

  • Jenkins plugin 的用法和示例
  • Python 设计模式:桥接模式
  • 电商虚拟户分账系统:破解电商资金管理难题的密钥
  • 数据安全,从治理体系开始认清全局
  • 【音视频】AAC-ADTS分析
  • transformer预测寿命
  • 【音视频】FFmpeg内存模型
  • 香港免费云服务器申请教程,配置4核8G
  • 【Maven】配置文件
  • 网络威胁情报 | Friday Overtime Trooper
  • VB.NET 2008影音播放器开发指南
  • 量子计算在密码学中的应用与挑战:重塑信息安全的未来
  • Git,本地上传项目到github
  • 超越GPT-4?下一代大模型的技术突破与挑战
  • OpenLDAP 管理 ELK 用户
  • 运行neo4j.bat console 报错无法识别为脚本,PowerShell 教程:查看语言模式并通过注册表修改受限模式
  • DeepSeek开源引爆AI Agent革命:应用生态迎来“安卓时刻”
  • 【Python】Selenium切换网页的标签页的写法(全!!!)
  • 力扣hot100 LeetCode 热题 100 Java 哈希篇
  • Spring之我见 - Spring MVC重要组件和基本流程
  • N8N 官方 MCP 节点实战指南:AI 驱动下的多工具协同应用场景全解析
  • 多台电脑切换解决方案:KVM 切换器
  • 小技巧1,在vue3中利用自定义ref实现防抖(customRef)
  • 晨控CK-FR12与欧姆龙NX系列PLC配置EtherNet/IP通讯连接操作手册
  • C++_并发编程_thread_01_基本应用
  • LoRA微调技术全景解析:大模型高效适配的革新之道
  • 【RuleUtil】适用于全业务场景的规则匹配快速开发工具
  • ffmpeg 硬解码相关知识
  • spark-SQL实验
  • 川翔云电脑32G大显存集群机器上线!