代理到代理(A2A)与模型上下文协议(MCP)
该项目对两种协调策略进行了基准测试-- 代理人对代理人(A2A) 通信vs 模型上下文协议(MCP) 基于工具的执行——使用共享的数值数组数据集。每个协议处理相同的输入,并在生成摘要响应之前计算统计数据(最小值、最大值、平均值、计数)。
实验运行 完全手动 使用Python脚本和轻量级Flask服务器。不需要框架或编排系统。
______________________________________________________________________
📁 项目结构
.
├── a2a_experiment.py
├── a2a_worker_agent.py
├── a2a_results.json
│
├── mcp_experiment.py
├── mcp_tool_server.py
├── mcp_results.json
│
├── dataset_generator.py
├── common_dataset.json
│
└── README.md______________________________________________________________________
🎯 实验目标
目的是评估 延迟, 成功率,以及 消息复杂度 之间:
✅ A2A协议
协调器代理直接向工作代理发送任务。 每个请求两次消息交换。
✅ MCP协议
单个编排器按顺序调用两个工具:
analyze_datagenerate_summary
这两种协议都使用相同的数据集和相同的逻辑来计算统计数据和摘要。
______________________________________________________________________
📌 1.数据集生成
在运行任何实验之前,生成共享数据集:
python dataset_generator.py这创造了 common_dataset.json,其中包含两个实验使用的30个随机数字数组。
参考: *数据集生成器脚本*
______________________________________________________________________
📌 2.运行A2A实验
步骤1——启动Worker Agent(Agent B)
python a2a_worker_agent.py这将在以下位置启动Flask服务器:
http://127.0.0.1:5002/process_taskworker计算统计数据并为每个请求生成摘要。 参考: *工人实施*
______________________________________________________________________
步骤2——运行A2A实验脚本
python a2a_experiment.py协调员:
- 负载
common_dataset.json - 将每个数字数组作为任务发送给worker
- 接收摘要
- 记录成功、延迟和消息计数
结果保存到:
a2a_results.json参考: *A2A实验协调员* 参考: *A2A结果样本*
______________________________________________________________________
📌 3.运行MCP实验
步骤1--启动MCP工具服务器
python mcp_tool_server.py这暴露了两个工具:
/analyze_data
/generate_summary每个工具都是一个单独的端点。 参考: *MCP工具服务器*
______________________________________________________________________
步骤2——运行MCP实验脚本
python mcp_experiment.py脚本:
- 加载相同的数据集
- 依次调用MCP工具
- 记录请求指标
- 将结果保存到:
mcp_results.json参考: *MCP实验协调员* 参考: *MCP结果样本*
______________________________________________________________________
📊 输出文件
1.A2A结果-- a2a_results.json
每个条目记录:
- 请求索引
- 持续时间(ms)
- 成功/失败
- 消息计数(始终为2)
- 如有错误
2.MCP结果-- mcp_results.json
结构相同,但包括两个工具调用的延迟。
______________________________________________________________________
📌 需求
- Python 3.10+
- 烧瓶
- 请求库
安装依赖项(如果需要):
pip install flask requests______________________________________________________________________
🚀 一起运行一切
- 生成数据集
python dataset_generator.py- 启动MCP服务器
python mcp_tool_server.py- 启动A2A工人
python a2a_worker_agent.py- 运行两个实验
python mcp_experiment.py
python a2a_experiment.py______________________________________________________________________
