travel-agent
by to-ri-ki
README.md
# AI 旅游助手
基于 **Qwen2.5-1.5B + LoRA** 微调与 **ChromaDB + BGE** 向量检索的智能旅游 Agent。
通过 **MCP 协议** 暴露工具服务,可被 Claude Code 等 AI 客户端直接调用。
## 功能一览
| 功能 | 说明 |
|------|------|
| 🌤️ 天气查询 | 30+ 城市实时/预报天气,支持"明天""后天"等中文日期 |
| 🚄 高铁查票 | 84 条内置线路,起止城市双向查询 |
| ✈️ 航班查询 | 89 条内置航线,含航司、时刻、参考票价 |
| 🗺️ 行程规划 | 智能解析预算/人数/天数/偏好,自动生成完整方案 |
| 📋 RAG 攻略 | 19 城旅游知识库,多轮对话记忆,追问自动补城市名 |
| 🔀 复合查询 | 多工具同时调用(如 "天气 + 高铁") |
| ⚡ 流式响应 | SSE 逐 token 推送,前端逐字渲染 |
## 快速开始
### 环境要求
- Python 3.10+
- CUDA 11.8+(显存 ≥ 4GB)
- 已下载 Qwen2.5-1.5B-Instruct 模型到本地缓存
### 启动
```bash
pip install -r requirements.txt
# 方式一:一键启动
python launch_api.py
# 方式二:直接运行
python api/main.py
# 访问 http://127.0.0.1:8000
```
### 测试
```bash
python test_api.py "深圳明天天气怎么样"
python test_api.py "北京故宫有什么特色"
```
## 项目结构
```
├── api/ # Web API
│ ├── main.py # FastAPI 主入口(REST + SSE 端点)
│ ├── session_store.py # SQLite 会话持久化
│ └── static/index.html # 卡片式聊天前端
├── agent/ # Agent 核心
│ ├── dispatcher.py # 工具调度器
│ ├── agent_loop.py # 复合意图编排器
│ ├── planner.py # 行程规划器
│ ├── mcp_server.py # MCP 协议服务器
│ └── tools/ # 工具实现
│ ├── weather.py # 天气工具
│ ├── train.py # 高铁工具
│ └── flight.py # 航班工具
├── finetune/ # LoRA 微调
│ ├── train_lora.py # 训练脚本
│ └── rebuild_chroma_v3.py # 重建向量库
├── docs/ # 知识文档
│ └── travel_knowledge # 19 城攻略原始数据
├── launch_api.py # 一键启动脚本
└── requirements.txt # 依赖清单
```
## 技术栈
**模型与推理:** Qwen2.5-1.5B · LoRA (PEFT) · BitsAndBytes 4-bit · Transformers
**RAG 检索:** BAAI/bge-small-zh-v1.5 · ChromaDB · LangChain
**Web 框架:** FastAPI · Uvicorn · SSE 流式 · Pydantic
**前端:** 原生 HTML/CSS/JS · 卡片式 UI · 响应式布局
**协议:** MCP (Model Context Protocol) — stdio + SSE 双模式
**持久化:** SQLite · WAL 模式 · 线程安全
**工具:** wttr.in API · 内置 84 条高铁线路 · 89 条航线
## License
MIT
This server cannot be deployed
Maintenance
ActivitySlowing
ResponsivenessNo issues