# WHU-TaoClass
**Repository Path**: yuanchengbo1/whu_taoclass
## Basic Information
- **Project Name**: WHU-TaoClass
- **Description**: 本项目系 [武汉大学][计算机学院][软件工程课程设计(弘毅班)] 成果,旨在提供一个课程评价、交流、讨论论坛,并支持使用GPT对话系统查询课程。
- **Primary Language**: Python
- **License**: Unlicense
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 3
- **Forks**: 4
- **Created**: 2023-09-30
- **Last Updated**: 2023-11-23
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
#### 本项目系 武汉大学 计算机学院 软件工程课程设计(弘毅班) 成果
**Project_leader**: [yuanchengbo1](https://gitee.com/yuanchengbo1)
**Project_contributor**: [HongWJ](https://gitee.com/hong-wj), [cjfdf](https://gitee.com/cjfdf), [hiroxzwang](https://gitee.com/starDream-x), [leiyixiang1](https://gitee.com/leiyixiang1), [Banal_Agrestic_cc86](https://gitee.com/Banal_Agrestic_cc86), [dong-hongyuu](https://gitee.com/dong-hongyuu)
**Thanks**:
1. Codebase: https://github.com/aurora-wangq/NoelWebsite
2. Data: 武汉大学淘课啦团队 (小淘妙妙屋)
3. GPT-API: [讯飞星火认知大模型](https://xinghuo.xfyun.cn/)
---
# TaoClass: WHU淘课啦课程论坛 (GPT加成版)
## 😊 1. 安装&部署项目
(1) 本项目部署环境为Windows系统。
(2) 请确保已经安装好[anaconda](https://www.anaconda.com/),然后控制台进入项目文件夹,创建并激活虚拟环境:
```sh
cd Noel
conda env create -f tao_noel.yaml
conda activate noel
```
(3) 请确保已经安装并启动[Milvus](https://milvus.io/)向量数据库。一般来说,Windows系统下Milvus通过[Docker](https://www.docker.com/)进行部署与启动。
```
Milvus安装教程:
教程1:https://blog.csdn.net/demon_lhy/article/details/132683627
教程2:https://blog.csdn.net/weixin_44839084/article/details/121965167
```
(4) 请确保已经安装好[Sqlite](https://www.sqlite.org/index.html)关系型数据库。
(5) 本项目需要使用Huggingface预训练模型。正常情况下,第一次启动项目时,系统会自动从[Huggingface](https://huggingface.co/)官网下载模型。若出现自动下载失败的情况,可能需要手动进行部署。
```
Huggingface模型信息:
Model-Card: https://huggingface.co/moka-ai/m3e-base
```
(6) 本项目使用[星火认知大模型](https://xinghuo.xfyun.cn/) (SparkGPT) 作为API-Backbone,请提前获取API-Key。
(7) 最后,还需要配置django的setting文件。首先打开noel/settings.py,配置Sqlite和Milvus数据库:
```python
####################### SQLite ####################
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
####################### Milvus ####################
MILVUS_USER = 'root'
MILVUS_PASSWORD = '123456'
MILVUS_HOST = '127.0.0.1'
MILVUS_PORT = 19530
```
然后打开fan/ai_module/app.py,配置SparkGPT的API-Key
```python
class SparkGPT:
def __init__(self):
# 把下面的所有内容替换为自己的API-Key和API配置
self.appid = "123456"
self.api_secret = "123456"
self.api_key = "123456"
self.domain = "general"
self.Spark_url = "ws://spark-api.xf-yun.com/v1.1/chat"
......
```
(8) TaoClass,启动!在完成上述安装与部署后,我们就可以启动TaoClass软件啦!
```
python manage.py runserver
```
然后在浏览器中访问 http://127.0.0.1:8000/ 即可。至此,你已经成功启动项目🥳!
---
## 🤗 2. 微调AI模型
本项目基于 MokaAI 训练的 M3E (Moka Massive Mixed Embedding) 文本嵌入模型 。除了使用原始M3E模型外,我们还额外提供了模型微调代码,从而方便各位实现本地化定制和检索效果增强!
具体内容见finetune_code_and_weight文件夹:
```
Noel
|--finetune_code_and_weight
|-finetuned-model 微调后的模型权重
|-M3E 模型原来权重
|-finetune.py 实现微调功能的详细代码
|-finetune_maincode.ipynb 微调过程,包含微调前后效果对比
|-finetune_dataset.xlsx 用于微调的数据集
```
请将M3E模型原来的权重放入M3E/中,将需要微调的数据按照finetune_dataset.xlsx中的格式存储,然后按照finetune_maincode.ipynb中的步骤微调模型。微调后的模型位于finetuned-model/中。
由于隐私限制,本项目不提供微调模型使用的数据。如果想要获取微调后的权重,请联系[yuanchengbo1](https://gitee.com/yuanchengbo1)或者 [dong-hongyuu](https://gitee.com/dong-hongyuu)。
## 🤩 3. 功能概览
1. 登录界面:

2. 论坛页面

3. 课程信息添加 & 查询

4. AI-GPT课程查询界面

---
## 😎 4. 管理员功能
本项目主要使用Django自带的管理后台。
创建管理员用户:
```sh
python manage.py createsuperuser
```
管理页地址:
```
BASE_URL:PORT/admin/
例如:http://127.0.0.1:8000/admin/
```
数据库批量初始化:
请首先创建一个db.csv,具体格式见fan/db.csv。然后调用fan/init_db.py来进行批量数据库插入。如果在初始化前需要清空Milvus数据库,可以考虑使用init_db.py中的clear_db_func()函数。
---
# 注意事项
>**本项目默认使用WSGI启动且并未携带ASGI配置文件因此不支持直接使用WS/WSS协议,请自行查阅资料自行编写或直接使用HTTP/HTTPSX协议中长轮询的方式进行编写**
>**项目的关系型数据库使用Django默认sqlite3数据库,不支持并发写入,可自行修改setting.py修改为其他数据库并自行接入**
>**禁止一切违法或商业用途**