iT邦幫忙

2026 iThome 鐵人賽

DAY 24
0
Build on Google AI

今天學什麼?30 天用 Google AI 打造智慧學習卡系列 第 24 篇

Day 24|AI 產生的教材可以直接用嗎?開始檢查 Learning Card 內容

  • 分享至 

  • xImage
  •  

昨天 Day 23,我替 Learning Card 加上「重新產生」功能。

現在如果對 Gemini 產生的內容不滿意,不需要重新輸入學習條件,只要使用上一次成功產生時保存的條件,就能再次呼叫 Gemini:

Previous Generate Options
        ↓
Regenerate
        ↓
Gemini API
        ↓
Structured Output
        ↓
LearningCard[]
        ↓
React State

做到這裡,從程式的角度來看,Learning Card Generator 已經越來越完整。

但今天我突然想到一個更重要的問題:

Gemini 成功產生 Learning Card,就代表這些內容可以直接拿來當教材嗎?

前幾天我一直在確認 JSON、Schema、TypeScript、React State,今天決定先不寫新功能,回頭真正看看 AI 到底產生了什麼。


今天不寫 Code,先檢查教材

目前 Gemini 的 Structured Output 已經可以穩定回傳:

{
  "cards": [
    {
      "emoji": "🚗",
      "title": "小汽車",
      "content": "...",
      "question": "...",
      "answer": "..."
    }
  ]
}

這代表程式可以確認:

emoji 有沒有?
title 有沒有?
content 有沒有?
question 有沒有?
answer 有沒有?

欄位是不是 string?

但 Schema 不知道:

內容正確嗎?
適合這個年齡嗎?
有沒有過度簡化?
問題設計合理嗎?
真的適合拿來教嗎?

所以今天決定用目前完全相同的 Prompt Template,產生三組不同類型的 Learning Cards,再進行人工 Review。


先定義 Learning Card Review Checklist

開始測試前,我先整理幾個檢查方向,並在實際看完卡片後補成六項:

Review Criteria 檢查內容
Accuracy 知識內容是否正確
Age Appropriateness 是否符合指定年齡
Focus 是否聚焦一個主要概念
Q&A Consistency Question 是否能從 Content 找到 Answer
Clarity 表達是否簡單、清楚
Internal Consistency Emoji、Title、Content、Question、Answer 是否圍繞同一概念

接著直接開始測。


Test A|3~4 歲幼兒 × 交通工具

第一組條件:

學習對象:3~4 歲幼兒
學習主題:交通工具
卡片數量:5

Gemini 產生:

🚗 小汽車
🚌 大公車
🚂 長火車
✈️ 飛機飛上天
⛵ 小船划水去

Day24 TestA 3-4y transporation 5 cards

整體看下來,其實表現比我預期得好。

例如飛機:

飛機有大大的翅膀,可以在天上飛。它飛得很高很高,比小鳥還要高,帶我們去很遠很遠的國家。

Question:

飛機在哪裡飛呢?

Answer:

在天上飛。

不論年齡、語氣或 Q&A 都很直覺。

但仔細看還是發現一個問題:一張卡常常放進太多概念。

例如火車同時介紹:

鐵軌
+
匡噹匡噹的聲音
+
車廂
+
載客

最後 Question 卻只問:

火車在哪裡跑呢?

Prompt 明明要求:

每張卡片只介紹一個主要概念

Gemini 大方向有遵守,但對「一個主要概念」的理解沒有我想像中嚴格。

另外「小船划水去」也有一點有趣。

Emoji:⛵
Title:小船划水去
Content:在水上漂
Question:在哪裡漂?

每個欄位單獨看都沒有太大問題,但組合起來後,教學焦點就沒有那麼一致。

因此 Test A 的結論不是「Gemini 產生錯誤教材」,而是:

內容大致可以使用,但仍需要人工確認每張卡的教學焦點。


Test B|7~8 歲兒童 × 太陽系

第二組開始增加一點知識性:

學習對象:7~8 歲兒童
學習主題:太陽系
卡片數量:5

Day24 TestB 7-8 solar 5 cards

Gemini 產生:

🪐 什麼是太陽系?
☀️ 太陽是誰?
🌍 我們住的地球
🌕 地球的好朋友:月亮
✨ 太陽系的其他行星

Day24 TestB 7-8y solar 5 cards results
這次很快就看到比 Test A 更值得注意的內容。

第一張寫:

太陽系是我們居住的家,裡面有太陽、地球、月亮和許多星星。大家都在太陽身邊跳舞喔!

問題就在:

「太陽系裡有……許多星星」

太陽是太陽系唯一的恆星;太陽系還包括八大行星、矮行星、許多衛星、小行星、彗星等天體。

所以這裡把「許多星星」列為太陽系的組成,就不適合直接拿來當教材。

更值得注意的是,它後面的 Q&A:

Q:太陽系裡有什麼?
A:太陽、地球、月亮和許多星星。

從程式設計的角度來看,這組 Q&A 非常成功:

Content
↓
Question
↓
Answer

答案真的可以從 Content 找到。

問題是——Content 本身就不精確。

因此變成:

不精確的 Content
        ↓
一致的 Question
        ↓
一致的 Answer
        ↓
不精確的概念被再次強化

這讓我發現:

Q&A 一致,不代表 Q&A 正確。


太陽與月亮也有類似問題

另外一張寫:

太陽是太陽系裡最大、最亮的星星。

雖然限定在「太陽系裡」不至於造成大問題,但更精確又簡單的方式其實可以直接寫:

太陽是太陽系唯一的恆星。

這樣概念反而更清楚。

月亮則寫:

月亮每天晚上都會掛在天上。

這種描述很童趣,但容易讓兒童形成「月亮只有晚上才會出現」的印象。

所以 Test B 開始出現另一種問題:

AI 為了讓內容簡單、親切,有時也會犧牲科學表達的精確度。


Test C|7~8 歲兒童 × 人體器官

第三組我換成人體器官:

學習對象:7~8 歲兒童
學習主題:人體器官
卡片數量:5

Gemini 產生:

🧠 大腦真聰明
❤️ 噗通的心臟
🫁 呼吸的肺
🍎 咕嚕嚕的胃
💧 小小的腎臟

Day24 TestC 7-8y body 5cards result

這次沒有像「太陽系有許多星星」那麼明顯的問題,但出現了另一種現象:

過度簡化。

例如肺:

吸進乾淨的空氣,再把不要的空氣吐出去。

對 7~8 歲兒童來說確實很好懂,但:

乾淨的空氣
不要的空氣

並不是很精確的呼吸概念。

胃的描述則是:

胃像個袋子,把食物磨碎變小,讓身體可以吸收養分。

這很容易讓孩子把:

食物
↓
胃
↓
吸收養分

直接連在一起。

實際上胃負責消化的一部分,而大部分營養吸收主要發生在小腸。

腎臟也使用:

過濾掉不要的髒東西……讓身體保持乾淨。

作為兒童比喻很容易理解,但「髒東西」、「保持乾淨」又可能把真正的生理概念簡化得太多。

所以 Test C 讓我看到:

內容越簡單,不一定代表教材越好。

對兒童教材來說,「容易理解」和「知識精確」之間其實需要取得平衡。


三組測試後,我看到三種不同問題

這次總共檢查了 15 張 Learning Cards。

三組的結果其實不太一樣:

Test 主題 主要發現
A 交通工具 整體合理,但一張卡容易放太多概念
B 太陽系 出現需要修正的知識內容
C 人體器官 為了兒童化而產生過度簡化

可以再整理成三個問題:

① Focus
一張卡塞了太多概念

② Factual Accuracy
內容可能不精確

③ Oversimplification
為了容易理解而簡化過頭

但這次 Gemini 也有一點表現得相當穩定:

Q&A Consistency。

15 張卡大多都能做到:

Content
↓
Question
↓
Answer

也就是 Question 的答案真的能從 Content 裡找到。

只是 Test B 也提醒我:

一致性不等於正確性。


Structured Output 解決不了教材品質

做到這裡,我終於更清楚 Structured Output 的邊界。

Schema 可以幫我檢查:

answer 存不存在?       ✅
answer 是不是 string?  ✅

但它不知道:

answer 正確嗎?         ❓
content 適合兒童嗎?    ❓
知識有沒有過度簡化?   ❓
這張卡真的適合教學嗎? ❓

所以:

Structured Output 解決的是資料格式問題,不是教材品質問題。

前面花了很多天把 Gemini Response 從文字整理成 JSON,再接進 TypeScript、React State 和 UI。

今天才真正發現:

Schema Validation
≠
Content Validation

程式可以接受的資料,不代表就是可以直接使用的教材。


今天最大的收穫

一開始做 Learning Card Generator 時,我就把 AI 產生的內容定位成:

Draft,而不是 Ground Truth。

今天實際檢查 15 張卡後,這件事變得更具體。

Gemini 很適合快速幫我完成:

學習條件
↓
教材初稿
↓
Learning Cards

但後面還需要:

AI Generated Draft
        ↓
Human Review
        ↓
修改 / 確認
        ↓
Final Learning Card

而 Human Review 也不只是「找 AI 有沒有講錯」。

還要確認:

  • Accuracy
  • Age Appropriateness
  • Focus
  • Q&A Consistency
  • Clarity
  • Internal Consistency

對 AI for Education 來說,這可能比單純「成功呼叫 Gemini API」更重要。


明天預告

今天找到問題之後,又出現下一個很實際的問題。

假設五張 Learning Cards 裡:

4 張可以用
1 張需要修改

現在的 App 只有兩種選擇:

接受整組

或:

重新產生整組

但如果我只是想把:

「太陽系裡有許多星星」

改掉呢?

好像沒必要把另外四張一起丟掉。

所以明天要開始把 Human Review 真正放進 App:

Day 25|AI 寫完,人來決定:加入 Learning Card 編輯功能


上一篇
Day 23|生成一次還不夠:加入重新產生 Learning Card 功能
系列文
今天學什麼?30 天用 Google AI 打造智慧學習卡 共 24 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言