出题专家 (Quiz Expert)
本技能将引导你完成从源文档生成专业题库的全过程。
路径约定
在开始执行任务前,先确定关键路径:
- •$WORK_DIR:当前工作目录。执行
pwd(Linux/macOS) 或Get-Location(Windows) 获取,作为所有相对路径的基准。 - •$SKILL_DIR:本 skill 所在目录。根据 skill 名称
Jutiku_Quiz_Expert定位:- •Windows:
Get-ChildItem -Path . -Filter "SKILL.md" -Recurse | Where-Object { $_.FullName -like "*skills\Jutiku_Quiz_Expert*" } - •macOS/Linux:
find . -ipath "*/skills/Jutiku_Quiz_Expert/SKILL.md" - •获取到 SKILL.md 文件路径后,取其所在目录作为 $SKILL_DIR
- •Windows:
- •源文件目录:
$WORK_DIR/(用户上传的文件直接放在工作目录根部) - •转换文件目录:
$WORK_DIR/source/(存放 markitdown 转换后的 .md 文件) - •输出目录:
$WORK_DIR/quiz/(生成的题库文件,直接交付给用户) - •引用文件:使用相对于 $SKILL_DIR 的路径,如
$SKILL_DIR/references/QUIZ_JSON.md
路径结构示意:
$WORK_DIR/ # 当前工作目录
├── 2023年度报告.pdf # 用户源文件
├── source/ # 转换后的 markdown 文件
│ └── 2023年度报告.md
├── quiz/ # 输出目录(直接交付)
│ └── 2024-01-29_100000.json # 或 .md(根据用户指定)
└── temp/ # 存放其他临时处理文件
$SKILL_DIR/ # skill 所在目录
├── SKILL.md # skill 文件,即本文件
└── references/
├── QUIZ_JSON.md
└── QUIZ_MARKDOWN.md
工作流程 (Workflow)
0. 初始化路径
- •
确定工作目录:
- •Linux/macOS: 执行
pwd获取当前工作目录,设为$WORK_DIR - •Windows: 执行
Get-Location或cd获取当前工作目录
- •Linux/macOS: 执行
- •
定位 skill 目录:
- •Linux/macOS:
bash
SKILL_PATH=$(find . -ipath "*/skills/Jutiku_Quiz_Expert/SKILL.md" 2>/dev/null | head -1) SKILL_DIR=$(dirname "$SKILL_PATH")
- •Windows PowerShell:
powershell
$skillFile = Get-ChildItem -Path . -Filter "SKILL.md" -Recurse | Where-Object { $_.FullName -like "*skills\Jutiku_Quiz_Expert*" } | Select-Object -First 1 $SKILL_DIR = $skillFile.DirectoryName
- •Linux/macOS:
- •
创建必要的子目录:
- •Linux/macOS:
mkdir -p "$WORK_DIR/source" "$WORK_DIR/quiz" - •Windows:
New-Item -ItemType Directory -Force -Path "$WORK_DIR\source", "$WORK_DIR\quiz"
- •Linux/macOS:
1. 文件定位与准备
- •
定位源文件:在
$WORK_DIR/根目录下查找用户指定的文件。- •使用
ls $WORK_DIR/列出可用文件。 - •如果用户提供的是模糊名称,查找最匹配的文件。
- •使用
- •
格式转换:
- •如果文件不是
.md格式(例如 .doc, .docx, .pdf):- •环境检查:检查是否已安装
python(或python3) 和pip。- •如果未安装 Python:
- •主动询问安装:向用户说明缺少 Python 环境无法转换文件,询问:“是否允许我为您尝试自动安装 Python?”
- •若用户同意:
- •Windows: 尝试运行
winget install -e --id Python.Python.3(需管理员权限)。 - •macOS: 尝试运行
brew install python(需已安装 Homebrew)。 - •Linux: 尝试运行
sudo apt update && sudo apt install -y python3 python3-pip。
- •Windows: 尝试运行
- •若用户拒绝或自动安装失败:
- •暂停任务。
- •输出手动安装指南,建议用户访问 python.org 或使用系统包管理器安装,完成后再次触发。
- •如果未安装 Python:
- •工具检查与安装:
- •运行
markitdown --version检查是否已安装。 - •如果未安装:
- •Linux:
pip install markitdown --break-system-packages - •macOS/Windows:
pip install markitdown
- •Linux:
- •运行
- •转换:
- •使用
markitdown命令行工具将文件转换为 Markdown 格式。 - •命令格式:
- •Linux/macOS:
markitdown "$WORK_DIR/{源文件名}" > "$WORK_DIR/source/{同文件名}.md" - •Windows:
markitdown "$WORK_DIR\{源文件名}" > "$WORK_DIR\source\{同文件名}.md"
- •Linux/macOS:
- •注意:使用双引号包裹文件名以处理空格。
- •使用
- •环境检查:检查是否已安装
- •如果已经是
.md文件,复制到$WORK_DIR/source/{文件名}.md进行处理。
- •如果文件不是
2. 内容预处理与分析
- •
读取规则文档:
- •根据用户指定的输出格式,读取对应的规范文档:
- •JSON 格式:读取
$SKILL_DIR/references/QUIZ_JSON.md了解 JSON Schema 规范 - •Markdown 格式:读取
$SKILL_DIR/references/QUIZ_MARKDOWN.md了解 Markdown 模板规范
- •JSON 格式:读取
- •根据用户指定的输出格式,读取对应的规范文档:
- •
读取与分块检查:
- •读取
$WORK_DIR/source/中转换后的.md文件内容。 - •智能分块 (Smart Chunking):检查文本长度。
- •如果 字符数 > 15,000:
- •切分策略:按 Markdown 二级标题 (
##) 或三级标题 (###) 将文档切分为多个逻辑块 (Chunks)。确保切分点不破坏段落完整性。 - •配额分配:根据各块的篇幅比例或重要性,分配题目生成数量(如总共 20 题,A 章节占 20% 篇幅,则分配 4 题)。
- •执行模式:标记为
Batch_Mode,后续将对每个块独立生成,最终统一进入质量优化阶段进行合并去重。
- •切分策略:按 Markdown 二级标题 (
- •否则:保持单一大文本,标记为
Single_Mode。
- •如果 字符数 > 15,000:
- •读取
- •
属性打分:分析文本结构和内容(若是分块模式,取前 30% 内容或摘要进行分析),判断其类型(分值 0.0 - 1.0):
- •大纲型 (Outline-oriented):具有结构化的标题、要点、简短摘要。
- •知识/资料型 (Knowledge/Data-oriented):密集的段落、详细的解释、事实、数据。
- •
策略选择:
- •如果 大纲型得分 > 0.7:使用 大纲扩展模式。
- •提取大纲结构。
- •针对每个关键点/标题,生成涵盖核心概念的题目。
- •如果 知识型得分 > 0.7:使用 全覆盖模式。
- •分析全文内容(或逐个处理块)。
- •生成覆盖整个内容范围的题目,确保没有遗漏重要信息。
- •否则:使用平衡方法。
- •如果 大纲型得分 > 0.7:使用 大纲扩展模式。
3. 题目生成规则
根据选定的策略和输出格式生成题目,严格遵守对应规范文档中定义的生成规则与约束。
主要约束包括:
- •题型:单选、多选、判断、填空、简答。
- •判断题:选项固定为"A. 正确"和"B. 错误"。
- •难度:按 3:5:2 比例分布简单、中等、困难题目。
- •结构:确保所有必填字段完整(qid, type, explanation 等)。
4. 质量验证与优化 (Quality Assurance & Optimization)
在生成题目之后(特别是 Batch_Mode 下合并所有分块题目后),执行以下优化流程:
- •
全局去重 (Global Deduplication):
- •语义比对:检查所有生成的题目。如果两道题考察相同的知识点且问法高度相似,保留描述更清晰或难度更符合当前分布要求的一道。
- •覆盖率检查:确认合并后的题库是否覆盖了文档的所有关键章节。如果某章节题目被大量去重导致缺失,需针对该章节补充生成。
- •
分布再平衡 (Distribution Rebalancing):
- •统计当前题库的难度比例。如果偏离 3:5:2 严重,优先删除过多的难度层级题目,或尝试修改题目难度。
- •统计题型分布。确保符合用户期望(如有)。
- •
准确性核查 (Fact Check):
- •针对每一道题,回溯原文。
- •验证:正确答案是否能从原文中找到明确依据?
- •修正:如果发现幻觉或推断过度,根据原文修正答案或删除该题。
- •
逻辑性核查 (Logic Check):
- •检查选项:是否存在歧义?干扰项是否过于明显错误?
- •检查解析:
explanation是否清晰解释了为什么选 A 而不选 B?
- •
格式核查 (Format Check):
- •验证输出结构是否符合对应的 Schema 或模板规范。
- •确保所有必需字段 (
qid,lev,point等) 均已填充且类型正确。
5. 输出与交付
根据用户指定的格式(默认 JSON)在 $WORK_DIR/quiz/ 目录下生成文件。
JSON 格式(默认)
- •路径:
$WORK_DIR/quiz/{YYYY-MM-DD_HHMMSS}.json - •格式:遵循严格的 JSON 语法。
- •Schema:参见
$SKILL_DIR/references/QUIZ_JSON.md
Markdown 格式(可选)
- •路径:
$WORK_DIR/quiz/{YYYY-MM-DD_HHMMSS}.md - •格式:用户友好的可读格式。
- •模板:参见
$SKILL_DIR/references/QUIZ_MARKDOWN.md
交付方式
文件保存到 $WORK_DIR/quiz/ 后,用户可直接前往查看。
6. 响应模板 (Response Template)
任务成功完成后,请参照以下模板格式向用户汇报结果:
已根据文件 {源文件名} 的内容生成了 {题目数量} 道题目。
{处理说明}(例如:由于源文件为二进制 .doc 格式,已通过智能提取算法获取关键文本信息,并据此生成了包含{题型列表}的完整试卷。)
生成文件信息:
- •文件路径:
{输出文件绝对路径} - •题目数量:
{题目数量}道 - •包含内容:
- •{内容概览点1}(例如:常识判断、核心概念等)
- •{内容概览点2}
- •{内容概览点3}
- •最多列出10个
您可以直接使用该 {文件格式} 文件,或告知如果需要 Markdown 可读格式。
工具与命令
- •使用
pwd/Get-Location获取路径。 - •使用
view/ls/dir查看目录或文件。 - •使用
bash_tool或 PowerShell 执行命令。 - •使用
create_file保存最终输出文件。
用户请求示例
示例 1:默认 JSON 格式
"根据
2023年度报告.pdf生成 20 道题目"
执行流程:
- •初始化:获取 $WORK_DIR 和 $SKILL_DIR,创建子目录,识别输出格式为 JSON(默认)
- •读取规范:
view $SKILL_DIR/references/QUIZ_JSON.md - •查找:在
$WORK_DIR/找到2023年度报告.pdf - •转换:
markitdown "$WORK_DIR/2023年度报告.pdf" > "$WORK_DIR/source/2023年度报告.md" - •分析:数据密集 → 知识型模式
- •生成:创建 20 道题目(财务统计、战略目标等)
- •输出:保存到
$WORK_DIR/quiz/2024-01-29_100000.json - •响应:按照响应模板向用户汇报结果
响应示例:
已根据文件 2023年度报告.pdf 的内容生成了 20 道题目。
由于源文件为 PDF 格式,已通过 markitdown 工具提取文本内容,并据此生成了包含单选题、多选题、判断题的完整试卷。
生成文件信息:
- •文件路径:
$WORK_DIR/quiz/2024-01-29_100000.json - •题目数量:20 道
- •包含内容:
- •财务数据分析(营收、利润、增长率等)
- •战略目标与业务规划
- •风险管理与合规要求
您可以直接使用该 JSON 文件,或告知如果需要 Markdown 可读格式。
示例 2:指定 Markdown 格式
"根据
Python入门.docx生成 15 道题目,输出为 markdown 格式"
执行流程:
- •初始化:获取路径,创建子目录,识别输出格式为 Markdown
- •读取规范:
view $SKILL_DIR/references/QUIZ_MARKDOWN.md - •查找与转换:处理
Python入门.docx - •分析:大纲结构 → 大纲扩展模式
- •生成:创建 15 道题目
- •输出:保存到
$WORK_DIR/quiz/2024-01-29_100000.md - •响应:按照响应模板向用户汇报结果
响应示例:
已根据文件 Python入门.docx 的内容生成了 15 道题目。
源文件采用大纲式结构,已针对各章节关键知识点生成了包含单选题、填空题、简答题的试卷。
生成文件信息:
- •文件路径:
$WORK_DIR/quiz/2024-01-29_100000.md - •题目数量:15 道
- •包含内容:
- •基础语法(变量、数据类型、运算符)
- •控制流程(条件判断、循环结构)
- •函数与模块(定义、调用、导入)
您可以直接使用该 Markdown 文件,或告知如果需要 JSON 结构化格式。