基于大语言模型的智能Agent,帮助师生快速找到厦门大学各类事务办理的官方网站和入口。
- 智能对话: 自然语言理解,支持模糊查询
- 精准导航: 直接提供官方网址,避免钓鱼网站
- 个性化服务: 根据用户类型(学生/教师)提供定制化推荐
- 多轮对话: 支持上下文理解和连续对话
- 快速搜索: 支持关键词搜索和分类筛选
- 后端: FastAPI + Anthropic Claude API
- 前端: Gradio 界面
- 数据: Markdown 文件存储服务信息
- 缓存: 内存会话管理
pip install -r requirements.txtexport ANTHROPIC_API_KEY="your-claude-api-key"# 一键启动后端和前端
./start.sh
# 或者分别启动
# 启动后端 (端口 8000)
python -m app.main
# 启动前端 (端口 7860)
python gradio_app.py- Gradio 界面: http://localhost:7860
- API 文档: http://localhost:8000/docs
curl -X POST "http://localhost:8000/api/v1/chat" \
-H "Content-Type: application/json" \
-d '{
"message": "我要请假",
"user_type": "student",
"session_id": "optional-session-id"
}'curl -X POST "http://localhost:8000/api/v1/search" \
-H "Content-Type: application/json" \
-d '{
"query": "选课",
"category": "教务管理",
"limit": 10
}'curl "http://localhost:8000/api/v1/services?category=教务管理&limit=20"xmu-service-agent/
├── app/
│ ├── main.py # FastAPI 应用入口
│ ├── core/
│ │ └── config.py # 配置管理
│ ├── api/
│ │ ├── endpoints.py # API 端点
│ │ └── router.py # 路由配置
│ ├── services/
│ │ ├── data_manager.py # 数据管理
│ │ ├── chat_manager.py # 会话管理
│ │ └── enhanced_llm_agent.py # LLM 代理
│ └── models/
│ └── schemas.py # 数据模型
├── data/
│ └── services.md # 服务数据文件
├── gradio_app.py # Gradio 前端界面
├── start.sh # 启动脚本
└── requirements.txt # 依赖列表
服务数据存储在 data/services.md 文件中,使用 Markdown 格式:
## 分类名称
### 服务名称
- **网址**: https://example.xmu.edu.cn
- **描述**: 服务描述
- **关键词**: 关键词1,关键词2
- **用户类型**: student,teacher
- **所需材料**: 材料1,材料2用户: "我要请假"
助手: "我理解您想要申请请假。为您找到以下相关服务:
学生请假系统 网址: https://student.xmu.edu.cn/qj 描述: 在线申请请假,辅导员审批 所需材料: 请假原因,时间,证明材料
办理流程:
- 登录请假系统
- 填写请假申请表
- 上传相关证明材料
- 提交辅导员审批
您可能还想问:
- 请假流程是什么?
- 请假需要哪些材料?"
用户搜索: "选课"
结果: 返回选课系统、补选退选等相关服务的网址和信息
编辑 data/services.md 文件,按照格式添加新的服务信息,然后重启应用即可。
在 app/models/schemas.py 中修改 ServiceCategory 枚举类型,添加新的分类。
在 app/services/enhanced_llm_agent.py 中替换 Claude API 为其他大模型API。
- 确保所有网址都是厦门大学的官方域名 (*.xmu.edu.cn)
- 定期更新服务数据,确保信息的准确性
- API 密钥需要妥善保管,不要提交到代码仓库
- 建议在生产环境使用 Nginx 反向代理
本项目仅供厦门大学内部使用