旅行规划工具

一个基于模型上下文协议(MCP)的旅行规划应用,通过协调多个专业代理(团队、食物、旅行)来回答复杂查询,支持实时天气数据和多代理协作。

  • by SUSHRUTH3002
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 SUSHRUTH3002/MCP

使用说明

旅行计划器MCP PoC

这是一个使用模型上下文协议(MCP)、Postgres和Neo4j的Trip Planner应用程序的概念验证。它演示了Orchestrator Agent如何与专业代理(团队、食品、旅行)协调以回答复杂的查询。

先决条件

  1. Docker 桌面版确保Docker已安装并正在运行。
  2. **Python 3.10+**确保已安装Python。

设置

  1. 启动数据库: 打开此文件夹中的终端并运行:

    docker-compose up -d
    

    这将启动Postgres(端口5432)和Neo4j(端口74747687)。

  2. 创建虚拟环境:

    python -m venv venv
    # Windows
    venv\Scripts\activate
    # Mac/Linux
    # source venv/bin/activate
    
  3. 再进行:

    pip install -r requirements.txt
    
  4. 配置环境变量: 复制 .env.example 到 .env 并添加您的API密钥:

    # Windows
    copy .env.example .env
    # Mac/Linux
    # cp .env.example .env
    

    编辑 .env 并添加:

    • GOOGLE_API_KEY:从https://makersuite.google.com/app/apikey
    • OPENWEATHER_API_KEY:从https://openweathermap.org/api(免费套餐)
  5. 种子Neo4j数据: Postgres数据是自动播种的。对于Neo4j,运行此脚本一次:

    python src/db_utils.py
    

运行应用程序

选项1:测试行程建议工具

使用实时天气数据测试新的旅行建议工具:

python test_trip_recommendations.py

选项2:编排器(模拟)

运行硬编码编排器以查看不带API键的代理工作流:

python src/orchestrator.py

选项3:聊天机器人(单代理)

运行交互式聊天机器人程序(需要Google API密钥):

  1. 创建一个 .env 根文件夹中的文件:

    GOOGLE_API_KEY=your-gemini-api-key
    OPENWEATHER_API_KEY=your-openweather-api-key
    

    从以下位置获取免费的OpenWeather API密钥:https://openweathermap.org/api(每天免费拨打1000次电话)

  2. 运行聊天机器人:

    python src/chatbot.py
    

选项4:A2A聊天机器人(多代理系统)✨ 推荐

运行高级多代理系统,在该系统中,编排者与专业的团队、食品和旅行代理进行协调:

  1. 确保 .env 有你的 GOOGLE_API_KEY 和 OPENWEATHER_API_KEY.
  2. 运行A2A聊天机器人:
    python src/a2a_chatbot.py
    

特征:

  • 🤖 智能代理编排:自动将查询路由到专业代理(团队、食品、旅行)
  • 💬 会话上下文:维护会话间的聊天历史记录(chat_history.json)
  • 🔄 并行处理:多个代理协同工作,提供全面的应对措施
  • 🎯 智能查询理解:使用Gemini AI分析和分解复杂的旅行计划请求
  • 🌐 完全MCP集成:无缝访问Neo4j、Postgres、Weather API和Country Info API

A2A聊天机器人是 功能齐全 并通过多智能体协作提供最先进的行程规划体验。

它是如何工作的

核心组件

  1. src/mcp_server.py:MCP服务器公开了多种工具:

    • run_cypher_query:对Neo4j(员工组织图)执行原始Cypher查询。
    • run_sql_query:对Postgres执行原始SQL查询(食物偏好、行程数据)。
    • get_trip_recommendations:通过实时天气数据、可定制的偏好、日期、团体规模和预算获得全面的旅行建议。
    • get_country_info:从RestCountries API获取国家信息(货币、语言)。
  2. src/orchestrator.py:具有模拟代理工作流的基本编排器(不需要API密钥)。

  3. src/a2a_chatbot.py: 高级多智能体系统 ✨

    • 编排器代理:分析用户查询并协调专业代理
    • 团队代理:使用Neo4j图形数据库处理员工数据查询
    • 食品添加剂:管理Postgres的食物偏好和饮食要求
    • 旅行社:提供全面的旅行计划,包括天气和位置数据
    • 智能路由:使用Gemini AI确定每个查询需要哪些代理
    • 上下文感知:维护对话历史记录,并建立在之前的互动基础上
    • 并行执行:多个代理可以同时处理复杂的查询
  4. 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聊天机器人)

  1. 基本旅行:“计划一次周末巴黎之旅”
  2. 详细规划:“从2025年12月20日到2025年12-25日,为4个人计划一次为期5天的乌代浦探险之旅,他们有自己的喜好:探险、自然、美食。预算为每人5000印度卢比”
  3. 团体旅游:“我们是8个朋友,计划去巴厘岛放松和购物”
  4. 团队出游:“让我的团队成员考虑每个人的食物偏好,计划一次为期3天的果阿团队郊游”
  5. 多代理查询:“Bob Chen的员工是谁?他们的食物偏好是什么?计划在旧金山举办团队晚宴”
  6. 复杂规划:“我想下个月组织一次有15人参加的企业务虚会,参加文化活动”

🔧 高级数据库查询

  • run_cypher_query:对复杂的Neo4j图遍历执行原始Cypher查询
  • run_sql_query:执行原始SQL查询以实现灵活的Postgres数据检索
  • 工具描述中的完整模式文档

有关详细的使用说明,请参阅 TRIP_RECOMMENDATIONS_GUIDE.md.