習(xí)路徑到自動批改的全流程落地)
把一個班級四十個人的錯題逐題看完再給每個人畫出“下一條該做的題”這個工作量換成任何一位老師都需要加班到深夜。我兩年前開始做“教育 Agent”這個方向時目標(biāo)很直接能不能讓系統(tǒng)自己完成“診斷—推薦—批改—反饋”這個循環(huán)把“個性化學(xué)習(xí)路徑”和“自動批改”這兩個聽起來很宏大的概念落到一套能跑通的工程實現(xiàn)上。這篇文章把我從架構(gòu)設(shè)計到上線跑數(shù)據(jù)這一路的思考、選擇和踩坑完整寫出來用到的方案不一定最先進但都是實測下來能穩(wěn)定工作的。如果你正準(zhǔn)備做類似的教學(xué)系統(tǒng)、智能題庫或者學(xué)習(xí)助手這篇內(nèi)容應(yīng)該能幫你避開不少彎路。1. 做之前先說清這個Agent到底要解決什么問題1.1 學(xué)生端的核心痛點我最早接觸這個項目是因為看到一份教研分析報告一個班級在同一章節(jié)的測驗里成績分布非常分散——有人十分鐘交卷滿分有人盯著第一道題發(fā)了半小時呆。傳統(tǒng)課堂只能用“中位數(shù)的節(jié)奏”推進講快了后面的人跟不住講慢了前面的人閑著。個性化學(xué)習(xí)路徑要解決的就是這個“教學(xué)節(jié)奏與個體能力不匹配”的問題。但個性化不能停留在“正確率高的學(xué)生多給難題”這種表面邏輯上。真正有價值的個性化至少要做到三層層一知道學(xué)生“當(dāng)前會什么”即知識點掌握度。不是一次考試的分而是分知識點、分技能維度的估計值。層二知道學(xué)生“下一步最適合學(xué)什么”即學(xué)習(xí)路徑中下一個節(jié)點的推薦。這需要考慮前置知識是否具備、難度是否合適、同類題型是否已經(jīng)鞏固。層三知道學(xué)生“做錯了為什么錯”即錯誤歸因。是概念不清、公式記錯、審題偏差還是純粹粗心。這決定了下一次推薦是重新講解概念還是換一道相似題鞏固。1.2 老師端真正需要省下的時間自動批改的目標(biāo)也得分清楚。老師最耗時的環(huán)節(jié)不是判選擇題而是主觀題、應(yīng)用題、過程性作業(yè)。尤其理科的過程分一道題掃一眼就得看公式、看步驟、看最終答案一個班五十份作業(yè)就是五十次重復(fù)勞動。批改系統(tǒng)要替老師做的不是“替代判斷”而是“預(yù)判復(fù)核”。系統(tǒng)先把每份作業(yè)的得分、錯因標(biāo)注、講解建議全部生成好老師只需要抽查有爭議的幾份。這樣老師省下的時間不是用來休息的而是去做更有價值的事設(shè)計課堂活動、找學(xué)生面談、調(diào)整備課方案。1.3 我最終劃定的兩個功能邊界很多團隊做教育Agent失敗是因為一開始就想什么都做。組會討論時經(jīng)常出現(xiàn)“最好還能自動生成教案”“最好還能當(dāng)情緒導(dǎo)師”這類需求。我的經(jīng)驗是第一版只做兩個閉環(huán)——學(xué)習(xí)路徑閉環(huán)和批改與反饋閉環(huán)這兩個功能可以共用一套數(shù)據(jù)而且彼此強耦合。路徑推薦需要知道學(xué)生當(dāng)前的薄弱點而這恰恰是批改結(jié)果提供的。批改反饋需要給出下一步學(xué)習(xí)建議建議的生成依據(jù)又來自路徑規(guī)劃模塊。兩個模塊共享同一個“知識圖譜”和同一個“學(xué)生畫像”系統(tǒng)結(jié)構(gòu)非常清晰。其他功能比如課堂報告、家長通知、班級學(xué)情看板都是這兩個閉環(huán)的副產(chǎn)品等核心跑通了再往上搭成本很低。2. 個性化學(xué)習(xí)路徑核心算法與數(shù)據(jù)設(shè)計2.1 學(xué)習(xí)者畫像要做到什么粒度剛開始我犯過一個典型錯誤把所有做題記錄匯總成一個“綜合掌握率”存進學(xué)生表里。結(jié)果推薦出來的題目亂七八糟——明明代數(shù)基礎(chǔ)薄弱的學(xué)生因為幾何題做得比較多綜合正確率被拉高了系統(tǒng)給他推了更難的幾何題。后來我改成知識點粒度的畫像。每個知識點知識節(jié)點獨立維護掌握度并且?guī)r間戳和置信度。數(shù)據(jù)結(jié)構(gòu)類似這樣student_knowledge_state ( student_id varchar(32), knowledge_id varchar(32), mastery float, -- 0.0 ~ 1.0 confidence float, -- 當(dāng)前估計的可靠程度 last_exercise_time timestamp, wrong_count int, right_count int, primary key (student_id, knowledge_id) )掌握度不是簡單地把“做對的題數(shù)/總題數(shù)”算個百分比而是帶權(quán)重的更新。我的做法是新做對的題會讓掌握度向當(dāng)前值和高值之間移動新做錯的題會讓掌握度顯著下降下降幅度取決于這道題的難度和題型權(quán)重。置信度則隨做題目數(shù)量增加而上升同時隨時間衰減——十天內(nèi)沒有練習(xí)記錄的節(jié)點置信度要打折因為記憶會遺忘。2.2 基礎(chǔ)框架知識圖譜怎么搭個性化路徑的底層依賴是知識圖譜也就是“知識點之間的前驅(qū)后繼關(guān)系”。我見過有人一上來就畫了一千多個節(jié)點的超細圖譜結(jié)果維護和分析成本極高很多邊的可靠性也沒有驗證。我的建議是先搭主干再長枝葉。具體順序分步走對照課程標(biāo)準(zhǔn)和主流教材的章節(jié)順序梳理出一級知識點和二級知識點。比如“一元二次方程”下掛“配方法”“公式法”“判別式與根的關(guān)系”等。對每個二級知識點標(biāo)注前置條件。判別式與根的關(guān)系前置必須是“實數(shù)運算”和“一元一次方程求解”。這條邊很重要它決定了路徑能否穿越。嵌入AI輔助抽取拿一批真題和講義讓大模型抽“題目涉及的知識點”然后人工抽查修正。這一步能幫我們快速覆蓋題庫但不建議完全放手讓模型自動建邊——它會把“相關(guān)”和“前置”混為一談。知識圖譜的數(shù)據(jù)結(jié)構(gòu)不用復(fù)雜鄰接表模型就夠了knowledge_node ( node_id varchar(32), node_name varchar(128), subject varchar(32), grade int, difficulty int, -- 1~5 est_minutes int -- 建議學(xué)習(xí)時長 ) knowledge_edge ( source_node_id varchar(32), target_node_id varchar(32), relation varchar(16), -- prerequisite / reinforce / similar weight float )這里有個很關(guān)鍵的判別標(biāo)準(zhǔn)只有“前置關(guān)系”才能作為路徑規(guī)劃的硬約束“相關(guān)關(guān)系”和“相似關(guān)系”只能作為排序的軟加權(quán)。如果分不清這兩種邊路徑規(guī)劃會出現(xiàn)環(huán)或者繞遠路——我在測試階段確實見過系統(tǒng)給學(xué)生推了五次“概念辨析”題才放行到計算題原因就是相關(guān)關(guān)系的權(quán)重壓過了前置關(guān)系的約束。2.3 路徑規(guī)劃怎么做從規(guī)則到狀態(tài)機規(guī)劃“下一個節(jié)點做什么”其實不需要一開始就上強化學(xué)習(xí)?;谥R圖譜的狀態(tài)機配合一套明確的轉(zhuǎn)換規(guī)則在大部分K12學(xué)科場景下已經(jīng)能取得很好的效果。我用的方案核心是三個動作類似有限狀態(tài)機狀態(tài)“未開始”如果所有前置節(jié)點掌握度都達到0.6以上進入“待學(xué)習(xí)”否則保持等待并推薦前置節(jié)點中的薄弱項。狀態(tài)“學(xué)習(xí)中”學(xué)生剛做完第一次練習(xí)系統(tǒng)不急著推進而是看練習(xí)結(jié)果。做對了且掌握度上升進入“鞏固中”做錯了連續(xù)兩次回退到“復(fù)習(xí)前置”。狀態(tài)“待鞏固”按照間隔重復(fù)的邏輯安排復(fù)習(xí)間隔天數(shù)依次是1天、3天、7天、14天。這個策略參考了艾賓浩斯遺忘曲線但做了工程化簡化。路徑推薦的排序規(guī)則可以寫成一段偽代碼candidates 所有“前置已達標(biāo)且當(dāng)前狀態(tài)為待學(xué)習(xí)”的節(jié)點 if candidates 為空: 考慮下一章節(jié)的新節(jié)點 else: 按以下優(yōu)先級排序: 1. 前置節(jié)點中掌握度最低的學(xué)科薄弱點 2. 上次練習(xí)距今最久的待復(fù)習(xí)節(jié)點 3. 當(dāng)前最近一次練習(xí)正確率低于60%的同類題這套規(guī)則看起來簡單但實際跑起來效率很高。它的好處是可解釋——學(xué)生可以看到“為什么推薦這道題”頁面上的文案是“因為你上次‘配方法’只做對了1/3我們先復(fù)習(xí)一下配方法再繼續(xù)”而不是冷冰冰的“推薦題目”。可解釋性在教育場景里極其重要家長和老師都需要知道系統(tǒng)建議的依據(jù)。2.4 動態(tài)調(diào)整的時機與策略路徑規(guī)劃不是一次性算完就固定住而是一個每輪練習(xí)后都要重算的過程。我設(shè)置的重算時機有三個每次批改結(jié)果生成后立即更新學(xué)生知識點狀態(tài)并重算“下一個推薦節(jié)點”。連續(xù)答錯達到3題時觸發(fā)“降級模式”系統(tǒng)主動把難度下調(diào)一檔并插入一段概念講解內(nèi)容。連續(xù)答對達到5題且每道題都屬于中等及以上難度時觸發(fā)“升級挑戰(zhàn)”推薦一道跨章節(jié)綜合題。動態(tài)調(diào)整最忌頻繁切換容易讓學(xué)生覺得系統(tǒng)“飄”。我的做法是給每次推薦附帶一個“最低完成數(shù)量”——比如推薦了一個薄弱點復(fù)習(xí)包學(xué)生必須先做完里面的6道題系統(tǒng)才能重新規(guī)劃。這不是限制自由度而是保證每次調(diào)整都基于足夠的觀測樣本避免一兩道題偶然失手就推翻整條路徑。3. 自動批改不只是“打個分”要能定位錯因3.1 題型分級與處理方案我一開始試圖讓一個大模型統(tǒng)一處理所有題型的批改結(jié)果成本高、延遲高、效果還參差不齊。后來改成“分級分流”的思路把題型按結(jié)構(gòu)化程度分成了三類每類用不同的技術(shù)路線題型類別代表題型批改方案關(guān)鍵難點強結(jié)構(gòu)單選、多選、判斷、填空題第一空標(biāo)準(zhǔn)答案比對 輕量改寫匹配同義表述、單位換算、大小寫半結(jié)構(gòu)填空多空、列式計算、簡單證明規(guī)則引擎 公式歸一化 LLM步驟校驗數(shù)學(xué)符號等價、中間步驟不全弱結(jié)構(gòu)簡答、應(yīng)用題書寫過程、小作文LLM按詳細評分標(biāo)準(zhǔn)評閱另加二次校驗評分標(biāo)準(zhǔn)一致性、幻覺糾錯每一類都有專門的處理管線互不干擾。強結(jié)構(gòu)題的處理速度要快到毫秒級弱結(jié)構(gòu)題可以接受幾秒延遲。把所有題都交給大模型逐字推理是性能災(zāi)難也是成本災(zāi)難。3.2 LLM主觀題批改的工程化弱結(jié)構(gòu)題是自動批改的核心難點我在這塊花的時間最多。第一版直接甩給大模型“請給這道題打分”結(jié)果一塌糊涂評分隨意浮動、不給過程說明、經(jīng)常自己腦補出學(xué)生根本沒寫的步驟。后來才把工程化流程理順現(xiàn)在穩(wěn)定很多。現(xiàn)在的流程是分四步走第一步預(yù)先定義評分標(biāo)準(zhǔn)rubric。每道題對應(yīng)的標(biāo)準(zhǔn)分為若干個可獨立評分項比如“公式正確2分”“代入過程正確3分”“最終結(jié)果正確1分”“書寫規(guī)范1分”。大模型只做“按項評分”不做“整體印象分”。第二步向大模型注入結(jié)構(gòu)化prompt要求輸出JSON格式里面包含每個評分項的得分、扣分原因、知識點標(biāo)簽。為了穩(wěn)定解析我把輸出格式示例寫死在提示詞里并讓模型先輸出“思考過程”再輸出結(jié)果但不把思考過程展示給學(xué)生。第三步隨機打亂學(xué)生作答順序分多次調(diào)用模型取同一評分項的中位數(shù)作為最終得分。這樣做是為了避免“批改疲勞”帶來的順序偏差——我實測發(fā)現(xiàn)批到后半段時模型會明顯變松。第四步設(shè)置校驗規(guī)則兜底。如果模型給出某評分項滿分但學(xué)生的相關(guān)公式出現(xiàn)明顯低級錯誤校驗?zāi)K會強制扣分并觸發(fā)人工復(fù)核。主觀題批改的準(zhǔn)確性不能只看“最終分是否接近老師的分”還要看“錯因是否一致”。我做過一個對照實驗同一份50份卷子模型批改結(jié)果與教研組老師批改結(jié)果對比最終分相關(guān)性能做到0.91但錯因一致率只有0.76。這說明模型在“給分”上進步快在“歸因”上仍需大量打磨。3.3 錯誤歸因與反饋生成自動批改的真正價值在反饋。批改頁面上除了一個紅叉和正確答案至少應(yīng)該給出三樣?xùn)|西錯因標(biāo)簽知識缺失、概念混淆、計算失誤、審題偏差、方法不當(dāng)。針對性的講解片段這個概念一句話講清楚配合一個評估過的同類例題。下一步做什么是重做原題、做同類題還是先看前置知識點講解。錯誤歸因的實現(xiàn)我用的是“歸因矩陣”題目在入庫時就由教研人員標(biāo)注了“該題主要考察的知識點”和“常見錯誤選項對應(yīng)的錯誤類型”。選擇題錯了直接用選項對應(yīng)關(guān)系歸因主觀題錯了讓大模型在評分時同時輸出“錯誤可能的知識點根因”再和題庫的標(biāo)注做交集。反饋生成里面有兩條紅線我吃了虧才記住。第一不能直接給學(xué)生貼“笨”“差”“粗心大王”這類的標(biāo)簽不能強化負(fù)面身份認(rèn)同。我見過一個學(xué)生連續(xù)錯五道計算題后系統(tǒng)文案變成了“你最近有點心浮氣躁”家長看到后直接投訴。第二講解片段必須經(jīng)過審核或生成后校驗不能讓模型自己編造一個“課本上沒有的公式”。后面這個坑我會在常見問題里展開講。4. 從零落地一個最小閉環(huán)架構(gòu)、數(shù)據(jù)模型與Prompt設(shè)計4.1 系統(tǒng)架構(gòu)與模塊劃分我落地的第一版系統(tǒng)架構(gòu)非常樸素拆成五個模塊每個模塊都可以獨立替換接入層接收學(xué)生作答、題目信息、學(xué)習(xí)行為日志。批改服務(wù)按題型分流調(diào)用不同評分器。強結(jié)構(gòu)題走本地規(guī)則引擎弱結(jié)構(gòu)題走LLM評分服務(wù)。知識服務(wù)維護知識圖譜、題目難度、推薦候選集是路徑規(guī)劃的基礎(chǔ)數(shù)據(jù)源。路徑引擎讀取學(xué)生最新畫像執(zhí)行狀態(tài)機規(guī)則輸出下一個待學(xué)/待練節(jié)點。反饋服務(wù)把批改結(jié)果和路徑推薦組裝成學(xué)生端展示內(nèi)容包括錯因標(biāo)簽、講解內(nèi)容、鼓勵文案。模塊之間只通過消息交互不共享內(nèi)部狀態(tài)。批改服務(wù)不知道學(xué)生畫像路徑引擎也不會直接改分。這個設(shè)計讓我后面換模型、換評分策略時不需要動其他模塊非常省心。4.2 關(guān)鍵數(shù)據(jù)模型與表結(jié)構(gòu)除了前面提到的知識點畫像表還有兩張表是整個系統(tǒng)的支柱。第一張是題目表它不只是存題干和答案還存了豐富的元信息question ( question_id varchar(32), content text, answer text, subject varchar(32), knowledge_node varchar(32), -- 主考察知識點 related_nodes json, -- 相關(guān)知識點數(shù)組 difficulty int, -- 1~5 type varchar(16), -- choice / fill / subjective rubric json, -- 評分標(biāo)準(zhǔn)主觀題使用 wrong_meta json, -- 常見錯誤選項與錯因映射 status int -- 啟用/停用 )第二張是作答記錄表這是產(chǎn)生畫像的原始素材也是所有畫像更新的觸發(fā)源attempt_log ( record_id bigserial, student_id varchar(32), question_id varchar(32), student_answer text, is_correct boolean, score float, max_score float, error_type varchar(32), response_ms int, -- 作答耗時 created_at timestamp, review_status int -- 正常 / 待人工復(fù)核 / 已復(fù)核 )每次批改完成后都會寫入一張attempt_log再觸發(fā)一個異步任務(wù)去更新student_knowledge_state。這個異步更新必須做冪等因為大模型評分是異步返回的可能出現(xiàn)同一個record被重復(fù)處理的情況。我當(dāng)時在這里吃了一次數(shù)據(jù)錯亂的虧后來加了“按record_id去重更新”的邏輯才解決。4.3 核心Prompt的設(shè)計思路弱結(jié)構(gòu)題的批改Prompt是整個系統(tǒng)的關(guān)鍵。我第一次寫Prompt走的是“自由發(fā)揮”路線效果很差。后來總結(jié)出一套相對穩(wěn)定的模板核心原則是“先定標(biāo)準(zhǔn)再評步驟最后輸出結(jié)構(gòu)”。以“一元二次方程應(yīng)用題”為例簡化后的Prompt如下你是數(shù)學(xué)作業(yè)批改助手。下面是一道應(yīng)用題和一位學(xué)生的作答。 請嚴(yán)格按照評分標(biāo)準(zhǔn)進行評判先自行推導(dǎo)正確解法再對比學(xué)生的作答。 題目 {question} 參考答案 {answer} 評分標(biāo)準(zhǔn)rubric 1. 設(shè)未知數(shù)正確1分 2. 列出正確方程3分 3. 方程求解正確2分 4. 檢驗并下結(jié)論1分 要求 - 先簡要寫出學(xué)生的關(guān)鍵步驟再逐項評分。 - 如果某個步驟缺失但后文沿用該結(jié)果依然按缺失項扣分。 - 輸出JSON格式如下 { method_summary: 學(xué)生采用的方法簡述, scores: { step1: {score: 1, reason: 設(shè)未知數(shù)正確}, step2: {score: 2, reason: 方程漏寫二次項系數(shù)}, step3: {score: 2, reason: 解法正確但中間計算跳步}, step4: {score: 0, reason: 未檢驗} }, total_score: 5, knowledge_tags: [一元二次方程, 應(yīng)用題建模], main_error_type: 步驟不全, main_error_reason: 學(xué)生在求解過程中跳步且未做結(jié)果檢驗 }這個Prompt達到的效果是解析穩(wěn)定性從最初的82%提升到99%以上。模型不再輸出大段散文而是完全按JSON結(jié)構(gòu)返回后端直接反序列化拿字段。后續(xù)要在學(xué)生端展示就直接用reason字段加工成一句話說明。注意這個Prompt里的“參考答案”和“評分標(biāo)準(zhǔn)”必須分開不能把標(biāo)準(zhǔn)藏在答案里否則模型會把寫法和參考答案不一致但等價的過程誤判成錯誤。4.4 效果評估怎么才算“批改得準(zhǔn)”產(chǎn)品上線前必須有量化指標(biāo)否則后面沒法迭代。我搭建的評估體系分三個維度準(zhǔn)確率模型評分與教研老師評分的差值在1分以內(nèi)視為準(zhǔn)確目標(biāo)大于90%錯因標(biāo)簽一致率目標(biāo)大于80%。穩(wěn)定性同一份答卷反復(fù)批改5次評分的方差要小于0.4。這個指標(biāo)控制“同卷不同分”的問題。延遲和成本弱結(jié)構(gòu)題p95延遲控制在8秒以內(nèi)單份卷子的平均批改成本要低于人工成本的40%否則產(chǎn)品沒法規(guī)?;?。穩(wěn)定性問題最容易在評測時暴露。我記得第一版試跑時同一份作文式簡答題連批三次最低給6分最高給9分滿分10分方差驚人。原因就是評分標(biāo)準(zhǔn)沒有被拆成足夠小的子項模型每次“整體感受”不同。把rubric拆細之后方差明顯下降后來加入了多次采樣取中位數(shù)才徹底穩(wěn)定。5. 實戰(zhàn)避坑記錄這些坑我踩過你不要再踩5.1 大模型幻覺它真的會“編造”學(xué)生的錯誤最讓我后怕的一次是調(diào)試主觀題批改時大模型給一份寫得挺好的解答挑了一堆“錯誤”說學(xué)生第二步漏了一個負(fù)號但實際學(xué)生寫得清清楚楚是模型自己看串行看漏了。還有一次更離譜模型指出學(xué)生用了一個“課本里不存在的定理”可那道題根本不需要任何定理正確答案是直接代入計算。那次我意識到如果放任幻覺輸出教育Agent會嚴(yán)重誤導(dǎo)學(xué)生甚至摧毀信任基礎(chǔ)。我的補救方案有三層第一層把學(xué)生作答和標(biāo)準(zhǔn)答案原文都切成小塊在Prompt里用明顯的標(biāo)記分段要求模型“在引用學(xué)生原文后才能打分”。第二層在后端做“答案重寫校驗”模型輸出的reason里如果包含可驗證的公式或步驟就用規(guī)則解析出來和原文比對不一致的直接標(biāo)記為待人工復(fù)核。第三層設(shè)置“低置信度拒答”機制。當(dāng)不同采樣次數(shù)給出的評分差異超過閾值系統(tǒng)不自動反饋轉(zhuǎn)人工。這個成本值得花寧可讓老師多看幾份也不能批量輸出錯誤講解。5.2 批改標(biāo)準(zhǔn)的“松緊漂移”同一道題今天批得嚴(yán)明天批得松這種漂移會讓畫像更新出現(xiàn)抖動。如果某天模型把“步驟不全”的答案給了滿分學(xué)生掌握度被虛高更新后面推薦的題目難度就會偏大學(xué)生練起來非常受挫。我在排查中發(fā)現(xiàn)漂移的主要來源是Prompt中評分標(biāo)準(zhǔn)的描述不夠精確。比如“步驟齊全”這個詞太模糊。后來我改成給每個評分項配示例評分項“列出正確方程”3分 - 滿分示例設(shè)所求數(shù)為x則(x3)(x-2)0 - 不得分示例設(shè)一個數(shù)然后寫了x(x3)0 - 部分得分方程列式正確但未知數(shù)設(shè)置不清晰給正反示例比解釋性文字有效得多。實測下來加了示例后模型批改的“當(dāng)天一致性”和“跨天一致性”都明顯提升特別是跨天一致性是決定畫像能否長期穩(wěn)定的關(guān)鍵。5.3 冷啟動沒有數(shù)據(jù)時怎么開張新學(xué)生沒有任何作答記錄畫像全是空的這時候個性化推薦就是無源之水。我采用了兩階段冷啟動方案階段一定位測試。新學(xué)生進來先做一份短診斷卷卷子每個知識點只出2道題題目難度覆蓋該知識點的基礎(chǔ)、中等、偏上三個檔位總時間控制在20分鐘以內(nèi)。用這份卷子的結(jié)果初始化畫像。階段二試探性學(xué)習(xí)。初始畫像只產(chǎn)生“低置信度的推薦”給新學(xué)生推薦默認(rèn)難度中等、每個節(jié)點只推薦3~5題的保守路徑。等積累夠20道題的作答記錄后畫像置信度上來再切到正常推薦。冷啟動階段特別忌諱一來就推薦“薄弱點專項”因為診斷卷只有2道題不能確定學(xué)生是真的不會還是看錯了題。我給每個節(jié)點同時標(biāo)注了“置信度”置信度低于0.5的知識點不會進入推薦列表只會顯示在“待觀察”區(qū)。5.4 延遲與成本輕量模型和重模型的搭配剛開始我所有題型都用同一個大模型批改選擇題也走LLM單次調(diào)用雖然只要幾百毫秒但并發(fā)一高成本立刻失控。后面我做了分流改造效果立竿見影整體成本下降了大約70%。現(xiàn)在的策略是四個字按題分級。強結(jié)構(gòu)題本地規(guī)則直接判零成本、毫秒級返回。規(guī)則處理不了的邊界情況才兜底調(diào)用模型。半結(jié)構(gòu)題用中等規(guī)模的模型只做“公式歸一化步驟關(guān)鍵點校驗”這類有限推理。弱結(jié)構(gòu)題才用最強大的模型走完整評分流程開啟推理過程蒸餾和JSON結(jié)構(gòu)化輸出。任何模型調(diào)用前都先查緩存。同一道題、同一個學(xué)生的近似作答在短時間內(nèi)可以直接復(fù)用上次批改結(jié)果并進行簡易校驗。延遲方面弱結(jié)構(gòu)題如果一次調(diào)用需要5秒就不要同步等結(jié)果。我的做法是前端先顯示“批改中”后臺異步評分完成后推送提示。這也是很多教育產(chǎn)品能做到體驗穩(wěn)定的原因——不是模型快了而是交互流程兼容了模型延遲。6. 數(shù)據(jù)閉環(huán)與用戶信任Agent越用越準(zhǔn)但底線不能碰6.1 學(xué)習(xí)數(shù)據(jù)閉環(huán)是Agent進化的燃料個性化推薦的本質(zhì)是對學(xué)生狀態(tài)做預(yù)測預(yù)測的準(zhǔn)確率取決于數(shù)據(jù)量。每次作答、每次批改反饋、每次路徑推薦都要回寫到日志里。我的系統(tǒng)會定期離線分析這些日志用來做幾件事發(fā)現(xiàn)知識圖譜的標(biāo)注錯誤。如果大量學(xué)生在過了“知識點A”之后做“知識點B”依然普遍失敗說明A到B的前置關(guān)系可能標(biāo)錯了或者A的掌握度閾值設(shè)置得太低。發(fā)現(xiàn)推薦的偏差。如果某個難度檔位的題目推薦率極高但完成率極低說明難度標(biāo)定或?qū)W生能力估計有系統(tǒng)偏差。生成新的訓(xùn)練樣本。人工復(fù)核過的批改記錄里老師修正了模型的評分這些數(shù)據(jù)積累下來可以微調(diào)模型或讓規(guī)則引擎更完善。我提醒做這塊的同行日志埋點一定要在架構(gòu)初期就做后期補意味著會漏掉大量歷史數(shù)據(jù)非??上?。6.2 隱私與數(shù)據(jù)落盤的底線教育場景涉及大量未成年人數(shù)據(jù)底線非常清楚。我在項目一開始就確定了幾個原則學(xué)習(xí)行為數(shù)據(jù)必須脫敏存儲、學(xué)生個人畫像數(shù)據(jù)不能外傳用于任何其他業(yè)務(wù)、家長和老師有權(quán)查看系統(tǒng)基于哪些數(shù)據(jù)給出了推薦數(shù)據(jù)可解釋性。系統(tǒng)里的“學(xué)生ID”盡量用系統(tǒng)內(nèi)部映射ID不直接使用真實姓名、證件號等原始標(biāo)識。對外輸出到分析報表的只有聚合統(tǒng)計不涉及個體明細。6.3 人機協(xié)同的邊界教育Agent再怎么智能也不能替代老師的最終決定權(quán)。我在系統(tǒng)里保留了三個強制人工環(huán)節(jié)弱結(jié)構(gòu)題評分置信度低時自動轉(zhuǎn)人工、學(xué)生連續(xù)三次被標(biāo)記為同一錯因時通知老師介入、任何“負(fù)面標(biāo)簽”的生成和展示都必須經(jīng)過老師確認(rèn)。這不是防御性設(shè)計而是產(chǎn)品價值的必要部分——機器負(fù)責(zé)提效老師負(fù)責(zé)育人這個邊界不能越界。7. 長期迭代方向把這個過程變得更聰明也更有溫度這套系統(tǒng)跑通之后我從第一批真實使用數(shù)據(jù)里得到一些很明確的迭代方向分享給正在做或準(zhǔn)備做教育Agent的朋友。方向一是“路徑推薦的可解釋可視化”。學(xué)生端展示的不是一句“為你推薦三道題”而是一張可點擊的知識地圖標(biāo)明“你已經(jīng)掌握哪些節(jié)點、正在學(xué)習(xí)哪些節(jié)點、下個節(jié)點是什么”。教育場景的推薦越透明學(xué)生的主動感越強堅持學(xué)習(xí)的意愿越高。我觀察到的數(shù)據(jù)顯示打開知識地圖的學(xué)生完成推薦練習(xí)的比例比只看文字提示的學(xué)生高出不少。方向二是“自適應(yīng)測試與路徑動態(tài)調(diào)整的深度融合”。第一版是做完一組題再更新畫像實時性不夠。后續(xù)可以做“答題中途實時調(diào)整”——比如學(xué)生已經(jīng)連續(xù)做對五道中等難度題系統(tǒng)在前端就立刻插入一道挑戰(zhàn)題而不必等到本輪練習(xí)結(jié)束。方向三是“批改反饋的個性化語言風(fēng)格”。同樣的錯因外向一點的學(xué)生需要鼓勵式語氣謹(jǐn)慎型學(xué)生需要干脆直接的分析。這個不是給Prompt加角色設(shè)定那么簡單而是需要沉淀一套“反饋風(fēng)格偏好”數(shù)據(jù)并不斷測試哪種語氣對行為轉(zhuǎn)化最有效。最后再分享一個小技巧教育Agent做反饋文案時別用“有些學(xué)生”這種模糊主語一定要用“你”。實測下來“你漏掉了這一步里的負(fù)號建議檢查符號問題”比“部分學(xué)生會在這一步漏掉負(fù)號”更有效。原因是自動批改本身已經(jīng)承擔(dān)了教師的一部分獨特性反饋角色反饋語言越直接指向個體行為學(xué)生越覺得系統(tǒng)是在幫他而不是在訓(xùn)他。這個細節(jié)不大但對學(xué)生留存率的影響一點都不小。