Home
學生控制台
註冊會員/登入
研究知情同意書
UeduGPTs
Aida 優學伴
Uedu Open
支援與訊息

UeduGPTs

--

Jupyters

3

AI 回覆桌面通知

AI 助教回覆完成時顯示桌面通知

聊天訊息通知

同學在討論區發送訊息時通知

聲音通知

每當有新通知時播放提示音

METHODOLOGY

Bloom's Taxonomy
認知層次分析方法論

說明 Uedu 平台如何透過大型語言模型(LLM)自動分類學生與 AI 助教對話中的認知層次,供教學研究者撰寫論文時參考。

1. 概述

Uedu 平台在學生與 AI 助教(UeduGPTs)的每一次對話中,自動對學生發送的訊息進行 Bloom's Revised Taxonomy 認知層次分類。此分析完全在後端執行,不影響學生的使用體驗,分析結果供教師在儀表板中檢視,亦可匯出供研究使用。

本文件說明此自動分類系統的完整方法論,包含理論依據、技術實作、Prompt 設計、資料品質控管等面向,協助研究者理解數據的產生過程。

目前 Prompt 版本

本文件描述的分類邏輯基於 v1.4,使用模型為 gpt-5-mini。歷次版本變更請見第 10 節

2. 理論基礎

本系統採用 Bloom's Revised Taxonomy(Anderson & Krathwohl, 2001)作為認知層次分類框架,將學生的認知操作分為由低到高的六個層次:

層次 英文 定義 學生訊息範例
1. 記憶 Remember 回憶、辨識事實性知識 「什麼是光合作用?」
2. 理解 Understand 解釋、歸納、推論意義 「為什麼要用遞迴?」
3. 應用 Apply 在新情境中執行或使用知識 「如何用 for 迴圈印九九乘法表?」
4. 分析 Analyze 分解要素、找出關係與結構 「這兩種方法差在哪?」
5. 評鑑 Evaluate 根據準則做出判斷 「A 和 B 方案哪個更適合?」
6. 創造 Create 整合元素產生新的東西 「幫我設計一個實驗方案」

分類原則

  • 依學生展現的認知操作分類,而非話題難度(簡單話題也可能展現高階認知操作)
  • 同一訊息涉及多層次時,以最主要的認知操作決定 bloom_level
  • 六個層次的分數(scores)總和為 1.0,反映各層次的佔比分布

3. 系統架構與資料流

以下流程圖說明一則學生訊息從送出到完成 Bloom 分類的完整資料流:

Bloom's Taxonomy 認知層次分析 — 資料流程圖 學生在 UeduGPTs 送出訊息 app.py 將訊息寫入 classroomgpt_my_log 記錄 log_id, chat_id, classroom_id, user_id, message 呼叫 analyze_bloom_async() 啟動背景 daemon thread(即時路徑) Step A:查詢對話脈絡 從 classroomgpt_my_log 取得前 2-3 輪 request/response 若學生訊息附帶圖片,一併取出並編碼為 base64 Step B:組裝 Prompt System Prompt(分類規則 + 六層次定義 + 輸出格式) User Message(對話脈絡 + 待分類學生訊息 + 圖片) Step C:呼叫 OpenAI API model=gpt-5-mini, response_format=json_object 失敗時最多重試 3 次 Step D:驗證與解析回應 JSON 格式驗證、bloom_level 合法性檢查、scores 數值驗證 驗證失敗則重試;最終失敗記錄 failure record Step E:寫入 classroomgpt_bloom_analysis INSERT IGNORE 確保冪等(同一 log_id 不重複寫入) 批次路徑(Batch Worker) 10 個並行 daemon thread 每 10 秒輪詢未分析的 log 依 log_id % 10 分區避免衝突 用於回補歷史資料 教師儀表板 / 匯出 API 查詢分析結果

流程摘要

  1. 學生在 UeduGPTs 送出訊息,app.py 將原始訊息寫入 classroomgpt_my_log 資料表
  2. 寫入完成後,立即呼叫 analyze_bloom_async() 啟動背景 thread
  3. 背景 thread 查詢該學生最近 2-3 輪的對話脈絡(含圖片)
  4. 將分類規則(System Prompt)與學生訊息(User Message)組裝後,呼叫 OpenAI API
  5. 解析 LLM 回傳的 JSON,驗證格式與欄位合法性
  6. 將分析結果寫入 classroomgpt_bloom_analysis

4. 分類 Prompt 設計

Prompt 採用 System / User 拆分模式(v1.2 起):

  • System Prompt:包含角色定位、分類規則、六個認知層次定義、判斷原則、輸出格式。此部分在同一 session 中固定不變,可受益於 LLM 的 prompt caching 機制。
  • User Message:僅包含待分類的學生訊息(可附帶對話脈絡與圖片)。

4.1 有意義性判斷(Meaningfulness)

分類前,LLM 會先判斷該訊息是否為有意義的學習訊息is_meaningful)。以下類型被視為無意義:

  • 招呼語 / 禮貌用語(謝謝、OK、好、嗯)
  • 測試訊息(123、test、aaa)
  • 純符號 / 表情符號
  • 工具性指令(翻譯、潤稿,不涉及認知操作)
  • 情緒反應 / 感嘆(好厲害、哇、太神了)
  • 閒聊(你是誰、講個笑話)
  • 確認 / 附和(了解、知道了、收到)
  • 重複 / 催促(快一點、繼續、???)
  • 純貼上無提問(只貼文字 / 程式碼但沒有問題)

短但有明確學習意圖的訊息仍判定為有意義,例如「為什麼?」「什麼是 DNA?」。

4.2 對話脈絡處理

系統會查詢學生當前訊息之前最近 2-3 輪的對話紀錄(學生提問 + AI 回覆)作為前文脈絡,但 LLM 只分類最後一則學生訊息,前文僅用於理解語境。

例如,當學生回覆「為什麼?」時,前文可以幫助判斷這是在追問概念解釋(Understand)還是在探究因果關係(Analyze)。

4.3 多模態支援

學生訊息可能附帶圖片(截圖、照片、手寫筆記等)。系統會將圖片編碼為 base64,以 OpenAI 的 multimodal content 格式送入 LLM,讓分類器能綜合文字與圖片內容進行判斷。

5. 輸出格式與欄位

LLM 回傳嚴格 JSON 格式,經系統驗證後存入資料庫。每一筆分析結果包含以下欄位:

欄位 型別 說明
is_meaningful Boolean 是否為有意義的學習訊息
bloom_level Enum 主要認知層次:remember / understand / apply / analyze / evaluate / create(無意義訊息為 NULL)
scores 6 個 Float 六個層次各自的佔比分數,總和 = 1.0
evidence Text LLM 提供的判斷依據(30 字以內)
skip_reason String 若 is_meaningful = false,記錄原因
method String 使用的模型名稱(如 gpt-5-mini)
prompt_version String Prompt 版本號(如 v1.4)
關於 scores 的解讀

bloom_level 代表 LLM 判定的主要認知層次(單一標籤),而 scores 六維分數則反映該訊息在各層次間的分布。研究者可依需求選用單一標籤(分布統計)或連續分數(雷達圖、軌跡分析)。

6. 資料處理雙路徑

系統採用即時路徑 + 批次路徑雙軌並行,確保每一則學生訊息都能被分析:

即時路徑(Real-time) 批次路徑(Batch)
觸發時機 學生送出訊息後立即觸發 背景 daemon 每 10 秒輪詢
實作方式 單一 daemon thread 10 個並行 daemon thread
(依 log_id % 10 分區)
用途 即時分析新訊息 回補歷史資料、處理即時路徑遺漏
防重複機制 資料庫 UNIQUE KEY on log_id,INSERT IGNORE 確保冪等

7. 資料品質控管

7.1 回應驗證

系統對 LLM 回傳的每一筆結果進行多層驗證:

  1. 非空驗證:檢查 LLM 是否回傳空內容(可能因 token 限制或異常終止)
  2. JSON 格式驗證:使用 response_format=json_object 強制 LLM 輸出 JSON,並在客戶端再次 parse 驗證
  3. bloom_level 合法性:確認為六個合法值之一,若 is_meaningful=true 但 bloom_level 無效則重試
  4. scores 數值驗證:確認六個分數皆為有效數值

7.2 重試機制

任何驗證失敗會觸發重試,最多重試 3 次,每次間隔 1 秒。若 3 次均失敗,系統會寫入一筆 failure record(method='error'),防止批次 worker 無限重試同一筆資料。

7.3 Prompt 版本追蹤

每筆分析結果都記錄使用的 prompt_versionmethod(模型名稱)。當 Prompt 或模型更新時,研究者可依版本號篩選資料,確保分析的一致性。

8. 教師可用的 API

教師(需具備該課程的教師 / 助教權限)可透過以下 API 取得分析資料:

API 端點 說明
GET /api/bloom/classroom/{id}/overview 全班認知層次分布概覽(各層次筆數、平均分數)
GET /api/bloom/classroom/{id}/students 每位學生的分析摘要(主要認知層次、平均分數)
GET /api/bloom/classroom/{id}/trajectory 認知層次時間軌跡(按週彙整,可篩選特定學生)
GET /api/bloom/classroom/{id}/export 匯出全班完整數據(JSON,按學生 × 週次彙整)

9. 研究引用建議

若您在學術論文中使用 Uedu 平台產生的 Bloom's Taxonomy 認知層次資料,建議在方法論章節中說明以下資訊:

方法論描述範本

學生與 AI 助教對話中的每則訊息,由 Uedu 平台自動進行 Bloom's Revised Taxonomy(Anderson & Krathwohl, 2001)認知層次分類。分類系統使用大型語言模型(LLM; OpenAI gpt-5-mini)作為分類器,透過結構化 Prompt(版本 v1.4)指示模型依據學生展現的認知操作(而非話題難度)判定主要認知層次,並輸出六維度分數分布。分類時納入前 2-3 輪對話脈絡以理解語境,並支援文字與圖片的多模態輸入。系統對每筆 LLM 回應進行格式與合法性驗證,失敗時最多重試三次。詳細方法論說明見 https://uedu.tw/doc/bloom。

建議同時提供以下資訊:

  • 資料收集期間使用的 Prompt 版本號(可從匯出資料的 prompt_version 欄位確認)
  • 使用的 LLM 模型名稱(可從 method 欄位確認)
  • 分析涵蓋的時間範圍與樣本量
  • 有意義 vs. 無意義訊息的比例

10. 版本歷程

版本 Prompt 模式 主要變更
v1.4 System / User 拆分 精簡版,針對 gpt-5-mini 優化,減少空回應。新增無意義類型(情緒反應、閒聊、確認附和、催促、純貼上)。新增多模態(圖片)支援說明。
v1.3 System / User 拆分 新增對話脈絡處理規則(只分類最後一則、前文僅供語境理解)
v1.2 System / User 拆分 首次拆分為 system prompt + user prompt,啟用 prompt caching
v1.1 合併式 新增 is_meaningful 有意義性判斷、skip_reason 欄位
v1.0 合併式 初始版本,基本六層次分類