使用说明
旅行计划器MCP PoC
这是一个使用模型上下文协议(MCP)、Postgres和Neo4j的Trip Planner应用程序的概念验证。它演示了Orchestrator Agent如何与专业代理(团队、食品、旅行)协调以回答复杂的查询。
先决条件
- Docker 桌面版确保Docker已安装并正在运行。
- **Python 3.10+**确保已安装Python。
设置
-
启动数据库: 打开此文件夹中的终端并运行:
docker-compose up -d这将启动Postgres(端口5432)和Neo4j(端口74747687)。
-
创建虚拟环境:
python -m venv venv # Windows venv\Scripts\activate # Mac/Linux # source venv/bin/activate -
再进行:
pip install -r requirements.txt -
配置环境变量: 复制
.env.example到.env并添加您的API密钥:# Windows copy .env.example .env # Mac/Linux # cp .env.example .env编辑
.env并添加:GOOGLE_API_KEY:从https://makersuite.google.com/app/apikeyOPENWEATHER_API_KEY:从https://openweathermap.org/api(免费套餐)
-
种子Neo4j数据: Postgres数据是自动播种的。对于Neo4j,运行此脚本一次:
python src/db_utils.py
运行应用程序
选项1:测试行程建议工具
使用实时天气数据测试新的旅行建议工具:
python test_trip_recommendations.py
选项2:编排器(模拟)
运行硬编码编排器以查看不带API键的代理工作流:
python src/orchestrator.py
选项3:聊天机器人(单代理)
运行交互式聊天机器人程序(需要Google API密钥):
-
创建一个
.env根文件夹中的文件:GOOGLE_API_KEY=your-gemini-api-key OPENWEATHER_API_KEY=your-openweather-api-key从以下位置获取免费的OpenWeather API密钥:https://openweathermap.org/api(每天免费拨打1000次电话)
-
运行聊天机器人:
python src/chatbot.py
选项4:A2A聊天机器人(多代理系统)✨ 推荐
运行高级多代理系统,在该系统中,编排者与专业的团队、食品和旅行代理进行协调:
- 确保
.env有你的GOOGLE_API_KEY和OPENWEATHER_API_KEY. - 运行A2A聊天机器人:
python src/a2a_chatbot.py
特征:
- 🤖 智能代理编排:自动将查询路由到专业代理(团队、食品、旅行)
- 💬 会话上下文:维护会话间的聊天历史记录(
chat_history.json) - 🔄 并行处理:多个代理协同工作,提供全面的应对措施
- 🎯 智能查询理解:使用Gemini AI分析和分解复杂的旅行计划请求
- 🌐 完全MCP集成:无缝访问Neo4j、Postgres、Weather API和Country Info API
A2A聊天机器人是 功能齐全 并通过多智能体协作提供最先进的行程规划体验。
它是如何工作的
核心组件
-
src/mcp_server.py:MCP服务器公开了多种工具:run_cypher_query:对Neo4j(员工组织图)执行原始Cypher查询。run_sql_query:对Postgres执行原始SQL查询(食物偏好、行程数据)。get_trip_recommendations:通过实时天气数据、可定制的偏好、日期、团体规模和预算获得全面的旅行建议。get_country_info:从RestCountries API获取国家信息(货币、语言)。
-
src/orchestrator.py:具有模拟代理工作流的基本编排器(不需要API密钥)。 -
src/a2a_chatbot.py: 高级多智能体系统 ✨- 编排器代理:分析用户查询并协调专业代理
- 团队代理:使用Neo4j图形数据库处理员工数据查询
- 食品添加剂:管理Postgres的食物偏好和饮食要求
- 旅行社:提供全面的旅行计划,包括天气和位置数据
- 智能路由:使用Gemini AI确定每个查询需要哪些代理
- 上下文感知:维护对话历史记录,并建立在之前的互动基础上
- 并行执行:多个代理可以同时处理复杂的查询
-
src/chatbot.py:用于基本交互的单代理聊天机器人。
项目结构
docker-compose.yml:数据库配置。data/:数据库的初始化脚本。src/:源代码。mcp_server.py:具有数据库查询工具的MCP工具提供商。orchestrator.py:具有模拟工作流程的基本编排器。db_utils.py:数据库连接帮助程序。a2a_chatbot.py: 先进的多智能体聊天机器人系统 ✨ (功能齐全)chatbot.py:基本使用的单代理聊天机器人。
test_trip_recommendations.py:行程建议工具的测试脚本。TRIP_RECOMMENDATIONS_GUIDE.md:使用旅行建议的综合指南。ARCHITECTURE.md:详细的系统架构文档。AGENT_UPDATES.md:代理实现更新和更改。.env.example:环境变量模板。
新功能
🌦️ 实时天气集成
这 get_trip_recommendations 工具现在从OpenWeatherMap API获取实时天气数据:
- 当前状况和5天预测
- 温度、湿度、风速
- 基于天气的包装技巧
- 自动位置地理编码
🎯 智能出行计划
- 可自定义首选项:冒险、美食、文化、放松、购物、自然
- 团体旅行支持:与多人一起旅行的提示
- 预算意识:基于预算限制的建议
- 日期灵活性:如果未指定日期,则自动默认为即将到来的周末
- 外部资源:TripAdvisor、谷歌地图、Booking.com、维基旅游的链接
📊 您可以尝试的示例查询(A2A聊天机器人)
- 基本旅行:“计划一次周末巴黎之旅”
- 详细规划:“从2025年12月20日到2025年12-25日,为4个人计划一次为期5天的乌代浦探险之旅,他们有自己的喜好:探险、自然、美食。预算为每人5000印度卢比”
- 团体旅游:“我们是8个朋友,计划去巴厘岛放松和购物”
- 团队出游:“让我的团队成员考虑每个人的食物偏好,计划一次为期3天的果阿团队郊游”
- 多代理查询:“Bob Chen的员工是谁?他们的食物偏好是什么?计划在旧金山举办团队晚宴”
- 复杂规划:“我想下个月组织一次有15人参加的企业务虚会,参加文化活动”
🔧 高级数据库查询
run_cypher_query:对复杂的Neo4j图遍历执行原始Cypher查询run_sql_query:执行原始SQL查询以实现灵活的Postgres数据检索- 工具描述中的完整模式文档
有关详细的使用说明,请参阅 TRIP_RECOMMENDATIONS_GUIDE.md.