AI旅行规划系统

一个生产级的AI旅行规划Web应用,使用Model Context Protocol (MCP)进行工具交互,Multi-Component Orchestration (MCO)协调代理和服务,以及Streamlit作为用户界面。

  • by aditi-24-coder
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 nanospace790-gif/travel-mcp

使用说明

带有MCP+MCO+Streamlit的AI旅行计划器

使用的生产级AI旅行计划Web应用程序 模型上下文协议(MCP) 对于工具交互, 多组件编排(MCO) 用于协调代理和服务,以及 溪流 对于用户界面。

🌟 特性

核心能力

  • 自然语言旅行计划用简单的英语描述你的旅行
  • 人工智能驱动的行程:LLM生成个性化的每日计划
  • 实时数据集成:实时天气、航班、酒店和景点
  • 预算管理:详细的成本明细和优化
  • 会话编辑:通过聊天界面修改行程
  • 用户仪表板:个人分析和旅行历史
  • 管理员监控:全系统分析和指标
  • PDF导出:下载专业行程PDF

技术特性

  • MCP架构:通过MCP工具访问的所有外部数据
  • MCO编排:协调员代理管理完整的工作流程
  • 多LLM支持:Gemini,OpenAI(可扩展)
  • 缓存:降低API成本和延迟
  • 认证:使用基于角色的访问进行安全的用户管理
  • 数据库:带SQLAlchemy ORM的SQLite
  • 日志记录:全面的应用程序和API日志记录

🏗️ 建筑

系统流程

User → Streamlit UI
    → Trip Service
    → Coordinator Agent (MCO)
    → Planner Agent
    → MCP Client
    → MCP Server
    → MCP Tools (Weather, Flight, Hotel, Places, Currency, Budget)
    → External APIs
    → Tool Responses
    → LLM Provider
    → Structured JSON
    → Output Parser
    → Database
    → Analytics
    → UI Display

MCP(模型上下文协议)

所有外部数据访问都是通过MCP工具抽象的:

  • 天气工具:OpenWeather API
  • 飞行工具:Amadeus/Skyscanner(包括模拟数据)
  • 酒店工具:Booking.com/RapidAPI(包括模拟数据)
  • 放置工具:Google Places API(包含模拟数据)
  • 货币工具:汇率API
  • 预算工具:成本估算引擎

MCO(多组件编排)

协调员代理协调:

  1. 用户上下文检索
  2. 计划代理执行
  3. MCP工具调用
  4. 大语言模型推理
  5. 输出验证
  6. 数据库存储
  7. 分析日志记录

📁 项目结构

travel_ai_planner/
├── app.py                          # Main Streamlit application
├── mcp/                            # MCP Layer
│   ├── server.py                   # MCP server (tool routing)
│   ├── client.py                   # MCP client (agent interface)
│   ├── context_manager.py          # Session and context management
│   ├── tool_registry.py            # Central tool registry
│   ├── tools/                      # MCP Tools
│   │   ├── weather_mcp.py
│   │   ├── flight_mcp.py
│   │   ├── hotel_mcp.py
│   │   ├── places_mcp.py
│   │   ├── currency_mcp.py
│   │   └── budget_mcp.py
│   └── schemas/                    # Pydantic schemas
│       ├── weather_schema.py
│       ├── flight_schema.py
│       ├── hotel_schema.py
│       └── trip_schema.py
├── agents/                         # Agent Layer
│   ├── coordinator_agent.py        # MCO coordinator
│   ├── planner_agent.py            # Trip planning agent
│   └── conversation_agent.py       # Chat agent
├── llm/                            # LLM Layer
│   ├── llm_provider.py             # Multi-LLM support
│   ├── prompts.py                  # System prompts
│   └── output_parser.py            # JSON parsing & validation
├── services/                       # Business Logic
│   ├── trip_service.py
│   ├── user_service.py
│   ├── analytics_service.py
│   └── pdf_service.py
├── database/                       # Data Layer
│   ├── db.py
│   ├── models.py
│   └── crud.py
├── pages/                          # Streamlit Pages
│   ├── 1_Login.py
│   ├── 2_Signup.py
│   ├── 3_Plan_Trip.py
│   ├── 4_Chat_Assistant.py
│   ├── 5_My_Trips.py
│   ├── 6_User_Dashboard.py
│   ├── 7_Admin_Dashboard.py
│   └── 8_Profile.py
├── config/                         # Configuration
│   ├── settings.py
│   ├── constants.py
│   └── logging_config.py
├── utils/                          # Utilities
│   ├── auth.py
│   ├── validators.py
│   ├── cache.py
│   └── helpers.py
├── logs/                           # Application logs
├── exports/generated_pdfs/         # Generated PDFs
└── requirements.txt

🚀 安装说明

1.克隆和导航

cd travel_ai_planner

2.创建虚拟环境

python -m venv venv
venv\Scripts\activate  # Windows
# source venv/bin/activate  # Linux/Mac

3.安装依赖项

pip install -r requirements.txt

4.配置环境变量

复制 .env.example 到 .env 并填写您的API密钥:

# LLM Configuration
LLM_PROVIDER=gemini
GEMINI_API_KEY=your_gemini_api_key_here

# External APIs (optional - mock data available)
OPENWEATHER_API_KEY=your_key
AMADEUS_API_KEY=your_key
RAPIDAPI_KEY=your_key
GOOGLE_PLACES_API_KEY=your_key

# Application
SECRET_KEY=your_secret_key

5.初始化数据库

python -c "from database.db import init_db; init_db()"

6.运行应用程序

streamlit run app.py

申请将于 http://localhost:8501

🔑 API密钥

必需

可选(模拟数据可用)

📖 使用指南

计划旅行

  1. 登录/注册:创建帐户或登录
  2. 计划旅行:导航到“计划旅行”页面
  3. 描述你的旅行:使用自然语言:
    "Plan a 7-day trip to Tokyo from 2026-03-15 to 2026-03-22 
    with a moderate budget. I love culture and food."
    
  4. 审查计划:查看生成的行程、费用和建议
  5. 保存:行程会自动保存到您的帐户

编辑旅行

  1. 聊天助手:导航到“聊天助手”
  2. 请求更改:
    • “让它更便宜”
    • “添加更多冒险活动”
    • “延长2天”
  3. 查看更新:立即查看更新的计划

查看分析

  • 用户仪表盘:个人旅行统计
  • 管理员仪表板:全系统指标(仅限管理员)

🛠️ 发展

添加新的MCP工具

  1. 在中创建工具 mcp/tools/your_tool_mcp.py:
class YourToolMCP:
    def execute(self, **params):
        # Tool logic
        return result
  1. 注册于 mcp/tool_registry.py:
TOOL_YOUR_TOOL: {
    "name": "your_tool",
    "instance": YourToolMCP(),
    "parameters": ["param1", "param2"]
}
  1. 在计划代理中使用

自定义LLM提示

编辑 llm/prompts.py 自定义:

  • 行程规划说明
  • 输出格式
  • 对话风格

🔒 安全

  • 使用PBKDF2散列的密码
  • 敏感数据的环境变量
  • 所有表单的输入验证
  • 基于角色的访问控制
  • SQL注入防御(SQLAlchemy ORM)

📊 数据库模式

用户

  • id、电子邮件、密码哈希、全名、角色、首选项、created_at

旅行

  • id、user_id、目的地、start_date、end_date、duration_days、budget_category、total_cost、trip_data(JSON)、状态、created_at、updated_at

查询日志

  • id、user_id、query_text、response_time、success、created_at

ApiLogs

  • id、工具名、参数、响应时间、成功、错误消息、创建at

🎯 未来的增强功能

  • []多目的地旅行
  • []协同旅行计划
  • []实时航班价格跟踪
  • []移动应用程序
  • []社交分享
  • []旅游保险一体化
  • []签证要求检查器
  • []带天气集成的装箱单生成器

📝 许可证

MIT许可证-可自由用于个人或商业项目

🤝 贡献

欢迎投稿!拜托:

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 提交拉取请求

📧 支持

对于问题或疑问,请在GitHub上打开问题。


内置于❤️ 使用MCP、MCO、Streamlit和AI