楊本顥筆記・知識・作品

首頁 / 筆記

NOTE · · 應用於 教學出卷助手

讓 CI 評測 AI,而且不連網、不用金鑰

模型的回應只在我自己的電腦上錄一次,存成回放檔。CI 只讀回放檔,找不到就判失敗,不會改去呼叫模型。

看這篇筆記應用的作品
問題
AI 功能的測試有兩個互相衝突的需求:要量得準,就得用真的模型回應;要能在 CI 上跑,就不能依賴網路、金鑰與額度。多數專案的妥協是「AI 那段不測」,然後改壞了也不知道。
做法
真實的模型回應只在我自己的電腦上錄一次,存成回放檔(cassette)。回放檔的鍵包含模型 ID 與輸入的雜湊,所以換模型、改 prompt 都會換一份檔案,不會悄悄沿用舊答案。CI 設成只讀回放檔,找不到就判失敗——這一條是整套機制的關鍵:如果缺檔時自動退回呼叫模型,「回放檔被誤刪」就會表現成 CI 全綠。
量什麼
五個評測套件,每一個都對人工定案的 golden 量測,門檻寫在一份 JSON 裡,規則是只升不降。檢索的 hybrid(向量加分詞全文檢索,用 RRF 融合)在 golden 40 筆上 Recall@5 是 1.0000,原本的 LIKE 查詢是 0.8750;分類的 accuracy 0.9891、macro-F1 0.9744;整條管線對自製樣卷的章節正確率 1.00。
哪些數字只報告不擋
有些指標我刻意不設門檻。本機模式以 OCR 為主拆題,每一題都要人工確認才入庫,所以入庫率設計上一律是 0,拿它比門檻沒有意義;零成本閘門的通過率也只報告——本機的分類呼叫不花錢,而拆題模型自己猜的章節不可靠,閘門通過率高不代表好。章節對不對由另一個指標把關。把不該比的數字拿來比,等於自己製造假訊號。
結果
CI 三個 job:單元測試跑 Node 22 與 24、整合測試用 pgvector 的 service container、桌面版另一個。4,536 項單元測試(4,535 過、1 略過)、697 項整合測試、126 項桌面測試,整個流程不需要任何金鑰,也不連網。
邊界
回放檔證明的是「程式對同一份模型回應的處理沒有變」,不是「模型今天還會給出同樣的回應」。模型漂移要靠重錄才看得見,而在純 CPU 的機器上重錄一輪要好幾小時。所以我把重錄當成一個有成本的決定在排程,而不是假裝這個問題不存在。

這篇筆記的實際應用

數學試卷與寫有「2 小時 → 數分鐘」的便條紙,教學出卷助手概念封面

教學出卷助手

把散落在考卷裡的題目,變成能依學生需求組卷的題庫。

看個案研究 →