EduChat
综合介绍
EduChat 是由华东师范大学计算机科学与技术学院的 EduNLP 团队研发的开源项目。它是一个专为教育领域设计的对话式大语言模型,旨在利用人工智能技术辅助教学。该项目基于多个主流的预训练大模型进行二次开发,并融合了大量教育垂直领域的数据进行微调,使其能够更好地理解和处理教育场景下的特定任务。EduChat 不仅支持开放式问答、课程辅导等基础功能,还提供作文批改、启发式教学和情感支持等特色功能。该项目致力于服务老师、学生和家长等不同用户群体,通过提供智能化的工具来促进个性化教育,实现“因材施教”的教育理念。项目代码、模型和部分数据均已开源,供研究者进行本地化部署和学术探索。
功能列表
- 开放问答: 能够回答用户提出的各种通用问题和与课程相关的具体知识点。
- 启发式教学: 模仿苏格拉底式的提问,通过连续追问和引导,激发学生的独立思考能力,而不是直接给出答案。
- 作文批改: 对用户提交的作文进行分析,从多个维度提供修改建议和评价。
- 情感支持: 具备识别和回应用户情绪的能力,可以进行心理层面的对话和疏导,为学生提供情感陪伴。
- 代码与模型: 项目开源了包括基于 Baichuan、Qwen 等不同参数规模的系列模型,以及数据清洗工具和部署脚本。
- 多种部署方式: 支持直接在服务器通过命令行进行交互,也提供了基于 Gradio 的网页版演示(WebUI)和 API 服务接口,方便集成和使用。
使用帮助
EduChat 提供了详细的本地化部署流程,用户可以根据自身设备情况,选择合适的模型进行搭建。整个过程主要分为环境配置、下载资源和运行程序三个阶段。
第一步:环境准备
在开始部署前,需要确保你的服务器满足基本的硬件和软件要求。运行 EduChat 模型需要使用到支持 CUDA 的 NVIDIA 显卡。以 7B(70亿参数)模型为例,在半精度(FP16)模式下,大约需要 15GB 的显存。
- 克隆代码库首先,通过
git
命令将 EduChat 的官方代码库下载到你的本地服务器或个人电脑中。git clone https://github.com/ECNU-ICALK/EduChat.git
然后进入项目目录。
cd EduChat
- 创建并激活 Conda 环境为了隔离项目所需的 Python 依赖,避免与其他项目产生冲突,官方推荐使用 Conda 创建一个独立的环境。
# 创建一个名为 educhat 的环境,并指定 Python 版本为 3.8 conda create --name educhat python=3.8 # 激活该环境 conda activate educhat
- 安装依赖库EduChat 的运行依赖于 PyTorch 和 Transformers 等核心 Python 库。你需要先安装 PyTorch,再安装其他依赖。
# 请根据你的显卡 CUDA 版本,从 PyTorch 官网查找并安装对应的版本 # 例如: pip install torch torchvision torchaudio # 安装最新版本的 Transformers 库 pip install transformers
第二步:下载模型
EduChat 开源了多个不同大小和基座的模型,你可以访问其 GitHub 页面或 Hugging Face 主页,选择需要的模型权重文件进行下载。例如,下载 educhat-sft-002-7b
模型。下载后,将模型文件存放在一个方便访问的路径下。
第三步:运行与使用
EduChat 的模型分为基座(base)模型和微调(sft)模型。其中,微调模型在使用时需要根据不同功能,在用户输入的问题前添加特定的“系统提示”(system_prompt)。
- 选择系统提示根据你希望模型执行的任务,选择对应的
system_prompt
。- 用于开放问答:
system_prompt = \ "<|system|>"'''你是一个人工智能助手,名字叫EduChat。 - EduChat是一个由华东师范大学开发的对话式语言模型。 EduChat的工具- Web search: Disable. - Calculators: Disable. EduChat的能力- Inner Thought: Disable. 对话主题- General: Enable. - Psychology: Disable. - Socrates: Disable.'''"</s>"
- 用于启发式教学:
system_prompt = \ "<|system|>"'''你是一个人工智能助手,名字叫EduChat。 - EduChat是一个由华东师范大学开发的对话式语言模型。 EduChat的工具- Web search: Disable. - Calculators: Disable. EduChat的能力- Inner Thought: Disable. 对话主题- General: Disable. - Psychology: Disable. - Socrates: Enable.'''"</s>"
- 用于情感支持:
system_prompt = \ "<|system|>"'''你是一个人工智能助手,名字叫EduChat。 - EduChat是一个由华东师范大学开发的对话式语言模型。 EduChat的工具- Web search: Disable. - Calculators: Disable. EduChat的能力- Inner Thought: Disable. 对话主题- General: Disable. - Psychology: Enable. - Socrates: Disable.'''"</s>"
- 用于开放问答:
- 单张显卡命令行交互下面是一个在单张 A100/A800 显卡上运行
educhat-sft-002-7b
模型的示例代码。你可以创建一个 Python 文件,将代码复制进去并运行。import torch from transformers import LlamaForCausalLM, LlamaTokenizer # 设置模型路径,请替换为你自己下载的模型名称或路径 model_path = "ecnu-icalk/educhat-sft-002-7b" # 加载分词器和模型 tokenizer = LlamaTokenizer.from_pretrained(model_path) model = LlamaForCausalLM.from_pretrained( model_path, torch_dtype=torch.float16, # 使用半精度以节省显存 ).half().cuda() # 将模型加载到GPU model.eval() # 切换到评估模式 # 1. 定义系统提示(此处以情感支持为例)和第一轮问题 system_prompt = "<|system|>"'''你是一个人工智能助手,名字叫EduChat...(此处省略,请使用上面提供的完整 prompt)'''"</s>" question = "你好" query = system_prompt + f"<|prompter|>{question}</s><|assistant|>" # 2. 模型推理 inputs = tokenizer(query, return_tensors="pt", padding=True).to(0) outputs = model.generate( **inputs, do_sample=True, temperature=0.7, top_p=0.8, repetition_penalty=1.02, max_new_tokens=256 ) # 3. 解码并打印模型的回复 response = tokenizer.decode(outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=True) print(response) # 4. 进行多轮对话 # 将上一轮的回复拼接到对话历史中,并发起新的提问 next_question = "给我推荐几本心理相关的书籍" query = query + response + f"</s><|prompter|>:{next_question}</s><|assistant|>:" inputs = tokenizer(query, return_tensors="pt", padding=True).to(0) outputs = model.generate( **inputs, do_sample=True, temperature=0.7, top_p=0.8, repetition_penalty=1.02, max_new_tokens=256 ) response = tokenizer.decode(outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=True) print(response)
- 启动网页版 Demo为了方便普通用户使用,项目提供了基于 Gradio 的网页交互界面。
# 运行仓库中提供的脚本 python demo/educhat_gradio.py --model_path /path/to/your/educhat_model
执行后,脚本会输出一个本地网址(通常是
http://127.0.0.1:7860
),在浏览器中打开即可看到图形化操作界面。
应用场景
- 智能辅导与答疑学生在完成作业或复习课程时,可以将遇到的难题或不理解的知识点随时向 EduChat 提问。它能像一个私人助教一样,提供解题思路和相关的知识背景,帮助学生巩固学习内容。
- 个性化学习伙伴EduChat 能够根据学生的回答和提问方式,采用启发式教学模式,引导学生独立思考。同时,它还能提供情感支持,在学生感到焦虑或沮丧时进行鼓励和疏导,成为一个有温度的学习伴侣。
- 辅助教师备课与出题教师可以利用 EduChat 快速生成针对特定知识点的练习题、阅读材料或课程大纲。同时,也可以使用它的作文批改功能,对学生的写作进行初步评估,减轻批改作业的负担,提升教学效率。
QA
- EduChat 和其他通用大模型(比如 GPT)有什么区别?最主要的区别在于垂直领域和数据。EduChat 专为教育场景设计,使用了大量教育相关的专业数据进行微调,因此在课程问答、启发式教学、作业批改等教育任务上的表现更专业、更贴切。通用大模型知识面更广,但在教育场景的理解深度和引导性上可能不如 EduChat。
- 运行 EduChat 需要什么样的电脑配置?运行 EduChat 需要配备 NVIDIA 显卡,且显存大小是关键。例如,运行 7B(70亿参数)模型至少需要约 15GB 显存,13B 模型则需要更大显存。如果配置不足,模型将无法正常加载和运行。
- 这个项目可以免费商用吗?不可以。根据项目的开源协议,代码遵循 Apache 2.0 协议,但数据和模型仅供研究目的使用,明确禁止商业用途。