使用说明
带有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(多组件编排)
协调员代理协调:
- 用户上下文检索
- 计划代理执行
- MCP工具调用
- 大语言模型推理
- 输出验证
- 数据库存储
- 分析日志记录
📁 项目结构
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密钥
必需
- Gemini API密钥:从 谷歌AI工作室
可选(模拟数据可用)
- 开放天气: openweathermap.org
- 阿玛迪斯: developers.amadeus.com
- 拉皮达皮: 网站 rapidapi.com
- 但谷歌本地服务: 谷歌云控制台
📖 使用指南
计划旅行
- 登录/注册:创建帐户或登录
- 计划旅行:导航到“计划旅行”页面
- 描述你的旅行:使用自然语言:
"Plan a 7-day trip to Tokyo from 2026-03-15 to 2026-03-22 with a moderate budget. I love culture and food." - 审查计划:查看生成的行程、费用和建议
- 保存:行程会自动保存到您的帐户
编辑旅行
- 聊天助手:导航到“聊天助手”
- 请求更改:
- “让它更便宜”
- “添加更多冒险活动”
- “延长2天”
- 查看更新:立即查看更新的计划
查看分析
- 用户仪表盘:个人旅行统计
- 管理员仪表板:全系统指标(仅限管理员)
🛠️ 发展
添加新的MCP工具
- 在中创建工具
mcp/tools/your_tool_mcp.py:
class YourToolMCP:
def execute(self, **params):
# Tool logic
return result
- 注册于
mcp/tool_registry.py:
TOOL_YOUR_TOOL: {
"name": "your_tool",
"instance": YourToolMCP(),
"parameters": ["param1", "param2"]
}
- 在计划代理中使用
自定义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许可证-可自由用于个人或商业项目
🤝 贡献
欢迎投稿!拜托:
- 分叉存储库
- 创建要素分支
- 进行更改
- 提交拉取请求
📧 支持
对于问题或疑问,请在GitHub上打开问题。
内置于❤️ 使用MCP、MCO、Streamlit和AI
