# 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. 登录界面: ![Login](./srcs/img/login.png) 2. 论坛页面 ![Post](./srcs/img/post.png) 3. 课程信息添加 & 查询 ![Query](./srcs/img/query.png) 4. AI-GPT课程查询界面 ![AI](./srcs/img/ai.png) --- ## 😎 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修改为其他数据库并自行接入** >**禁止一切违法或商业用途**