今天來到鐵人賽第 29 天。
看到這裡,其實有一點不真實。
因為一開始做這個 AI Tutor 的時候,我真的沒有想過最後會變成現在這個樣子,雖然我有做所問的初步規劃,但我其實不確定自己到底做不做得出來,畢竟我只是一個資訊管理系的大學生,寫程式這方面也不能說是特別擅長。很多東西其實都是第一次碰、第一次學。
但也因為這次參加鐵人賽,我開始接觸到 Google AI Studio、Stitch、Antigravity、Firebase 這些工具,讓整個開發速度快了很多。以前可能要花很多時間才能完成的事情,現在可以先讓 AI 幫忙把架構或雛形做出來,再自己慢慢理解、修改。
而我覺得自己這 30 天最大的收穫,也不只是把一個 AI Tutor 做出來,而是在這個過程中真的學到了很多以前沒有接觸過的東西。
一開始,我們只是想做一個「不要直接給學生答案,而是一步一步引導學生思考」的 AI 家教。
最開始甚至只是在 Google AI Studio 裡面一直改 Prompt,測試 Gemini 到底會不會乖乖聽話。
後來慢慢加入 Google Stitch 做介面,再用 Antigravity 幫忙整理程式、拆 API,接著又開始碰 Vision、RAG、Firestore、Adaptive Learning……
做到最後才發現:
原來我們不是只是在做一個聊天機器人。
而是真的一步一步,把一開始腦中想像的 AI 家教,慢慢做成了一個可以實際使用的 AI Tutor。
所以今天這篇不想再介紹某一個功能怎麼做,而是想把這 30 天走過的路重新整理一次。
也順便記錄一下,這一路到底踩了多少坑。
如果要我現在回頭看這個專案,我覺得最有趣的地方不是某一個工具有多厲害。
而是這些工具放在一起之後,剛好可以把一個想法慢慢變成真的產品。
一開始我根本還沒有想那麼多後端架構。
就是先跑去 Google AI Studio 裡面測 Gemini。
我們先問一個最基本的問題:
如果我要求 AI 不要直接給答案,而是用蘇格拉底式教學,它真的做得到嗎?
結果當然沒有想像中那麼簡單。
我改 Prompt、測試、再改 Prompt。
學生說「我不會,可以直接告訴我答案嗎?」
Gemini:
「當然可以,答案是……」
看到這個真的會很點點。
所以後來我們才開始慢慢把 System Instruction、Structured Output、JSON Schema、Understanding Gate 這些東西加進來。
這個階段我覺得 AI Studio 最大的價值就是:
不用先寫一堆程式,就可以先確認「這個想法到底能不能做」。
如果連 Prompt 都控制不了,那後面寫再多程式其實也沒有用。
當 AI 的邏輯稍微穩定之後,下一個問題就是:
「那學生到底要在哪裡使用?」
所以我們開始用 Stitch 做介面。
這個階段最大的感覺就是:
以前可能要自己慢慢刻 HTML、CSS、版面。
現在可以先把想法丟進去,快速看到一個可以操作的 Prototype。
對我們這種不是專業 UI/UX 設計的人來說,其實省很多時間。
至少可以先確定:
學生進來看到什麼?
題目放哪裡?
AI 回答放哪裡?
圖片要怎麼上傳?
學習紀錄要放在哪?
先把這些東西跑起來,再回頭處理程式。
前期的程式其實沒有很複雜。
但功能越加越多之後,就開始出現一個很現實的問題:
東西全部混在一起了。
一開始可能一個檔案塞一堆東西還沒感覺。
但當我們開始加入 Vision、RAG、聊天、資料庫等等功能之後,就會發現:
「這個東西到底寫在哪?」
所以後來才開始慢慢拆成:
routes/
services/
api/
不同功能各自處理。
這時候 Antigravity 就幫了很大的忙。
它可以先幫我們看整個專案的結構,再協助把原本混在一起的程式拆開。
當然它也不是每次都改得對。
有時候甚至會改到你想說:
「你到底在幹嘛?」
所以我覺得 AI Coding Agent 最重要的不是「叫它幫你寫完全部程式」。
而是:
讓它幫你加快那些你已經知道自己要做什麼的事情。
你還是要知道自己的專案在幹嘛。
不然 AI 改錯了,你可能連錯在哪裡都不知道。
如果只有 Gemini API,其實它比較像一個很會聊天的 AI。
但我們想做的不是 Chatbot。
我們想做的是:
它可以記得學生之前學過什麼、錯過什麼,甚至知道學生目前卡在哪裡。
所以後來加入 Firestore。
把學生的對話、錯題、學習紀錄慢慢存下來。
這時候我才比較有感覺:
「好像真的開始有一點 AI Tutor 的樣子了。」
因為教育最重要的其中一件事情就是:
不能每次看到學生都當成第一次見面。
如果只看最後的成果,好像會覺得:
Gemini + Vision + RAG + Firebase + Adaptive Learning。
全部串起來,好像很順。
但實際上完全不是這樣。
中間有很多次都是:
「為什麼昨天可以,今天突然不行?」
這應該是我最常遇到的問題之一。
我們明明跟它說:
不可以直接給答案,要引導學生。
結果學生只要說:
「我真的不會啦,你直接跟我講答案。」
Gemini 就很容易心軟。
直接開始解題。
一開始我還以為只是 Prompt 寫得不夠好。
所以一直改 Prompt。
後來才發現,單純寫:
Don't give the answer.
其實根本不夠。
因為模型本來就是被訓練成「盡量幫助使用者」。
你叫它不要回答,它反而很容易找到一個方式繞過去。
所以後來我們開始加入更嚴格的結構。
例如 Structured Output、固定 JSON 欄位、Understanding Gate。
讓 AI 在回答之前先判斷:
學生現在到底懂不懂?
如果還不懂,就只能問下一個引導問題。
這才慢慢把它拉回我們想要的教學方式。
所以這也是我這 30 天最大的體會之一:
AI 不是你下了一個 Prompt,它就會永遠照做。
你必須把你的教育邏輯一起放進系統裡。
後來我們又加入手寫題目辨識。
原本想法很簡單:
學生把錯題拍照上傳 → AI 看懂 → 開始教。
結果真的做了才知道,手寫字超級麻煩。
字太小、照片太糊、角度歪掉,甚至有時候學生自己寫的字可能連我都看不懂。
AI 當然也會看錯。
所以後來不能只相信 Vision 的第一次判斷。
我們開始加入確認機制。
至少先讓系統知道:
「我看到的東西有沒有可能是錯的?」
這件事情也讓我第一次很深刻感受到:
多模態不是「丟一張圖給 AI」就結束了。
真正做產品的時候,還要處理它看錯怎麼辦。
RAG 也是我們這次很重要的一個功能。
因為如果我們希望 AI Tutor 是跟著老師的教材教,就不能讓它想到什麼就講什麼。
所以我們把教材放進系統,希望:
課本有的才回答,課本沒有的就不要亂講。
結果測試之後發現:
AI 還是很容易想用自己的知識補充。
這其實很合理。
因為 Gemini 本來就知道很多東西。
但對「教材型 AI Tutor」來說,知道太多有時候反而是問題。
所以後來我們在 System Instruction 裡面把範圍限制得更死。
如果教材沒有出現,就明確告訴學生:
這個內容目前不在本教材範圍內。
這件事情讓我覺得 RAG 最重要的不是:
「讓 AI 知道更多。」
而是:
「讓 AI 知道什麼時候不能講。」
這個真的值得單獨講。
因為本機開發的時候:
node server.js
跑起來。
測試。
可以。
API:
可以。
圖片:
可以。
我就想說:
「好了啊,部署。」
結果一上 Vercel:
500。
???
那時候才開始研究 Vercel Serverless 到底是什麼。
我們原本有使用 uploads/ 資料夾存檔。
但在本機這件事情完全沒有問題。
到了 Serverless 環境,整個思維不一樣。
它不是一台你可以一直放檔案、一直開著的傳統伺服器。
所以後來我們才重新整理 API 入口,把路由集中到:
api/index.js
圖片、PDF 也改成盡量直接用 Buffer 在記憶體裡處理。
這次真的讓我學到一件事情:
「本機能跑」跟「真的能部署」完全是兩件事。
以前寫作業的時候,可能覺得:
我電腦跑得起來就好了。
但真的做產品之後,才發現部署環境本身就是開發的一部分。
如果要我用一句話總結,我覺得不是:
「我學會了 Gemini API。」
也不是:
「我學會了 Firebase。」
更不是:
「我學會了怎麼寫一個 AI Chatbot。」
而是:
我開始知道,一個 AI 想法要怎麼慢慢變成一個真的可以使用的產品。
從最開始:
「我想做一個 AI 家教。」
到後來開始想:
學生為什麼需要它?
AI 要怎麼教?
什麼時候不能回答?
學生答錯怎麼辦?
圖片看錯怎麼辦?
教材以外的東西要不要回答?
學生學過的東西要怎麼記?
如果學生越來越會,要不要自動提高難度?
然後才慢慢有了現在這個系統。
回頭看這 30 天,其實最有感的不是我們最後多了多少功能。
而是以前看到:
API、RAG、Vision、Firestore、Serverless
這些東西可能覺得很抽象。
但現在它們已經變成我真的會碰到的東西。
當然,現在這個 AI Tutor 距離一個真正成熟的產品還有很多地方可以改。
但至少它已經不是最開始那個只會聊天的 AI 了。
它現在可以看題目、參考教材、記住學習紀錄,也會根據學生目前的狀況調整教學方式。
而我覺得這 30 天最值得留下來的東西就是:
AI 最厲害的地方,不是它可以直接把答案告訴你。
而是我們可以想辦法讓它知道:
什麼時候該回答,什麼時候不該回答,以及要怎麼一步一步把學生帶到答案前面。
明天就是最後一天。
最後一篇,我想好好聊聊這 30 天做完之後,我對「AI × 教育」這件事情,到底有什麼新的想法。
【Day 30|完賽感言】人人都能擁有專屬 AI 家教?這 30 天,我們真的做到了嗎?