📘 文本转测验题目生成器(Text2Quiz,主模型:Qwen)
一款基于 Gradio 的教学内容测验题生成工具。你只需粘贴任意学习材料(如员工手册、产品规格、课程章节等),系统即基于 MindSpore-Lab/qwen1_5_7b-chat 模型生成包含选择题、填空题与简答题的完整题组,帮助你快速构建测评题库,检验学习者对关键知识点的掌握程度。
说明:本应用仅介绍并使用 Qwen 主模型生成流程,不涉及或描述任何备用模型或第三方 API 调用。
体验链接:tempera/ChatBot
✨ 主要特性
-
多题型覆盖:自动生成选择题、填空题、简答题三类题目,适配不同教学与评测场景。
-
严格基于原文:系统提示词限制模型必须基于用户提供的文本生成题目,避免引入外部知识或臆测。
-
统一格式输出:按照 Markdown 结构化排版,并为每道题提供明确的参考答案,便于复用与导出。
-
交互友好:Gradio 提供简洁直观的网页界面,一键生成测验题目并即时预览。
-
稳健解析:针对 openmind pipeline 的返回结构做了兼容处理,保证结果正确提取与展示。
🧩 架构与工作原理
- 模型与框架:
- 主模型:MindSpore-Lab/qwen1_5_7b-chat
- 推理框架:openmind pipeline(framework="ms",信任远程代码 trust_remote_code=True)
- 关键环境变量:
- OPENMIND_HUB_ENDPOINT:模型中心地址(示例为 https://modelers.cn)
- RUN_MODE:运行模式(设置为 predict)
- 系统提示词(摘要):
- 明确要求基于用户文本生成三类题型:选择题(四选一)、填空题、简答题。
- 强制每道题末尾提供 **答案:** 字样的参考答案。
- 使用 ### 选择题、### 填空题、### 简答题 分隔三个题型板块。
- 流程概述:
1. 用户输入源文本;
2. 组装 messages(system+user);
3. 调用 Qwen 进行文本生成(控制采样参数如 temperature、top_k、top_p、max_new_tokens);
4. 解析 pipeline 返回结构为最终 Markdown 内容;
5. 在界面中展示生成的题目集。
- 返回解析函数:
- extract_pipeline_content(result) 针对 pipeline 返回的多种 list/dict 嵌套格式,统一提取 content 字段并进行清理。
⚡ 快速开始(Windows)
- 进入项目目录
cd d:\Projects\VScode\魔乐社区\打榜赛道\text2quiz-ds
- 创建虚拟环境并安装依赖
python -m venv .venv
.\.venv\Scripts\activate
pip install -U pip
pip install gradio openmind
- 配置环境变量(示例)
$env:OPENMIND_HUB_ENDPOINT = "https://modelers.cn"
$env:RUN_MODE = "predict"
- 运行应用
python app.py
启动后在浏览器打开 Gradio 提供的本地地址(如 http://127.0.0.1:7860),粘贴文本并点击按钮生成题目。
🧑💻 使用指南
-
输入:将你的学习材料粘贴到文本框(建议至少几百字,以便覆盖更多知识点)。
-
点击:按下「🎓 一键生成测验题目」。
-
输出:在结果区域查看自动生成的三类题目,含参考答案;可复制到你的题库系统或文档中。
题型结构约定:
-
### 选择题:每题选项 A/B/C/D,唯一正确答案; -
### 填空题:从原文中挖空关键片段,答案必须来自文本; -
### 简答题:要求基于文本内容进行解释或总结,附简要参考答案。
🛠️ 故障排查
- Qwen 模型初始化失败
- 现象:控制台出现 主模型 Qwen 1.5 7B 初始化失败: ...;
- 处理:
1. 检查网络连通性与模型中心地址 OPENMIND_HUB_ENDPOINT;
2. 确认 openmind 安装与版本兼容;
3. 检查 framework="ms" 与 trust_remote_code=True 配置是否正确。
- 输出质量不稳定(题目不完整或格式偏差)
- 处理:
1. 适当降低 temperature(如 0.4~0.6),保持题目更规范;
2. 增加/强化系统提示词的约束;
3. 提供更清晰、更结构化的源文本(加小标题、分条说明)。
- Gradio 页面无法打开或运行异常
- 处理:
1. 检查 Python/依赖安装是否成功;
2. 查看终端报错信息并按提示修复;
3. 关闭占用端口的进程或修改端口后重试。
🚀 性能与优化建议
-
采样参数:建议
temperature=0.6、top_k=50、top_p=0.95获取较平衡的多样性与规范性; -
输出长度:根据文本规模设置
max_new_tokens(示例 1024); -
提示词强化:保持系统提示词对题型、格式与答案标注的明确要求;
-
日志:在关键路径打印日志信息,方便定位初始化与推理问题。
🔐 安全与合规
-
避免在代码中硬编码任何敏感信息;
-
对外展示时谨慎处理原始文本中的个人隐私或受限内容;
-
依赖管理遵循最小权限与按需安装原则。
🧪 部署建议(可选)
-
本地运行:使用 venv/conda 隔离依赖,确保环境可重复;
-
Docker(示意):
FROM python:3.11-slim
WORKDIR /app
COPY . .
RUN pip install -U pip && pip install gradio openmind
EXPOSE 7860
CMD ["python", "app.py"]
-
云端:如需部署到云托管或 Serverless,建议通过环境变量配置必要参数并启用访问控制。
🗺️ 路线图
-
增强题目难度分级(初阶/进阶/挑战);
-
支持题库导出为 Markdown/HTML/CSV;
-
引入更严格的输出校验与清理器(如违规格式自动修正);
-
扩展到多语言文本与跨领域素材。
🙏 致谢
-
开源模型与工具:MindSpore-Lab Qwen、Gradio、OpenMind Pipeline。
📎 依赖与环境建议清单
-
Python 3.10+
-
依赖:
gradio,openmind -
Windows 用户:如遇
pip安装缓慢,可配置国内镜像源;遇证书或网络问题请参考企业内网代理配置。