iT邦幫忙

2026 iThome 鐵人賽

DAY 27
0
Build on Google AI

用 Google AI 打造「因材施教」的個人化 AI 虛擬助教系列 第 27 篇

Day 27 |【Full Demo】30 天後,我的 AI 虛擬助教到底能做什麼?完整系統展示

  • 分享至 

  • xImage
  •  

經過了前面 26 天的漫長打磨,從一開始在 Google AI Studio 嘗試調整 System Instruction、用 Google Stitch 刻出第一版介面,到後來的 Structured Output、盲點診斷、Gemini Vision 多模態辨識、RAG 教材限制、Firestore 學習歷程記錄,一路走到動態難度調整(Adaptive Learning)與情緒崩潰攔截(Emotional Gate)。

今天,我們終於迎來了整個 30 天系列最激動人心的時刻——Full Demo 實戰全貌展示!

這不是一個只會跳出罐頭文字、死板回覆的 Chatbot,而是一個真正具備「教學靈魂」、懂得察言觀色、會用蘇格拉底式引導、甚至能接住學生挫折情緒的個人化 AI 虛擬助教:Professor Spark。

接下來,我們將透過 6 張核心系統截圖與真實對話場景,帶領大家完整走一遍這 30 天心血結晶的實際運作全貌。

核心截圖規劃與系統功能導覽

為了讓讀者能夠直觀感受到這套系統的溫度與技術深度,我們梳理了以下 6 個關鍵操作場景。這不只是畫面的展示,更是這幾週技術架構收網的時刻。

1:系統全貌

  • 畫面上要出現的內容:進入網頁後的初始首頁畫面,畫面上呈現可愛的貓頭鷹吉祥物 Professor Spark、溫暖的歡迎詞,以及引導學生探索不同學科的互動卡片。
  • 文章解說重點:
    • 產品定位:這是一套專為 K-12 學生打造的溫暖教育介面,捨棄了冰冷生硬的工程師後台黑底白字風格,改以柔和色彩與陪伴式的視覺設計,降低學生面對課業時的焦慮感。

https://ithelp.ithome.com.tw/upload/images/20261006/201837648TAsZUeQTP.png

2:蘇格拉底引導(拒絕給答案)

Prompt 與 Schema 的精準控制:AI 絕對不能變成學生抄作業、寫考卷的作弊工具。透過後端強制的 Structured Output,AI 在收到「求答案」的請求時,會自動切換為 give_hint 策略,用問題回答問題,逼迫學生動腦思考。

https://ithelp.ithome.com.tw/upload/images/20261006/20183764cWCU0JOJCD.png

3:自適應學習升級(Level Up)

在教學介面上,我們刻意追求簡潔,不讓複雜的數值計分干擾學生的沈浸感。當學生點選正確的公式推導(如「電流等於電壓除以電阻」)後,讀者可以觀察到兩個層面的變化:

  1. 教學語氣與問題深度的演進:Professor Spark 立刻給予具體讚美,並將題目推進至下一步的因果推導(如:「如果電阻維持 25歐姆 不變,但我們把電壓換成 100V,電流會變多少呢?」)。
  2. 後端資料流的精準追蹤:在背景傳遞的 API 回應中,後端狀態機已正式將學生進度推進至 currentLevel: 2,並將下一次 Gemini 提問的認知等級參數同步提升!
json
// 後端 /api/chat 實際回傳之狀態物件 (State Object)
{
"success":true,
"state":{
"currentLevel":2,// 認知難度晉升至 Level 2
"consecutiveCorrects":1,// 連續答對計數 +1
"consecutiveMistakes":0
},
"diagnostic":{
"is_correct":true,
"next_pedagogical_action":"increase_difficulty"
}
}

https://ithelp.ithome.com.tw/upload/images/20261006/20183764YXA3NVQ9T5.png

4:【最大技術亮點】情緒崩潰攔截 (Emotional Gate)

Emotional Gate 機制:教育不只是冰冷的知識傳遞。如果學生已經陷入學習挫折(Frustration),再高深的演算法也無濟于事。我們在 API 進入點加入了情緒辨識閘道,當偵測到放棄或焦慮字眼時,會強制介入同理心 Prompt 分支,把對話拉回安全、溫暖的陪伴軌道。

https://ithelp.ithome.com.tw/upload/images/20261006/20183764A4GRlpX8PA.png

5:多模態拍照批改畫面

https://ithelp.ithome.com.tw/upload/images/20261006/20183764mo17DtkAuY.png

https://ithelp.ithome.com.tw/upload/images/20261006/201837644skD8KpQHX.png

Gemini Vision 多模態辨識與引導能力:學生常常無法用文字精準描述自己卡在哪裡(尤其是數學算式或電路圖)。透過 Gemini Vision API,系統能夠直接解析學生上傳的手寫草稿照片,抓出計算盲點,而不是籠統地叫學生重算。

核心程式碼架構總覽(Full Demo 核心入口)

為了讓這套系統順利運作,我們的 Express 後端在 Day 27 迎來了最終的整合。以下是接收前端請求、跑過 Emotional Gate 與 Adaptive State 檢查的核心路由邏輯:

JavaScript

// server.js - AI Virtual Tutor Core Pipeline
const express = require('express');
const { GoogleGenAI } = require('@google/genai');
const admin = require('firebase-admin');

const app = express();
app.use(express.json());

const ai = new GoogleGenAI(); // 自動讀取環境變數 GEMINI_API_KEY

// 模擬 Emotional Gate 檢測與教學策略分派
function evaluateStudentState(userInput, currentLevel){
  const frustrationKeywords = ['太難', '聽不懂', '不想學', '放棄', '不會啦', '好煩'];
  const isFrustrated = frustrationKeywords.some(keyword => userInput.includes(keyword));

  if (isFrustrated) {
    return {
      mode: 'EMOTIONAL_GATE',
      action: 'empathy_and_downgrade',
      targetLevel: Math.max(1, currentLevel - 1)
    };
  }

  return {
    mode: 'SOCRATIC_GUIDANCE',
    action: 'normal_advance',
    targetLevel: currentLevel
  };
}

app.post('/api/tutor/chat', async (req, res) => {
  try {
    const { studentId, message, currentLevel = 1, imagePart } = req.body;

    // 1. 執行情緒與狀態閘道檢查
    const stateCheck = evaluateStudentState(message, currentLevel);

    let systemInstruction = `你是 Professor Spark,一位溫暖、擅長使用蘇格拉底式引導的 K-12 AI 虛擬助教。
    核心原則:
    1. 絕不直接給出完整答案。
    2. 每次只引導一個觀念,並提供 3 個引導選項。`;

    if (stateCheck.mode === 'EMOTIONAL_GATE') {
      systemInstruction += `\n【緊急狀態】學生目前表現出強烈的挫折與放棄情緒。請立刻放下題目,用極具同理心與安撫的語氣鼓勵學生,不要給予壓力,並將難度重置。`;
    }

    // 2. 準備 Gemini 呼叫內容
    const contents = [message];
    if (imagePart) {
      contents.push(imagePart); // 支援 Gemini Vision 多模態輸入
    }

    // 3. 呼叫 Gemini 模型
    const response = await ai.models.generateContent({
      model: 'gemini-2.5-flash', // 依據實際可用且高效的模型
      contents: contents,
      config: {
        systemInstruction: systemInstruction,
        temperature: 0.7,
      }
    });

    res.json({
      reply: response.text,
      newLevel: stateCheck.targetLevel,
      systemMode: stateCheck.mode
    });

  } catch (error) {
    console.error('Tutor API Error:', error);
    res.status(500).json({ error: 'AI 助教目前正在思考中,請稍後再試。' });
  }
});

app.listen(3001, () => {
  console.log('AI Virtual Tutor backend running on http://localhost:3001');
});

未來教育反思:當 AI 學會「等待與陪伴」

回顧這 30 天的開發歷程,我最大的收穫不是學會了多少 API 參數,而是重新定義了教育科技的價值。

傳統的 AI Chatbot 追求的是「快問快答」,學生問什麼,它就吐出幾千字完美的解答。但這對學習而言往往是災難——學生複製了答案,卻交出了思考的權利。

而我們透過這 30 天打造的 AI Virtual Tutor System,透過 System Instruction 約束、Emotional Gate 攔截、Vision 手寫辨識 與 Adaptive Learning 狀態機,讓 AI 學會了人類優秀教師最珍貴的特質:踩煞車的智慧、同理心的溫暖,以及不急著給答案的堅持。

明日預告

明天將迎來倒數第三天——Day 28:【Open Source】把 30 天做出的 AI Tutor 開源!我們會將把這套完整的專案打包,整理好 README 與安全規範,放在Github上面公開。


上一篇
Day 26【極限測試】Gemini 真的能理解超長文字嗎?破萬字電子學教材的 Context 壓力測試
系列文
用 Google AI 打造「因材施教」的個人化 AI 虛擬助教 共 27 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言