iT邦幫忙

2026 iThome 鐵人賽

DAY 14
0

做到 Day 13 之後,Visual Learning Lab 已經開始有一條滿完整的學習流程了。

教材丟進去之後,AI 會先分析內容,再決定要畫 Concept Map、Visual Flow 或 Comparison;接著可以進 Guided Learning,一步一步學,最後做 Knowledge Check。答錯之後,Adaptive Review 又會把錯誤對應回原本的 Learning Step,產生 Focused Review,再做一次 Retry Check。

功能其實已經不少。

但我開始遇到另一個問題:

這些功能雖然都在同一個網站裡,彼此卻還是有點像一座一座分開的小島。

Concept Map 是一張圖。

Guided Learning 是另一個區塊。

Focused Review 又在更下面。

PDF 的來源頁碼雖然一直都在,但使用者看到某個概念時,還是很難直接從「這個概念」一路找到它對應的課程、複習內容和原始教材。

所以 Day 14 我決定不再增加新的 AI 功能,而是做一次比較大的整合。

我想把前面累積的所有 stable ID、learning step、source page、review mapping 全部接起來。

這次的主角叫:

Interactive Learning Canvas。

一張圖不應該只是最後輸出

最早做 Concept Map 時,我其實很容易滿足。

AI 可以把 Sinusoids 裡面的 amplitude、frequency、period、phase、trigonometric identities 畫成一張圖,看起來就已經比純文字摘要好多了。

但做到 Day 14 再回頭看,我開始覺得:

如果使用者看到「Amplitude V_m」這個節點,他下一步可以做什麼?

如果答案只有「看完它」,那這張 Concept Map 本質上還是靜態圖片。

所以這次我想把流程改成:

看到 Concept Map 裡的一個概念
↓
選到這個概念
↓
Learning Inspector
↓
看它跟哪些內容相連
↓
跳到相關 Guided Learning Step
↓
Explain This
↓
查看原始教材來源

重點不再只是把圖畫得更漂亮,而是讓圖開始變成整個學習流程的入口。

Learning Inspector:所有資訊回到同一個概念

這次最有感的新東西是 Learning Inspector。

例如我選到 Concept Map 裡面的 Amplitude V_m,Inspector 不只是顯示名稱。

它會告訴我這個 node 的角色,目前是不是需要複習、它跟哪些其他 Concept Map edge 相連、來源是哪幾頁,以及它對應到 Guided Learning 的哪一個 Step。

https://ithelp.ithome.com.tw/upload/images/20260928/20184158401cpQ7w2t.png
這張畫面裡可以看到:

Amplitude V_m 被標成 Needs review。

下面的 Context 會列出它跟 standard sinusoid form、equivalent form 之間的關係。

接著還直接找到:

Related lesson: Step 1 — Identify the standard sinusoid and its parameters

下面可以看到這個 lesson 的 learning goal。

這些資訊其實都不是 Day 14 才突然叫 AI 重新想的。

它們很多早就在前面幾天的 Structured Outputs 裡存在:

  • Concept Map node ID
  • edge
  • source_pages
  • learning_path step ID
  • related_step_ids
  • Adaptive Review 結果

Day 14 做的事情,是第一次把它們真的接在一起。

Concept Map 和 Guided Learning 終於不是兩套東西

以前 Concept Map 告訴我「這些概念彼此怎麼連」,Guided Learning 則告訴我「這些東西應該怎麼學」。

但是它們其實是兩個不同畫面。

現在 Learning Inspector 裡多了一個 Go to lesson step。

如果某個 Concept Map node 有對應的 Guided Learning Step,就可以直接跳過去。

https://ithelp.ithome.com.tw/upload/images/20260928/20184158SWCPB55al9.png
這次我實際跳到 Guided Learning 的最後一個 Step:

Combine sine and cosine components

畫面還是保留昨天做好的 Goal、Explanation、Why this comes next、Source,以及 Explain this step。

重點是這個跳轉完全不用再呼叫 AI。

它只是利用已經存在的 stable ID,把 Concept Map 裡的概念和 learning path 裡的 step 接起來。

這也是前面幾天一直堅持不要只靠文字 label 當 identity 的原因。

如果當初所有東西都只是「找名稱差不多的字串」,做到今天這種跨功能 navigation 大概會非常痛苦。

Adaptive Review 也開始回到同一張圖

Day 13 做 Adaptive Review 時,我們已經知道使用者答錯的題目跟哪些 learning steps 有關。

所以 Day 14 又再往前接一層。

如果某個錯誤對應到特定 learning step,而這個 step 又對應到 Concept Map node,那這個 node 就可以被標成「目前需要複習」。

這也是為什麼剛才 Amplitude V_m 在 Learning Inspector 裡會出現:

Needs review

它不是 AI 又重新判斷一次「你可能不會 amplitude」。

而是從實際的 Knowledge Check 錯誤一路追回來:

答錯 Question
↓
related_step_ids
↓
Guided Learning Step
↓
related visualization node
↓
Needs review

整條 mapping 都已經存在。

這比重新問模型「你覺得使用者應該複習什麼?」可靠很多,也不需要額外 API。

Focused Review 也沒有因此被丟掉

Day 13 做好的 Focused Review 這次全部保留。

https://ithelp.ithome.com.tw/upload/images/20260928/20184158sAcwt48l2K.png
像這次複習的重點包含 sinusoid parameters、phase 和 equivalent forms。

Review 裡還是會明確指出:

Do not use ω to identify the waveform's peak magnitude.

以及:

Do not interpret an added phase term as a change in amplitude.

下面再接 Focused explanation 和 Intuition or example。

也就是說,Day 14 並不是再做一套新的複習系統,而是把原本已經存在的 Adaptive Review 接回 Learning Canvas。

這個方向我現在越來越喜歡。

因為如果每天都只是增加一個新的 AI feature,很快就會變成:

有摘要、有圖、有 Quiz、有 Explain、有 Review……

但每一個功能都各自做自己的事情。

今天比較像是在做另一件事:

讓同一個 concept 成為所有功能共用的中心。

Retry Check 也還是同一條學習線

Focused Review 做完之後,下面原本的 Retry Check 也還在。

https://ithelp.ithome.com.tw/upload/images/20260928/20184158zWttPZZFlA.png
這些題目仍然不是原題直接重播,而是針對剛才的錯誤概念重新換一個方式測。

作答、判斷 Correct / Not quite、最後算 Retry result 一樣全部在本地完成,不會每選一個答案就再打一個 API request。

所以 Day 14 雖然畫面變得更互動,API 的原則其實沒有改:

操作 OpenAI API
點選 Concept / Flow node 否
Learning Inspector 否
Go to lesson step 否
View source 否
Guided Learning Previous / Next 否
Review navigation 否
Quiz / Retry grading 否
Explain this 必要時才呼叫
Build focused review 必要時才呼叫

我還是希望「互動」和「AI request」是兩件不同的事情。

我本來想直接做真正可以點的 Canvas

Day 14 原本其實還有一個更大的目標:

把 Graphviz 換成真正可以直接點 node、pan、zoom 的 interactive canvas。

我沒有自己從頭做一套前端,而是嘗試接現成的 interactive graph component,同時保留原本 Graphviz 當 fallback。

結果這次實際跑起來,interactive canvas 沒有成功載入。

畫面直接顯示:

The interactive canvas is unavailable. Showing the Graphviz view.

以前的我可能會覺得這代表 Day 14 失敗了。

但這次反而讓我很慶幸一開始沒有把原本的 Graphviz renderer 整個砍掉。

因為整個 Learning Inspector、Guided Learning mapping、Adaptive Review、來源關聯都還是可以繼續運作。

壞掉的只有「最漂亮的互動畫布」。

不是整個產品。

我覺得這反而是這次很重要的一個工程結果。

原本想做的是:

Interactive Canvas
↓
如果成功就使用

現在實際變成:

Interactive Canvas
↓
可以使用 → Interactive renderer

不能使用 → Graphviz fallback

使用者至少永遠還看得到圖。

而不是第三方 component 一掛,整個學習流程跟著消失。

一張圖,開始知道你現在正在做什麼

做到這裡後,Concept Map 對我來說已經跟 Day 7 完全不一樣了。

Day 7 的 Concept Map 是:

AI 幫我畫了一張概念圖。

Day 14 想做的是:

這張概念圖知道我現在正在學哪一課、剛剛哪一題答錯、哪些概念需要複習、可以跳去哪一個 lesson,也知道自己的來源在哪裡。

即使這次真正 clickable 的 interactive renderer 還沒有順利跑起來,我覺得底層最重要的連接已經開始成形了。

Visual Learning Lab 現在的資料其實慢慢變成一張很大的網:

PDF source
↕
Key Concepts
↕
Concept Map / Flow
↕
Guided Learning
↕
Knowledge Check
↕
Adaptive Review
↕
Focused Review

而這些東西不再只是按照頁面順序一塊一塊往下排。

它們開始知道彼此是同一個 concept。

Day 14:不是再加功能,而是開始把功能接起來

前面幾天我一直在增加能力。

Day 6 可以看 PDF 裡面的圖。

Day 7、8 開始知道該畫什麼。

Day 9 可以 Explain This。

Day 11 可以探索 visualization。

Day 12 開始 Guided Learning。

Day 13 開始根據錯誤做 Adaptive Review。

到了 Day 14,我反而第一次覺得「再增加一個新功能」不是最重要的事情。

真正重要的是:

前面這些東西是不是同一個產品。

今天的 Interactive Learning Canvas 還沒有完全做到我腦中想像的樣子。

真正直接點 Concept Map node 的 interactive renderer 還需要再處理,目前仍然會 fallback 回 Graphviz;Source Lens 也還有很多可以繼續做的地方。

但 Learning Inspector、lesson mapping、review state 和 source connection 已經開始把前十三天做的東西拉回同一條線上。

這次我覺得最值得留下來的不是一個新按鈕。

而是這句:

同一個概念,不應該在摘要、圖、課程、測驗和複習裡各自活一次。

它們應該是同一個東西,只是在不同學習情境裡,用不同方式出現。

Visual Learning Lab 到 Day 14,開始往這個方向走了。

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


上一篇
Day 13|答錯之後不要只顯示紅字:我讓 AI針對複習
下一篇
Day 15|AI 看懂公式還不夠:我讓它直接生出「可以玩的實驗」
系列文
AI Visual Learning Lab: 30 天用 ChatGPT × Codex 打造 AI 視覺化學習工具 共 18 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言