說明 Uedu 平台的 AI 出題系統如何根據教學內容、題型與難度分布,透過 LLM 分批生成測驗題目,供教學研究者了解題目的產生過程。
Uedu 的 Quiz Generator(AI 出題系統)讓教師只需提供教學內容,即可由 LLM 自動生成多種題型與難度的測驗題目。系統核心為 QuizAIGenerator 類別,使用 gpt-5-mini 模型,支援中英雙語生成。
生成過程採用題型 × 難度分批策略,每個批次獨立呼叫 LLM,並透過 progress callback 即時回報進度,讓教師在前端看到即時的生成狀態。
教師在建立 AI 出題任務時,需提供以下參數:
| 參數 | 型別 | 說明 |
|---|---|---|
source_content | String | 教學內容文本,作為出題的知識來源 |
question_types | Dict | 欲生成的題型與各題型的題數,例如 {"multiple_choice": 10, "true_false": 5} |
difficulty_dist | Dict | 難度分布比例,例如 {"easy": 0.3, "medium": 0.5, "hard": 0.2} |
course_context | String | 課程背景資訊(選填),幫助 LLM 理解出題情境 |
language | String | 生成語言:zh(繁體中文)或 en(英文) |
| 題型代碼 | 說明 |
|---|---|
multiple_choice | 單選題(四選一) |
true_false | 是非題 |
fill_in_blank | 填充題 |
short_answer | 簡答題 |
essay | 申論題 |
| 等級 | 英文 | 說明 |
|---|---|---|
| 簡單 | easy | 記憶性、直接回想型題目 |
| 中等 | medium | 理解與應用型題目 |
| 困難 | hard | 分析、評鑑與創造型題目 |
系統透過 _calculate_difficulty_counts() 方法,將每種題型的總題數按難度比例拆分為各難度的實際題數:
floor(向下取整)假設 multiple_choice: 10 題,difficulty_dist: {"easy": 0.3, "medium": 0.5, "hard": 0.2}:
| 難度 | 比例 | 計算 | floor | 最終 |
|---|---|---|---|---|
| easy | 0.3 | 10 × 0.3 = 3.0 | 3 | 3 |
| medium | 0.5 | 10 × 0.5 = 5.0 | 5 | 5 |
| hard | 0.2 | 10 × 0.2 = 2.0 | 2 | 2 |
系統將出題任務拆分為題型 × 難度的批次矩陣。例如,若教師要求 multiple_choice(10 題)和 true_false(5 題),難度分布為 easy/medium/hard,則拆分為:
每個批次獨立呼叫一次 LLM API。
系統支援 progress callback 機制。每個批次完成後,callback 函數會被呼叫,回報:
current)total)progress,0.0 ~ 1.0)processing、completed、failed)前端透過輪詢進度 API 即時顯示生成狀態。
所有批次的題目生成完成後,系統會將全部題目隨機打亂順序(shuffle),並重新編排 question_order,確保不同難度與題型的題目均勻穿插。
LLM 生成的每道題目包含以下欄位:
| 欄位 | 型別 | 說明 |
|---|---|---|
question_text | String | 題目文本 |
question_type | String | 題型代碼(multiple_choice、true_false 等) |
difficulty | String | 難度等級(easy、medium、hard) |
options | Array | 選項列表(選擇題、是非題適用) |
correct_answer | String | 正確答案 |
explanation | String | 答案解析 |
question_order | Number | 題目順序(全部生成後隨機重排) |
AI 生成的題目為草稿,教師可在題庫中逐題檢視、編輯或刪除,確保題目品質符合教學需求。
測驗題目由 Uedu 平台的 Quiz Generator 模組(QuizAIGenerator 類別)自動生成。教師提供教學內容(source_content)、題型分布(question_types)與難度比例(difficulty_dist),系統以題型 × 難度的批次矩陣拆分任務,每個批次獨立呼叫 LLM(OpenAI gpt-5-mini)生成指定數量的題目。難度分布透過 _calculate_difficulty_counts() 依比例分配並補正捨入誤差。生成完成後,所有題目隨機打亂順序。系統支援繁體中文(zh)與英文(en)雙語生成,並可納入課程背景資訊(course_context)。生成的題目為草稿,需經教師檢視與編輯後方可用於正式測驗。詳細方法論說明見 https://uedu.tw/doc/quiz-generator。
建議同時提供: