考题生成引擎 Exam Question Generator
> 把任意知识库(制度文件、教材、规范、法规)变成标准化考题的引擎。五种题型、100% 可溯源、自动查重、JSON 结构化输出、一键导出 Word 试卷。换知识库即换行业。
触发条件
当用户表达以下意图时激活本 Skill:
- 「帮我出 5 道单选题」「生成一套培训考核试卷」「组一套合规考试题」
- 「基于这份制度文件出题」「根据教材知识点生成随堂测验」
- 「制作岗位认证考试题库」「新员工入职考试题」
核心能力
- 五种题型:单选题、多选题、判断题、填空题、简答题
- 知识溯源:每道题强制带
origin出处字段,可定位到原文章节条款,杜绝模型臆造 - 智能查重:传入历史题库自动规避重复考察点、提问角度、题干表述与选项设置
- 结构化输出:统一 JSON Schema(含题目、选项、答案、出处、难度、知识点标签),可直接对接任意下游考试系统
- 试卷导出:JSON → Word 标准试卷(含答题卡 / 答案解析),支持批量多题型组卷
适用行业(示例)
| 行业 | 知识库来源 | 典型场景 |
|---|---|---|
| 金融/保险 | 合规制度、产品手册、行业规定 | 合规考试、产品认证、培训考核 |
| 制造/能源 | 安全生产规程、操作手册、质量标准 | 安全考试、岗位操作认证 |
| 医疗/医药 | 诊疗规范、管理制度 | 医疗合规、知识考核 |
| 教育/培训 | 教材、教学大纲、课程标准 | 教辅出题、随堂测验、模拟卷 |
| 政企/事业单位 | 行政制度、业务规范 | 制度考核、入职培训、晋升考试 |
| 互联网/科技 | 技术规范、安全基线、内部流程 | 技术等级认证、安全合规考试 |
使用步骤
方式一:命令行快速出题(有 LLM API Key)
# 1. 配置模型(OpenAI 兼容接口均可)
export LLM_BASE_URL="https://api.openai.com/v1"
export LLM_API_KEY="sk-xxx"
export LLM_MODEL="gpt-4o"
# 2. 准备请求 JSON
cat > request.json << 'EOF'
{
"questionType": "单选题",
"questionCount": 3,
"knowledgeContent": "第三条:设备管理遵循安全第一、预防为主的原则。",
"historyQuestions": []
}
EOF
# 3. 生成考题
python scripts/batch-generate.py request.json --out result.json
# 4. 校验并导出 Word 试卷
python scripts/validate.py result.json
python scripts/export-docx.py result.json --title "2026年一季度考核试卷"
方式二:接入可视化平台(零代码)
- Dify → 见
references/platforms/dify.md(工作流节点配置) - Coze → 见
references/platforms/coze.md(Bot + 工作流搭建) - 自建 API → 见
references/platforms/custom-api.md
方式三:单题型手动生成(任意 LLM 对话)
从 references/prompts/ 复制对应题型提示词,替换 4 个占位符后发给任意 LLM:
{{QUESTION_TYPE}}、{{QUESTION_COUNT}}、{{KNOWLEDGE_CONTENT}}、{{HISTORY_QUESTIONS}}
不变量(任何场景均不可违反)
- 知识约束:题目必须基于知识库/知识点原文生成,无原文依据不命题,严禁模型臆造
- 溯源强制:每道题必须包含
origin字段,精确到章节/条款 - 数量上限:单次出题数量 1-20 道,超过 20 自动截断为 20
- 查重规则:
historyQuestions非空时必须执行差异化(考察点/角度/题干/选项四维规避) - 输出规范:必须为合法 JSON,符合
references/schema/定义,可被下游直接解析
目录导航
exam-question-generator/
├── SKILL.md # 本文件(入口)
├── README.md # 安装与使用说明
├── package.json # 包元数据
├── LICENSE # MIT 许可
├── references/
│ ├── architecture.md # 六层流水线架构(平台无关)
│ ├── prompts/ # ★ 5 种题型参数化提示词模板
│ ├── schema/ # ★ JSON Schema 定义(含选项/不含选项)
│ ├── dedup-rules.md # 查重与差异化规则详解
│ ├── knowledge-base.md # 知识库切分与检索策略
│ ├── quality-checklist.md # 质量验收清单(AC 标准)
│ └── platforms/ # 各平台部署指南
└── scripts/
├── validate.py # JSON 校验 + 查重(纯标准库)
├── batch-generate.py # 批量出题(多题型并行)
└── export-docx.py # JSON → Word 试卷导出
快速验证(无需 API Key)
校验器可脱离模型独立运行,用任意考题 JSON 即可自检:
cat > sample.json << 'EOF'
{"questionList":[{"questionType":"判断题","question":"设备管理部门可以将维保工作完全外包后不再承担管理责任。","optionList":[{"A":"正确"},{"B":"错误"}],"answer":"B","origin":"第二十条:委托外部单位维护保养的,仍应履行监督管理职责。","difficulty":"hard","knowledgePoint":"外包管理"}]}
EOF
python scripts/validate.py sample.json
# 期望输出: ✅ 全部通过
常见问题
| 问题 | 解决 |
|---|---|
| 模型输出不纯 JSON | ① Prompt 末尾已强制"只输出JSON" ② 降 temperature 至 0.2 ③ validate.py 兜底修复 |
| 出题数量不足 | ① 增大 max_tokens 至 4096+ ② 提供更丰富的 knowledgeContent |
| 题目与知识库不符 | 检查 knowledgeContent 是否真实来自知识库检索;RAG 检索 top_k 建议 3-5 |
| 查重不生效 | historyQuestions 必须传 JSON 数组(空则 []),不能传空字符串 |
| 换行业效果不佳 | 按 references/knowledge-base.md 重新切分知识库并验证检索质量 |
License
MIT