中圖分類號:G434文獻標識碼:A論文編號:1674-2117(2025)17-0085-04
背景與問題
北京市教育委員會印發(fā)的《北京市中小學智慧校園建設規(guī)范(試行)》提出:要支持教學全過程學習分析,解決學情數(shù)據(jù)采集、學情動態(tài)診斷、智能批改與個性化成長等問題。因此,教師需要充分收集與學生行為、成果相關的學習數(shù)據(jù),基于真實數(shù)據(jù)開展學情分析,引導學生開展總結反思,形成有利于學生未來發(fā)展的關鍵能力、必備品格和價值觀念。
但在教學實踐中,數(shù)據(jù)的收集面臨諸多挑戰(zhàn)。課堂上產生的學習數(shù)據(jù)紛繁復雜,而教師需要的數(shù)據(jù)是有針對性且個性化的,難以使用通用軟件或信息化平臺進行有針對性的收集。例如,對于利用錄音錄像等形式采集的數(shù)據(jù),教師依然需要在后期花大量的時間對其進行處理才能得到所需要的有效信息。但普通教師又缺乏時間、精力自行編寫個性化的數(shù)據(jù)收集軟件來解決這類問題。隨著生成式人工智能的普及,教師開發(fā)軟件的編碼負擔大大降低。教師只需使用自然語言描述自己的設計構想,生成式人工智能就可以給出相應的程序代碼,免去了開發(fā)過程中反復查閱編程文檔、學習編程語法的環(huán)節(jié)。
因此,筆者在教學中嘗試使用騰訊元寶內置的DeepSeekV3大模型(以下簡稱DeepSeek)編寫“表現(xiàn)性評價數(shù)據(jù)采集助手”教學輔助軟件,并借此探索使用生成式人工智能開發(fā)教學軟件的優(yōu)勢和可能存在的問題。
“表現(xiàn)性評價數(shù)據(jù)采集助手”軟件開發(fā)實踐
使用生成式人工智能開發(fā)軟件的過程和人工開發(fā)軟件的過程基本一致,都包括需求分析、概要設計、編碼和測試。不同之處在于,人在其中主要扮演軟件設計師和測試工程師的角色,負責提出設計方案、檢驗程序質量,而生成式人工智能則扮演程序員的角色,負責生成程序代碼。
1.需求分析
橋梁模型設計與制作是通用技術學科中的典型教學項目。學生在項目中會使用指定的材料設計并制作符合一定力學性能要求的橋梁模型。教師會從表現(xiàn)性評價的角度出發(fā),綜合作品的多項數(shù)據(jù)展開分析和評價,其中最主要的數(shù)據(jù)是橋梁模型的自重、承重和承重比。
“表現(xiàn)性評價數(shù)據(jù)采集助手”是一款桌面端軟件,主要解決課堂上使用電子表格等傳統(tǒng)方法錄入數(shù)據(jù)效率低,無法記錄作品的形狀、工藝、尺寸等信息的問題。軟件具有以下基本功能: ① 提供單一界面。用戶可以通過輸人學號檢索學生,顯示學生姓名。 ② 輸人作品自重、承重數(shù)據(jù),通過點擊按鈕或快捷鍵計算承重比。 ③ 點擊錄人按鈕或快捷鍵保存學生作品的自重、承重、承重比數(shù)據(jù),并調用攝像頭拍攝作品照片。 ④ 使用電子表格文件存儲數(shù)據(jù),方便用戶使用電子表格軟件進行數(shù)據(jù)排序、篩選等后期處理。 ⑤ 具備跨平臺運行能力,適應“信創(chuàng)”電腦軟硬件環(huán)境。
2.開發(fā)過程
(1)基礎功能開發(fā)
程序的基礎功能是錄入學號、自重和承重數(shù)據(jù),然后根據(jù)學號顯示學生姓名,最后計算承重比并將數(shù)據(jù)寫入電子表格形式的成績冊。
筆者向DeepSeek輸人提示詞:“寫一個錄入學生成績的Python程序。程序使用Excel表存儲數(shù)據(jù)。現(xiàn)有表格A列為學號,B列為姓名。程序界面第一部分為學生信息輸入?yún)^(qū),有一個文本框輸入學號前6位,另一個文本框輸入學號后2位。在用戶輸入完成后,程序根據(jù)學號在Excel中搜索學生姓名并顯示在軟件界面上。在用戶確認姓名后,可以在下方兩個輸入框輸入作品自重和作品承重數(shù)據(jù),在輸入完成后,程序自動計算承重比(承重/自重)顯示出來。在用戶點擊錄入按鈕后,程序將自重、承重和承重比數(shù)據(jù)寫入Excel表,寫入位置在學生姓名右側的單元格。如果多次錄入同一學生數(shù)據(jù),就依次在右側添加。”
以上提示詞主要包含了數(shù)據(jù)、界面、算法、交互四個部分,并且將軟件性質直白地定義為錄入成績軟件。
數(shù)據(jù)部分描述了程序的數(shù)據(jù)來源和存儲方式均為Excel電子表格,還描述了表格中所包含的數(shù)據(jù)字段;界面部分描述了輸入框、按鈕等界面元素;算法部分描述了承重比的計算方法;交互部分描述了交互方式,即用戶點擊按鈕的行為及之后程序要執(zhí)行的任務。
DeepSeek除了給出完整源代碼,還進行了簡要說明,并提醒用戶準備指定文件名和內容的測試數(shù)據(jù)文件,安裝運行程序必需的第三方庫。DeepSeek給出的第一段代碼中已經提供了完整的界面,其中三個按鈕可以實現(xiàn)通過學號查找學生、計算承重比和錄人數(shù)據(jù)。從源代碼中可以看到,提示詞中沒有提到如何構建圖形界面,DeepSeek選擇了Python開發(fā)中最基礎的Tkinter庫,同時,還自行設計了根據(jù)學號在電子表格文件中查找學生姓名的算法。但在運行過程中發(fā)現(xiàn),當輸入正確的學號并點擊“查找學生”按鈕后會顯示無法找到學生。
(2)調試與排錯
在閱讀源代碼后,筆者發(fā)現(xiàn)負責查找學生的方法為find_student.根據(jù)經驗,數(shù)據(jù)無法正常匹配的原因可能是二者數(shù)據(jù)類型不一致,這是一個很容易解決的問題。所以,可以嘗試提供錯誤信息,讓DeepSeek修改。
修改提示詞為:“在點擊搜索學生后,無法匹配到學生。經檢查,輸入的學號已經存在于表格中。請檢查search_student(中存在什么問題。”
該提示詞主要強調數(shù)據(jù)錄入的正確性,要求DeepSeek排除用戶輸錯數(shù)據(jù)的可能性,直接排查代碼的問題。經過本次提示,DeekSeek改正了search_student(中的錯誤,并重新給出了search_student(方法的代碼。同時,分析產生錯誤的原因可能是數(shù)據(jù)類型不一致,或者數(shù)據(jù)中存在肉眼容易忽視的空格。但再次運行中筆者發(fā)現(xiàn),負責向電子表格寫入數(shù)據(jù)的save_data方法也有類似的問題,而DeepSeek并沒有舉一反三地進行修復。所以,還需要用人工提示詞的形式要求其修復。提示詞為:“save_data(函數(shù)中進行數(shù)據(jù)查找和寫入也可能出現(xiàn)空格和數(shù)據(jù)類型不匹配的問題。請按上面的方法修改save_data(函數(shù)。”
當修改完成并重新運行程序后,程序已經可以正確查找學生、計算承重比并寫入數(shù)據(jù)。但是,寫入數(shù)據(jù)的形式和預期的不一致,程序把自重、承重和承重比數(shù)據(jù)都寫在了同一個單元格內,不符合結構化數(shù)據(jù)的形式,也不利于后期在電子表格軟件中按承重比進行排序等操作。
在之前的提示詞中,只提到了“寫入位置在學生姓名右側的單元格”,因此現(xiàn)在的錄入形式也不算違反了提示詞的要求。但這一做法有違軟件開發(fā)中結構化存儲數(shù)據(jù)的一般做法,顯得有些“死板”,不是很“聰明”。為了實現(xiàn)理想的數(shù)據(jù)存儲形式,還要再次進行修復,因此筆者將提示詞改為:“在錄人數(shù)據(jù)時,將自重、承重和承重比數(shù)據(jù)分別寫入姓名后的三個單元格,只寫入數(shù)值。”
在修改后,當再次寫入數(shù)據(jù)時,自重、承重和承重比數(shù)據(jù)已經分別位于三個不同的列。但當多次錄入同一學生數(shù)據(jù)時,新的數(shù)據(jù)會直接覆蓋掉舊的數(shù)據(jù),這不符合第一次提示詞中“如果多次錄入同一學生數(shù)據(jù),就依次在右側添加”的要求。可見,DeepSeek無法很好地將原有要求和新的要求結合起來統(tǒng)籌思考。于是,筆者再次修改提示詞:“在多次錄入同一名學生的數(shù)據(jù)時,不要覆蓋已有的成績數(shù)據(jù),直接在已有數(shù)據(jù)的右側添加新數(shù)據(jù)即可。”
通過本次修改,就可以正常輸入、計算和向電子表格文件寫入數(shù)據(jù)了,當多次錄入數(shù)據(jù)時也可以將新數(shù)據(jù)正確寫入已有數(shù)據(jù)右側。
(3)交互優(yōu)化
在初步測試過程中,筆者發(fā)現(xiàn),人工點擊“查找學生”按鈕的過程較為煩瑣,而且鍵盤錄入學號、鼠標點擊按鈕的交替操作方式很容易降低用戶的操作效率。所以,筆者做出了兩項修改:一是讓程序自動檢測學號位數(shù),達到八位后自動查找并顯示學生姓名;二是設置兩項鍵盤快捷鍵,代替用鼠標點擊“計算承重比”和“錄入”按鈕。
第一項修改的提示詞為:“讓程序在用戶輸入學號時不斷檢查兩個學號輸入框中的數(shù)字是否達到八位,如果達到了,就自動顯示出學生姓名,不用點擊查找學生按鈕。給出要修改的部分即可,不用解釋代碼,不用提供測試方法。”
第二項修改的提示詞為:“使用鍵盤Ctrl+S鍵為錄入數(shù)據(jù)的快捷鍵,Ctrl+D鍵為計算承重比的快捷鍵。”
本次修改的難點在于兩個快捷鍵的設計。快捷鍵既不能和Ctrl+C等系統(tǒng)已有的快捷鍵重復,又要符合用戶的習慣,方便用戶記憶和操作。所以,筆者使用其他軟件常用的保存快捷鍵Ctrl+S作為錄入快捷鍵,而計算承重比快捷鍵則使用離Ctrl鍵和S按鍵較近的D按鍵,方便用戶連續(xù)按動這兩個快捷鍵。
(4)擴展功能開發(fā)
為了實現(xiàn)為作品拍照的擴展功能,筆者給出提示詞:“給錄入按鈕增加一個功能,點擊錄入之后,調用電腦的USB攝像頭拍攝一張分辨率為 1920*1080 的照片,將照片保存在程序所在目錄的photo文件夾下。照片文件名為學號、姓名和承重比的組合,每項數(shù)據(jù)之間用“”符號鏈接。請給出要修改的代碼。”
這段提示詞主要指定了拍攝照片的分辨率,以及保存照片的路徑和命名規(guī)則,方便后期在操作系統(tǒng)中搜索需要的文件。DeepSeek選擇了OpenCV調用攝像頭,拍攝照片。經過測試按下錄入按鈕或快捷鍵后,攝像頭能正常啟動并拍攝照片,但照片文件的中文字符出現(xiàn)了亂碼。字符亂碼是一種常見的錯誤,所以筆者先嘗試讓DeepSeek自行解決,提示詞為:“在保存照片時,文件名中的中文會出現(xiàn)亂碼,請分析原因,嘗試修復。”
在DeepSeek給出的修復代碼中,使用了filename.encode('utf-8').decode('utf-8')來解決亂碼問題,但在實際運行中沒有效果。當再次要求其修改后,還是給出了幾乎一樣的解決方法。經過人工排查,得知是生成圖片的cv2.imwrite(導致的亂碼問題。經測試,即使打開DeepSeek的聯(lián)網搜索功能,也沒有在回答中提供正確的解決方案。最后,筆者將提示詞寫為“嘗試使用imencode代替imwrite解決中文亂碼問題”才獲得了修復亂碼問題的正確代碼。DeepSeek還解釋了imencode方法不會產生亂碼的原因是“將圖像編碼為字節(jié)流,完全繞過了OpenCV對文件名的處理”。由此可見,DeepSeek掌握了imwrite(方法和imencode方法的特征和使用方法,但在實際解決的過程中卻無法調用正確的信息形成可行的解決方案。
3.應用效果
經測試,“表現(xiàn)性評價數(shù)據(jù)采集助手”軟件運行穩(wěn)定可靠,未出現(xiàn)異常退出和報錯,錄入時間比不使用該軟件時減少了約 50% ,有效提高了教師錄入學生作品數(shù)據(jù)的效率。軟件自帶的承重比計算功能便于學生根據(jù)承重比數(shù)值決定是否記錄當前成績,有效提高了決策效率。同時,教師在課堂上開展項目總結時,可以快速調取軟件所記錄的作品數(shù)據(jù)和照片,點評更具體,更有針對性。
開發(fā)反思
1.教育數(shù)據(jù)管理軟件的開發(fā)過程
在需求分析階段,要根據(jù)教學目標和學習任務明確課堂學習過程中可能會產生哪些數(shù)據(jù),為了分析學情、改進教學,就要收集學習數(shù)據(jù),然后再結合生成式人工智能的編程能力,確定通過軟件收集數(shù)據(jù)的可行性。
在概要設計階段,要從界面、交互、算法、數(shù)據(jù)等多個層面進行設計。重點明確要實現(xiàn)的效果,具體實現(xiàn)方法可以交給生成式人工智能來完成。同時,還要明確使用何種編程語言和框架,且設計方案要滿足需求,符合軟件工程的一般規(guī)律,保證軟件功能正常發(fā)揮和穩(wěn)定性。
在編碼階段,要把設計方案用直白明確的語言編寫成提示詞,教師可以給出一些示例來表現(xiàn)需要的效果。不同的生成式人工智能的代碼生成性能會有一定差異,實踐中可以嘗試使用不同的人工智能來生成代碼。同時,生成式人工智能編寫的代碼也可能存在錯誤,要做好單元測試,及時發(fā)現(xiàn)程序中的錯誤。在修復錯誤時,可以先將報錯信息或錯誤現(xiàn)象作為提示詞,讓人工智能自行重寫代碼。如果仍然無法修復,則需要人工分析出現(xiàn)錯誤的原因,在提示詞中給出更加明確的解決思路和方法,幫助生成式人工智能生成正確的代碼。
測試是檢驗程序質量的關鍵環(huán)節(jié)。為了更加全面地評價代碼的可用性,需要編寫一些符合實際使用場景的測試用例,測試用例中要明確輸入數(shù)據(jù)和預期結果。在測試時,應重點關注程序是否能正確處理用戶的異常操作,并給予反饋,幫助用戶糾正錯誤。
2.對教師素養(yǎng)的要求
① 教學設計。教師需要從學生學習、認知的角度出發(fā),按照教學規(guī)律,明確哪些數(shù)據(jù)是值得收集和分析的,知道如何運用數(shù)據(jù)分析學情、改進課堂環(huán)節(jié)、引導學生充分反思。
② 軟件設計。教師作為開發(fā)者,可以把主要精力放在軟件的設計層面。在交互設計層面,要充分發(fā)揮創(chuàng)意,提高軟件的可用性,為師生帶來愉悅的使用體驗。在數(shù)據(jù)結構設計層面,可以借鑒關系數(shù)據(jù)庫中的數(shù)據(jù)表和字段的設計思想,設計出有利于統(tǒng)計分析的數(shù)據(jù)結構。同時,還要能運用專業(yè)術語或示例準確描述要實現(xiàn)的數(shù)據(jù)結構和交互方式,更好地引導生成式人工智能生成程序代碼。
③ 編程與調試。教師不僅要能科學地編寫提示詞,調用生成式人工智能實現(xiàn)更具創(chuàng)意的設計方案,還要積累常見程序錯誤的解決思路,提升問題解決能力,并能通過下達更準確的提示詞,修復程序中的錯誤,同時要能自行部署軟件運行環(huán)境。
參考文獻:
查德清.生成式人工智能賦能教師Python編程實踐探究[J].中小學信息技術教育,2025(01):59-61.e