這份教學示範純對話打造線上測驗系統:不套用任何工作坊講師事先寫好的 custom skill,純粹靠你自己一步一步把需求講清楚,讓 Codex 從零把整個系統寫出來——一個讓全班同時連線作答的測驗網站,加上一個老師可以即時看到「誰在寫、寫到第幾題、寫完了沒、考幾分」的監考儀表板。這篇教學示範的,正是「套用現成 skill、一句話生成」那類捷徑背後,原本要花的那些對話。
repo/ 是現成題庫,包含六組各 10 題的練習包——115 專業科目(一)A/B、115 專業科目(二)A/B、115 數學 A-A/B。這個資料夾目前只提供練習題庫;請依照下方對話流程,讓 Codex 建立可執行的伺服器成品(本教學示範會建立在 server/)。
做完這份教學,你應該能夠:
「套用現成 skill、一句話生成」是一種捷徑;這篇教學示範的是那條捷徑背後、最原始的做法——完全不靠任何事先寫好的工具,純粹用對話把系統生出來。不管是哪一種做法,做出來的「東西」都是同一種(線上測驗系統),差別只在「怎麼做出來」。
這篇教學真正想教的,不是要你背下某一句「魔法指令」,而是兩個能用在任何情境的能力:
repo/ 練習題庫。六個子資料夾各有 10 張 *.png 題目圖片與一份 115keys.json 答案檔;請保留這些練習素材,不要修改或刪除。repo/ 練習題庫即可。先確認 Python 3 已經裝好:打開 PowerShell,輸入python --version(找不到就再試python3 --version)。如果出現版本號(例如Python 3.12.4)就代表已經裝好,可以跳過這一步。如果出現錯誤訊息,或跳出「你要開啟市集嗎」的視窗,代表電腦還沒有能執行的 Python:到 Windows 的 Microsoft Store 搜尋「Python 3.12」,點取得安裝即可(不需要系統管理員權限,也不用另外設定 PATH)。安裝完成後,請關閉並重新打開一個新的 PowerShell 視窗再試一次python --version。
不用去想「要用什麼技術做」,只要把你希望學生看到什麼、老師看到什麼、要在什麼環境下運作,用平常說話的方式講清楚就好。同一個需求,可以用不同的詳細程度來描述:講得越簡短,AI 自己要猜、要決定的地方就越多,做出來的東西不一定跟你想的一樣;講得越詳細,第一次做出來的結果通常會越接近你的想像,事後要追問修正的次數也會比較少。下面示範兩種寫法,挑一種開始就好,不用兩種都用;不管從哪一種開始,做出來不滿意都可以照下一節「追問修正」的方式繼續調整。
只講最核心的目的,其餘細節(怎麼計分、畫面長什麼樣子、要不要能複選)全部交給 AI 自己決定。適合想先快速看看 AI 能做到什麼程度,或是還沒想清楚細節、只想有個東西可以邊看邊調整時使用。
幫我用 repo 資料夾裡的題目,做一個全班可以一起線上考試的網站,
要有學生作答的頁面,也要有老師可以即時監考的頁面。把學生端、老師端各自要看到的東西、要用的技術,還有「同一個區域網路、不用申請帳號」這個環境限制講出來,但不細究畫面上的按鈕、確認訊息這類細節。多數情況下,這個詳細程度已經夠用,是兩種寫法裡最推薦的起點。
我想要一個線上考試工具:學生打開網址後選考科、輸入姓名,依序作答
repo 資料夾裡的題目,交卷後看到分數;老師可以
即時看到全班每個人目前的作答進度跟最後的成績,畫面要能自動更新。整個
東西要在教室的區域網路運作,不需要申請任何帳號。伺服器請用 Python
搭配 Flask 這個網頁框架來寫,幫我自動安裝所有需要的 Python 套件。不管挑哪一種寫法,Codex 收到描述後都會自己決定用什麼方式把它做出來,不需要你懂內部細節。完成後,請確認它在 server/ 建立一支可執行的伺服器程式、學生作答頁面與教師監考頁面。每次從零建立的程式內容不一定完全一樣,講得越簡短,跟本教學示範的成果差距可能越大;接下來的啟動指令都以剛剛建立好的 server/ 為準。
先確認上一節已經成功建立 server/,再在 PowerShell 打一行指令,並且讓這個黑色視窗維持開啟,直到考試結束:
cd server
python server.py如果打 python 出現「不是內部或外部命令」之類的錯誤,改打 python3 server.py 試試看;兩個都不行,代表 Python 還沒裝好,回到上面「先備條件」處理。
指令執行後,畫面應該會停在類似這樣的內容,而且不會自動結束(這是正常的,代表伺服器正在執行):
Student page: http://192.168.1.23:8000/
Dashboard page: http://192.168.1.23:8000/dashboard
(this machine) http://localhost:8000/
Press Ctrl+C to stop.
192.168.1.23 只是範例,每台電腦、每個 Wi-Fi 環境印出來的數字都不一樣,請以自己電腦實際印出來的那組為準。Student page 那一行是要交給學生的網址;Dashboard page(多了 /dashboard)是老師自己看的監考頁面。
第一次看到 Codex 做出來的成果,很可能不會百分之百符合你腦中的想像,這是正常現象,不用自己動手修改程式碼,也不用整段需求重講一次——下一節示範怎麼用簡短的追問把它調整到位。
第一次執行可能會跳出防火牆詢問:Windows 可能會跳出「Windows Defender 防火牆已封鎖此應用程式的部分功能」視窗,請勾選「私人網路」並按允許存取;如果按了取消或忽略,學生的裝置會連不上。
把第一版跑起來、自己稍微點一輪之後,通常會發現幾個地方不如預期。這時候不用自己猜是哪裡的程式碼有問題,直接用平常說話的方式描述「你看到的狀況」和「你想要的結果」,讓 Codex 幫你調整。以下是幾個很實際會遇到的追問範例:
有幾題的正確答案不只一個字母(例如同時是 A 跟 D 才算對),麻煩讓學生作答
時可以選超過一個答案,而且要選出的答案跟正確答案完全一樣(不多不少)才算對。監考頁面目前把所有考科的學生混在一起顯示,麻煩加一個下拉選單,
可以只篩選出某一科的學生。不管是哪一種追問,處理方式都一樣:把你實際看到的畫面或狀況描述給 Codex,講清楚哪裡不符合你要的,不用自己猜是程式的哪裡出了問題。
學生打開 Student page 網址後:選一個考科、輸入姓名(座號/學號可留白),按開始作答;依序看到每一題的圖片,點選 A、B、C、D(可能不只選一個),可以用「上一題」「下一題」或畫面下方的題號按鈕跳轉;答完按「交卷」,會有確認訊息提醒還有幾題沒作答,交卷後立刻看到分數,之後就不能再修改答案。
打開 Dashboard page 那個網址(網址結尾是 /dashboard),畫面每 3 秒會自動更新一次,每位已經打開學生作答頁的人會各自出現一張卡片:
| 卡片狀態 | 顏色 | 代表意義 |
|---|---|---|
| 已加入 | 灰色 | 學生已輸入姓名進入測驗,但還沒開始選答案 |
| 作答中 | 藍色 | 已經選了至少一題答案,進度條顯示目前答了幾題 |
| 已交卷 | 綠色 | 已按下交卷,卡片會直接顯示這次的分數 |
| 連線中斷? | 紅色提示 | 超過約 25 秒沒有動靜(沒換題、沒選答案),可能是該學生已離開頁面或網路不穩,值得走過去看一下 |
畫面上方有一個依考科篩選的下拉選單,以及整班的統計(已加入/作答中/已交卷人數、平均得分率)。右上角的「清除名單」按鈕會清空目前畫面上的作答紀錄,換下一班上課、或是想重新測試時再使用,平常上課中不要誤按。
正式讓全班使用前,請老師自己先走過一次完整流程:
Student page 網址,輸入一個測試用姓名(例如「測試用」),選一科、答兩三題。Dashboard page,幾秒內應該會看到剛剛那個測試姓名的卡片出現,狀態是「作答中」,進度會跟著你選答案即時更新。Ctrl+C,或直接把視窗關掉即可。server/data/sessions.json 這個檔案裡,下次重新執行 python server.py 時會自動接續,不會不見。server/data/sessions.json 這個檔案。完成這份練習後,學生作答頁應該會列出 repo/ 的六組練習包:115 專業科目(一)A/B、115 專業科目(二)A/B、115 數學 A-A/B。之後如果有新的一份題庫(例如下一次段考的考古題),準備方式一樣:每題一張 PNG 圖片,加上一份題號與正確答案相符的 keys.json,放進 repo/<新資料夾名稱>/,再用平常說話的方式請 Codex 加進去:
repo/<新資料夾名稱> 現在也是一組完整題庫(每題一張圖片+keys.json)。
麻煩把這個科目也加進現有的線上測驗系統,不要影響原本六組練習包。完成後,重新啟動伺服器(Ctrl+C 停掉舊的,再重新執行 python server.py),新科目應該會出現在學生作答頁的下拉選單裡,原本六組練習包維持不變。驗收方式跟上面「驗收重點」一樣:自己先用另一台裝置走一次完整流程。
如果你發現自己常常要對不同題庫重複做這整套對話,可以考慮把這整個流程包成一句話就能重現的 skill,之後不用每次都重新講一遍需求。