该项目专为教育和演示目的而开发,旨在通过使用Google ADK(代理开发工具包)来展示多代理系统的基本概念。
⚠️ 重要提示这不是一个生产示例!这是一个教学实验室,用于理解:
该系统模拟了一个提供健康咨询服务的电子商务平台,其中不同的专业代理协同工作以服务客户。
根代理(主协调员)
├── 购物助手(产品专家)
│ └── 帮助客户(MCP接口)
├── 销售代理(销售专家)
│ ├── 创建订单(订单创建)
│ ├── 计费(账单处理)
│ └── 库存管理(库存控制)
└── 健康助手(健康顾问)
├── 营养专家(营养/皮肤护理专家)
└── 运动专家(运动建议专家)
# 克隆仓库
git clone <你的仓库>
cd multi_agent_lab
# 安装主系统的依赖项
cd vitra_ai
uv sync
# 安装MCP服务器的依赖项
cd ../search_mcp_server
uv sync
确保已配置API密钥:
# 对于Claude(Anthropic)
export ANTHROPIC_API_KEY="你的密钥"
# 对于Gemini(Google)
export GOOGLE_API_KEY="你的密钥"
# 对于Ollama(本地)
# 安装Ollama并下载模型llama3.1:8b
ollama pull llama3.1:8b
# 终端1:启动MeiliSearch
docker run -it --rm -p 7700:7700 getmeili/meilisearch:v1.5
# 终端2:运行MCP服务器
cd search_mcp_server
uv run help_customer.py
# 终端3:运行主系统
cd vitra_ai
uv run agent.py
# 仅主系统(带有模拟数据)
cd vitra_ai
uv run agent.py
要使用ADK Web界面测试系统:
# 1. 首先,安装依赖项
cd vitra_ai
uv sync
# 2. 激活虚拟环境
source .venv/bin/activate
# 3. 返回到项目的根目录
cd ..
# 4. 运行ADK web(必须在项目文件夹的上一级运行)
adk web
重要:命令adk web应该始终在一个比项目文件夹高一级的文件夹中运行,而不是在项目文件夹内部。
文件search_mcp_server/help_customer.py可以轻松修改以使用其他数据源:
import json
@mcp.tool()
def search_products_by_terms(terms: str):
with open("products.json", "r") as f:
products = json.load(f)
# 实现简单的按词搜索
results = [p for p in products if terms.lower() in p['name'].lower()]
return {"hits": results}
@mcp.tool()
def search_products_by_terms(terms: str):
# 示例与产品API
response = requests.get(f"https://api.mercadolibre.com/sites/MLB/search?q={terms}")
return response.json()
import sqlite3
@mcp.tool()
def search_products_by_terms(terms: str):
conn = sqlite3.connect("products.db")
cursor = conn.execute("SELECT * FROM products WHERE name LIKE ?", (f"%{terms}%",))
results = cursor.fetchall()
conn.close()
return {"hits": results}
from elasticsearch import Elasticsearch
es = Elasticsearch([{'host': 'localhost', 'port': 9200}])
@mcp.tool()
def search_products_by_terms(terms: str):
response = es.search(
index="products",
body={"query": {"match": {"name": terms}}}
)
return response
multi_agent_lab/
├── vitra_ai/ # 主代理系统
│ ├── agent.py # 根代理配置
│ ├── prompt.py # 提示和指令
│ ├── sub_agents/ # 专业代理
│ │ ├── shop_mate/ # 产品专家
│ │ ├── seller/ # 销售专家
│ │ └── health_mate/ # 健康顾问
│ ├── vitra_doc/ # 系统日志
│ └── pyproject.toml # 依赖项
├── search_mcp_server/ # MCP工具服务器
│ ├── help_customer.py # 工具实现
│ ├── log/ # 操作日志
│ └── pyproject.toml # 依赖项
└── README.md # 本文件
这是一个教育项目!随意:
记住这个项目是一个学习工具。使用它来理解概念,实验修改,并适应您的教育需求!换句话说,就是这么回事。🚀