在「未來教育」的場景中,學習介面不能只是像聊天室一樣只有文字對話。好的 AI 助教介面應該要能:
所以今天我們來想一個問題: 如果 AI 回傳的是一段長篇大論,網頁程式要怎麼知道哪段是「比喻」?哪段是「快捷問題」?
所以今天主要就是在處理這件事情: 不要讓 AI 隨便回文字,而是規定它一定要按照我指定的 JSON 格式回傳。 我想利用 SDK 的 responseMimeType: 'application/json'+responseSchema,讓 Gemini 只能輸出標準 JSON 格式。
我希望 AI 每次回覆的資料大概長這樣:
{
"reply": "這裡是 AI 給學生的引導內容",
"scaffold_type": "analogy",
"suggested_questions":
"那直角跟一般的角有什麼不一樣?",
為了落實結構化輸出,我們在後端(server.js)進行了以下四個關鍵步驟:
systemInstruction): 定義 AI 助教 Professor Spark 的教學方針——嚴禁直接給答案、語氣親切並使用生活化比喻、每次聚焦 1 個引導步驟並拋出反問。responseSchema):
reply(字串):給學生的白話引導對話 (100~200 字)。scaffold_type(列舉 Enum):限制只能回傳 analogy(比喻)、breakdown(拆解)或 quiz(測驗)三者其中之一。suggested_questions(字串陣列):要求 AI 自動產生 2~3 個引導學生繼續思考的快捷按鈕選項。try...catch 的 JSON.parse 容錯防護,即使發生網路異常或非預期格式,Express 伺服器也不會崩潰,並能提供預設備用回應。server.js)

test-chat.js) 與實際驗證結果在 Terminal 執行測試腳本,模擬學生提問:「老師,我不懂什麼是直角,可以教我嗎?」驗證AI精準輸出符合 JSON Schema 規範的結構化資料
回傳之 JSON 內容:

如果只是讓 AI 自己決定要回什麼,前端還要想辦法從一大段文字裡面判斷「這是不是比喻」、「這是不是測驗」,其實會變得很麻煩。現在透過 scaffold_type,AI 可以直接告訴前端這次用了哪一種教學方式,前端就可以按照這個結果去顯示不同的卡片。另外 suggested_questions 也讓我覺得蠻實用的。
因為有些學生不是沒有問題,而是不知道自己下一步可以問什麼。如果 AI 可以直接給幾個可以繼續思考的問題,學生就不用一直想「那我要問什麼」,直接點下去就可以繼續。
所以這次對我來說,不只是讓 AI「回答得比較固定」,而是開始讓 AI 的回答真的可以跟前端介面接在一起。
明天(Day 05)要開始做「盲點診斷」。這次會讓學生故意講出一些錯誤的觀念,再測試 AI 能不能判斷他到底是哪裡理解錯了。最後希望可以讓 AI 不只是告訴學生「你答錯了」,而是找出他的理解偏差點,再針對那個地方繼續引導。