iT邦幫忙

2026 iThome 鐵人賽

DAY 12
0
ChatGPT & Codex

AI Visual Learning Lab: 30 天用 ChatGPT × Codex 打造 AI 視覺化學習工具系列 第 12 篇

Day 12|AI 幫我整理教材還不夠,我想讓它帶我學

  • 分享至 

  • xImage
  •  

前幾天的 Visual Learning Lab 已經慢慢長出一套完整的分析流程。

丟進一份 PDF 之後,它會整理 Quick Summary、Key Concepts、Relationships,也會去看教材裡面的公式、Diagram、Graph 和 Waveform。接著再根據內容判斷該畫 Concept Map、Visual Flow 還是 Comparison。

Day 9 又加了 Explain This,Day 11 則讓 Concept Map 和 Flow 裡面的節點也能直接往下問。

做到這裡之後,功能其實已經不少了。

但我重新用了一遍自己的東西,發現一個很明顯的問題:

它很會分析教材,但還是不太會「教」。

使用者打開結果之後,會一次看到摘要、概念、關係、Visual Evidence、Concept Map,資訊其實很多。但到底應該先看什麼?哪些概念要先懂?哪一個東西其實是下一個東西的前置知識?

目前都還是使用者自己決定。

所以 Day 12 我決定先不繼續增加另一種圖,也先不做原本排好的 Source Check。

今天直接做一個比較大的功能:

Guided Learning Mode。

也就是把前面 AI 已經理解好的教材,重新整理成一條真的可以一步一步走的學習路徑。

從「這是分析結果」變成「跟著我學」

以前 Visual Learning Lab 的流程比較像:

上傳教材
↓
AI 分析
↓
摘要 / 概念 / 圖表 / 視覺化
↓
使用者自己看

Day 12 之後,我想把最後一段改掉。

現在多了一條 Guided Learning:

上傳教材
↓
AI 理解整份內容
↓
安排學習順序
↓
一次只學一個 Step
↓
卡住可以 Explain This
↓
最後 Knowledge Check

這個差別對我來說滿大的。

因為前面幾天做的東西主要是在回答:

AI 可以把教材整理成什麼?

今天開始比較像是在問:

AI 整理完之後,要怎麼讓使用者真的跟著它學?

learning_path 不只是把 Key Concepts 排成 1、2、3

這次我沒有另外再呼叫一次 API 去產生課程。

Guided Learning 的內容直接被加進原本的 Structured Output,跟 Quick Summary、Key Concepts、Concept Map、Visual Flow 一起,在第一次分析教材時就產生。

新增的核心結構叫做 learning_path,大概長這樣:

{
  "learning_path": {
    "suitable": true,
    "title": "Understanding and Manipulating Sinusoids",
    "steps": [
      {
        "id": "step_1",
        "title": "Read the sinusoid model",
        "learning_goal": "...",
        "explanation": "...",
        "source_pages": [2],
        "connection_to_previous": "..."
      }
    ],
    "checkpoint_questions": [
      {
        "id": "q1",
        "question": "...",
        "options": [...],
        "correct_option_id": "a",
        "explanation": "...",
        "source_pages": [2]
      }
    ]
  }
}

我特別不希望它只是把 Key Concepts 原封不動排成一個列表。

因為「重要概念有哪些」和「這些概念應該用什麼順序學」其實不是同一件事。

例如這次拿 Sinusoids 的教材測試,它最後安排成 5 個 Step。

第一步先從正弦波最基本的模型開始,理解 V_m、ω、t 和 θ 在 v(t)=V_m cos(ωt+θ) 裡分別代表什麼。

https://ithelp.ithome.com.tw/upload/images/20260926/201841583rG5Hr0m1D.png
到了第二步才開始進 period 和 phase,接著逐漸碰到三角關係與 sine、cosine 的組合。

這個順序至少是有「前一個概念幫下一個概念鋪路」的,而不是五張互相獨立的卡片。

每一步除了標題之外,現在都有 Goal、Explanation、Why this comes next 和 Source。

其中我最喜歡的其實是 Why this comes next。

因為它不是只告訴我「現在要學這個」,還會解釋為什麼這個東西應該接在前一步後面。

像其中一個 Step 在學如何把 sine 和 cosine 組合成單一 sinusoid 時,它會說這一步是在利用前面剛學過的 identities 和 phase concepts,把更一般的 sinusoidal expression 簡化。

這種內容以前其實也存在教材裡,只是散落在不同頁、不同公式之間。

現在它開始被整理成一條「學習順序」。

Next 和 Previous 完全不需要再問 AI

這次有一個架構上的點我很在意。

如果每按一次 Next,就重新呼叫 OpenAI 一次,那這個功能一定會又慢又浪費 API。

所以整條 learning path 是第一次分析教材時就一起生成的。

之後的 Step 1 → Step 2 → Step 3 → Step 4,其實都只是 Streamlit 在切換已經存在的 structured data。

目前進度存在 st.session_state 裡,所以 Streamlit rerun 之後也不會突然忘記現在走到哪一步。

畫面上會顯示 Step 2 of 5,上面再放一條 progress bar,讓使用者知道現在大概走到整份教材的哪裡。

所以這部分其實完全沒有額外 AI 成本。

操作 是否呼叫 OpenAI
第一次 Visualize 教材 是
Previous / Next 否
切換 Guided Learning Step 否
Quiz 作答與判分 否
Explain this step 是

這也是我今天做這個功能時很想守住的一件事:互動不等於每一個按鈕都要呼叫 AI。

如果東西已經在第一次分析時產生,就應該盡量把後面的互動留在本地完成。

看不懂某一步,可以直接 Explain This

不過 Guided Learning 如果只有 Previous 和 Next,其實很容易變成另一種簡報模式。

所以 Day 9 做的 Explain This 這次也被接進來了。

如果某一步看不懂,可以直接按 Explain this step。

它沒有另外做一套新的 explanation system,而是繼續沿用原本的 Structured Output:

  • In simple terms
  • Why it matters
  • Intuition or example
  • Source context

差別只是現在多了一種 learning_path_step target。

系統會把目前這一步的 title、learning goal、原本 explanation、connection_to_previous、source pages,以及前後 learning step 的資訊一起當成 context。

所以它不只是解釋某一句話,而是知道「你現在正在這條學習路徑的哪裡」。

https://ithelp.ithome.com.tw/upload/images/20260926/20184158jBdu5dJAmZ.png
像這次走到 phasors、impedance 和 admittance 時,Explain This 不只介紹 phasor 是什麼,也有接回前面剛學過的 amplitude-and-phase representation,說明為什麼前面的三角處理會成為後面電路分析的基礎。

這就跟 Day 11 的 Visual Flow 有點像。

我現在越來越不想讓 Explain This 只收到一個孤立的名詞,而是希望它知道:

「使用者是在什麼脈絡下卡住的。」

最後真的考我三題

Guided Learning 的最後不是「恭喜完成」。

我加了一個 Knowledge Check。

目前預設是 3 題選擇題,每一題通常有 4 個選項,而且題目也是第一次分析教材時就跟 learning path 一起產生。

這代表使用者選答案後,系統根本不需要再問 AI「他答對了嗎?」

因為 Structured Output 裡面已經有 correct_option_id 和 explanation。

所以按 Check answer 時只是本地判斷。

答對會直接顯示:

Correct

答錯則會顯示:

Not quite

接著再把原本生成好的解釋顯示出來。

我測試時還刻意答錯。

例如其中一題問:

把 sin(ωt) 改成 sin(ωt+φ),但 amplitude 和 frequency 都不變,會造成什麼效果?

我故意選「週期會從 T 變成 T/2」。

系統直接判定 Not quite,然後再顯示原本準備好的 explanation,而不是為了糾正我重新打一個 API request。

三題都回答完之後,最後會直接得到這次 Knowledge Check 的結果。

https://ithelp.ithome.com.tw/upload/images/20260926/20184158ifdVpvwfBq.png
我這次故意答錯兩題,所以最後是 1 / 3 correct。

目前我沒有把這個分數拿去判斷「你很弱」、「你已經精通」之類的東西。

因為三題測驗根本沒有資格替一個人的能力貼標籤。

它現在就只是很單純地告訴使用者:

這三題你答對了幾題。

我覺得這樣反而比較合理。

這次最大的改動,其實不是 Quiz

Day 12 這次算是目前改動比較大的一天。

最後 commit 顯示 4 個檔案總共大約有 830 行新增、20 行刪除,除了 app.py 之外,README、AGENTS 和 PRODUCT_VISION 也一起更新。

但真正讓我覺得這一天比較重要的,不是因為多了 800 多行,也不是因為終於有 Quiz。

而是前面幾天做的那些東西,開始真的串起來了。

Quick Summary 不再只是摘要。

Key Concepts 不再只是條列。

Concept Map 和 Flow 不再只是圖片。

Explain This 也不再只是掛在某幾段文字下面。

現在它們開始共同支撐一個完整一點的學習流程:

AI 理解教材
↓
整理教材結構
↓
選擇合適的視覺化
↓
安排 Guided Learning
↓
逐步學習
↓
卡住就 Explain This
↓
Knowledge Check

我覺得這才比較接近 Visual Learning Lab 一開始真正想做的事情。

不是把一份 PDF 壓縮成另一份比較短的文字,而是把原本不好進入的教材,重新整理成一個比較容易理解、可以互動、也可以逐步往下走的學習介面。

Day 12:從 output 開始變成 learning experience

如果只看功能名稱,Guided Learning 好像只是又新增一個區塊。

但對整個專案來說,我覺得它比較像一次方向上的改變。

前十一天,大部分時間都在想:

AI 能不能更完整地理解教材?

現在開始,我想問的是:

理解完之後,產品要怎麼幫人學?

今天這個版本當然還很初階。

學習路徑目前是一次生成的,還不會根據 Quiz 結果動態改變;答錯也不會自動把你送回對應的 Step;Source Check 還沒真正做進來;Guided Learning 也還沒有把 Concept Map 裡的節點直接嵌進每一步。

但至少它第一次不只是把所有答案攤在螢幕上。

它開始試著說:

先看這個。

懂了之後,再往下一步。

如果這裡卡住,就直接問。

最後,再確認一次自己到底有沒有理解。

我覺得這比再多做一種 visualization,更接近我現在想把 Visual Learning Lab 做成的樣子。

GitHub Repo:
https://github.com/f24131128-lgtm/visual-learning-lab


上一篇
# Day 11|圖畫出來還不夠:我開始讓 Concept Map 和 Flow 可以繼續往下
下一篇
Day 13|答錯之後不要只顯示紅字:我讓 AI針對複習
系列文
AI Visual Learning Lab: 30 天用 ChatGPT × Codex 打造 AI 視覺化學習工具 共 18 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言