# Travel_AI **Repository Path**: wcshi/Travel_AI ## Basic Information - **Project Name**: Travel_AI - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-03 - **Last Updated**: 2026-08-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Multi-Agent Travel 基于 AgentScope Java 构建的多智能体旅行规划助手,协同路线、行程、火车票与航班等专业 Agent,为用户提供一站式智能旅行服务。 ## 功能特性 - **多 Agent 协作**:总管 Agent 根据用户意图动态路由至路线、行程、铁路、航班、酒店和攻略能力。 - **智能旅行规划**:支持多轮对话、流式输出、规划状态跟踪和会话摘要。 - **实时信息查询**:通过 MCP 接入高德地图、12306 和飞常准等外部服务。 - **旅行管理**:管理旅游计划及酒店、航班、火车记录,并提供出行提醒。 - **用户记忆**:基于 Elasticsearch 和向量检索维护长期旅行偏好。 - **攻略社区**:支持攻略发布、检索与收藏。 - **前后端分离**:提供基于 Vue 3 的 Web 界面以及 Cookie 鉴权。 > 本项目提供票务信息查询和行程记录管理,不包含支付或真实下单流程。 ## 技术栈 ### 后端 - Java 17、Spring Boot 3.3.5 - AgentScope Java 1.0.12 - Maven 多模块、Project Reactor - MyBatis-Plus、MySQL - Redis、Elasticsearch - Model Context Protocol(MCP) - DashScope 通义千问 ### 前端 - Vue 3、TypeScript - Vite 7 ## 项目结构 ```text Multi-agent/ ├── travel-agent-core/ # 专家 Agent、Skill 与事件流核心抽象 ├── travel-commons/ # 公共配置、模型工厂和资源加载 ├── travel-route-agent/ # 路线与天气规划 Agent ├── travel-itinerary-agent/ # 多日行程规划 Agent ├── travel-train-ticket-agent/ # 12306 火车票查询 Agent ├── travel-flight-ticket-agent/ # 飞常准航班查询 Agent ├── travel-manager-agent/ # 总管 Agent、业务 API 和唯一后端启动应用 └── frontend/ # Vue 3 前端 ``` 后端采用模块化单体架构,各专家 Agent 由 `travel-manager-agent` 聚合并运行在同一个 Spring Boot 进程中。 ## 环境要求 - JDK 17 - Maven 3.9+ - Node.js 20.19+ 或 22.12+ - MySQL 8 - Redis - Elasticsearch(使用用户画像和全文检索时需要) - DashScope API Key 后端会通过 `npx` 启动部分 MCP 服务,因此运行后端时同样需要 Node.js 和 npm,并需要能够下载对应 npm 包。 ## 配置 在项目根目录创建 `.env` 文件。下面是常用配置示例,请勿提交真实密钥: ```properties # AI 模型 DASHSCOPE_API_KEY=your_dashscope_api_key DASHSCOPE_MODEL=qwen-plus # MySQL DB_URL=jdbc:mysql://localhost:3306/travel?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true DB_USERNAME=root DB_PASSWORD=your_password # Redis REDIS_HOST=localhost REDIS_PORT=6379 REDIS_PASSWORD= # Elasticsearch ELASTICSEARCH_URIS=http://localhost:9200 ELASTICSEARCH_USERNAME= ELASTICSEARCH_PASSWORD= # 鉴权,生产环境请替换为足够长的随机字符串 AUTH_TOKEN_SECRET=replace_with_a_secure_random_secret AUTH_COOKIE_SECURE=false FRONTEND_ORIGIN=http://localhost:5173 # 高德地图(可选) AMAP_MAPS_API_KEY=your_amap_web_service_key AMAP_JS_API_KEY=your_amap_js_api_key AMAP_JS_SECURITY_CODE=your_amap_js_security_code AMAP_MCP_TRANSPORT=http # 飞常准航班查询(可选) VARIFLIGHT_API_KEY=your_variflight_api_key FLIGHT_TICKET_MCP_ENABLED=true ``` 配置说明: - 缺少高德 Key 时,路线 Agent 会以无地图工具模式运行。 - 缺少飞常准 Key 或关闭对应开关时,航班查询能力不可用,但应用仍可启动。 - 攻略检索在 Elasticsearch 不可用时会降级为 MySQL 查询;用户画像功能依赖 Elasticsearch。 - 12306 MCP 默认启用,启动失败会导致后端启动失败。 更多配置可查看 `travel-manager-agent/src/main/resources/application.yml`。 ## 数据库初始化 首先创建数据库: ```sql CREATE DATABASE travel CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 项目提供以下业务表脚本: ```text travel-manager-agent/src/main/resources/auth-schema.sql travel-manager-agent/src/main/resources/travel-plan-schema.sql travel-manager-agent/src/main/resources/guide-schema.sql ``` 请按实际数据库版本手动执行。当前 `auth-schema.sql` 会升级已有的 `travel_chat_session` 表,仓库内未包含 `travel_chat_session` 和 `travel_chat_message` 两张基础聊天表的完整建表脚本,因此从空库部署时需先准备这两张表。 ## 启动项目 ### 1. 构建并启动后端 在项目根目录执行: ```bash mvn -pl travel-manager-agent -am clean package java -jar travel-manager-agent/target/travel-manager-agent-1.0.0.jar ``` 后端默认运行在 `http://localhost:8083`。 也可以先安装全部模块,再使用 Spring Boot Maven 插件启动: ```bash mvn clean install mvn -f travel-manager-agent/pom.xml spring-boot:run ``` ### 2. 启动前端 ```bash cd frontend npm ci npm run dev ``` 浏览器访问 `http://localhost:5173`。开发服务器会将 `/api` 请求代理到后端的 `8083` 端口。 ## 测试与构建 运行后端测试: ```bash mvn test ``` 构建前端: ```bash cd frontend npm run build ``` ## 主要接口 | 功能 | 接口 | | --- | --- | | 注册与登录 | `POST /api/auth/register`、`POST /api/auth/login` | | 普通聊天 | `POST /api/chat` | | 流式聊天 | `POST /api/chat/stream` | | 会话历史 | `/api/chat/sessions` | | 旅游计划 | `/api/travel-plans` | | 机酒火车记录 | `/api/travel-bookings` | | 出行提醒 | `POST /api/travel-reminders/claim` | | 旅行攻略 | `/api/guides` | | 用户画像 | `/api/profile/memories` | 除注册和登录外,`/api/**` 接口均需要登录凭据;修改类请求还需要携带 CSRF Token。建议通过项目 Web 前端访问。 ## 说明 - Prompt 位于各模块的 `META-INF/travel/prompts` 目录。 - Skill 定义位于各模块的 `META-INF/travel/skills` 目录。 - `.env`、`.dbg`、构建产物和本地 IDE 文件不应提交到仓库。