一款基于 Gradio 的教学内容测验题生成工具

117 阅读5分钟

📘 文本转测验题目生成器(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)

  1. 进入项目目录

cd d:\Projects\VScode\魔乐社区\打榜赛道\text2quiz-ds

  1. 创建虚拟环境并安装依赖

python -m venv .venv

.\.venv\Scripts\activate

pip install -U pip

pip install gradio openmind

  1. 配置环境变量(示例)

$env:OPENMIND_HUB_ENDPOINT = "https://modelers.cn"

$env:RUN_MODE = "predict"

  1. 运行应用

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.6top_k=50top_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 安装缓慢,可配置国内镜像源;遇证书或网络问题请参考企业内网代理配置。