?

基于ChatGPT的課程學習助手系統的設計與實現

2024-01-14 06:35孫洪迪賈民政楊民峰
北京工業職業技術學院學報 2024年1期
關鍵詞:編程語言關鍵字代碼

孫洪迪 賈民政 楊民峰

(北京工業職業技術學院信息工程學院,北京 100042)

0 引言

ChatGPT全稱是Chat Generative Pre-trained Transformer,是OpenAI公司于2022年11月發布的一款聊天機器人程序。ChatGPT能根據用戶提出的問題,經人工標注數據集訓練的算法智能生成回答內容,而不僅僅只是加工現有內容。它能夠像人類一樣自然地進行對話,并且具備完成各種任務的能力,包括郵件撰寫、視頻腳本創作、文案編寫、翻譯以及代碼生成等。

Java語言、Python語言等計算機編程語言類課程在教學中面臨諸多困難,如教材教輔體量有限,學生程序代碼閱讀量有限;有的學生編程思路不清晰編寫程序困難,有的學生編寫出程序但不會調試等。若將ChatGPT引入到計算機編程語言類課程的學習和教學中,可以促進學生對該類課程的學習和理解。本文設計的基于ChatGPT的計算機編程語言類課程學習助手系統,不僅是一個技術創新,更是一種教育改進的嘗試,旨在克服傳統計算機編程語言教育中的各種挑戰。

1 ChatGPT應用領域研究現狀

ChatGPT發布后,學者們圍繞ChatGPT的應用領域進行了廣泛研究。吳俊雄[1]提出ChatGPT在金融領域客服咨詢、文案生成、市場評估等方面的應用可能性,并分析了金融風險及局限性。金源等[2]提出一套使用ChatGPT構建問答式財務知識庫的可行框架,并分析了對于財務公司的應用價值。吳英華等[3]分別針對醫務管理人員、醫生醫技人員以及患者三類用戶群體,梳理ChatGPT技術在智慧醫療領域的典型應用場景。Biswas[4]分析了ChatGPT在公共衛生中的潛在用途。

ChatGPT在教育領域也同樣得到深入研究。胡影等[5]分析了ChatGPT對于教育領域的影響和展望。谷生然等[6]研究了ChatGPT對于大學生數字教育的影響。范春蕾等[7]針對ChatGPT在大學基礎課教學個性化學習支持、即時問題解答、學習資源和教學案例等方面的應用進行了研究。

筆者通過分析計算機編程語言類課程在教學過程中遇到的各種困難,設計了一款基于ChatGPT的計算機編程語言類課程學習助手系統。系統通過調用ChatGPT API接口,實現知識點儲備以供用戶學習;通過配置關鍵字,可以及時響應用戶編程時各種需求,幫助用戶解決編程過程中遇到的困難。該系統在實踐教學中投入使用,效果良好。

2 系統核心功能的設計

通過分析計算機編程語言類課程教學中遇到的問題,設計課程學習助手系統的核心功能:給用戶提供計算機編程語言課程學習內容;在系統內進行程序代碼編寫,當遇到編程問題,系統可以對其進行提示性輔助幫助。

2.1 提供學習內容

系統事先通過ChatGPT收集整理課程知識點,將知識點內容存放在數據庫中。用戶使用系統時,從數據庫中加載與該知識點相關的學習內容,包括課程大綱、授課方式以及詳細的知識點描述等內容以供用戶學習。加載完成后,系統轉入代碼編寫模式,等待用戶的輸入。用戶開始輸入時,系統監測用戶的輸入內容,以便快速識別用戶需要的支持。當用戶輸入內容與數據庫關鍵信息匹配時,系統智能地將用戶的問題以及知識點信息,組織成一個ChatGPT會話請求,交由ChatGPT進行分析和解答。

2.2 輔助編程

系統可以幫助用戶解決課程教學中遇到的困難,包括根據用戶輸入的代碼實時進行分析,提供有關語法和邏輯錯誤的提示與建議;解釋程序代碼的含義、程序設計中的知識點以及編程技巧,幫助初學者更好地理解編程基礎知識;提供多種示例代碼,幫助用戶更好地理解編程語言和程序設計思想,掌握編程技能。

ChatGPT能基于輸入內容生成詳細且相關的教學回應,并將回應以一種清晰易懂的方式呈現在編程提示反饋框中,供用戶查閱和參考。這種實時性智能互動,能夠大幅度提升編程的學習效率,使用戶能夠在實際編寫代碼過程中獲得及時指導和反饋,從而更深入地理解知識點,提高編程技能,掌握編程知識。

3 系統核心功能的實現

3.1 調用ChatGPT API接口

OpenAI為了使開發者能夠更輕松地利用這一技術,推出自然語言處理工具ChatGPT API,該API允許開發者與ChatGPT進行交互,并在應用程序或網站中集成ChatGPT的功能。ChatGPT API基于GPT-3.5-turbo模型構建,是GPT-3.5系列中最快速、最靈活的模型之一。

ChatGPT API提供多種接口,以http方式提供服務,請求和響應數據采用.json格式,能夠方便地與各種編程語言進行交互。本文設計的系統采用最常用的問答功能接口作為編程輔助功能的AI支持,接口使用POST請求,地址為api.openai.com/v1/completions。具體的請求參數如表1所示。

表1 ChatGPT API接口參數表

上述參數中,prompt參數用于傳遞給ChatGPT的對話內容,以數組形式提供多個對話或上下文信息。在開發上下文感知型問答系統時,將更多相關信息包含在數組中,可以促進ChatGPT理解上下文內容,增強對話能力。課程學習助手系統將更多信息輸入到ChatGPT中,使其能更加全面理解課程內容以及學生當前的具體需求。系統請求操作如下。

POST請求響應以json字符串形式呈現,其中包含一個回答列表,具體回答內容存儲在choices字段并反映在界面,以便用戶查看。詳細返回參數如表2所示。

表2 請求響應返回字段參數表

以上述示例的請求為例,該請求響應如下。

"choices":["學生提供的for循環語句存在一些語法錯誤。正確的for循環語法結構由三個部分組成:初始化、條件判斷和迭代操作。修正后的代碼以及對每個部分的解釋:for(inti=1;i<=9;i++)。",

"1.初始化部分:inti=1,初始化一個整數變量i并將其賦值為1。這是循環開始時的初始條件。",

"2.條件判斷部分:i<=9,循環執行的條件。只有當i的值小于或等于9時,循環才會繼續執行。當條件為假時,循環將結束。",

"3.迭代操作部分:i++,每次循環迭代時執行的操作。它將i的值增加1,以控制循環變量i的變化。",

"若輸入中包含語法錯誤,應該更正為上述形式,以正確執行循環并完成九九乘法表的打印任務。"],

3.2 構建數據集

課程學習助手系統中,每門課程內容編排以及不同章節對應學習任務的設計,都需要預先編輯并保存到磁盤中,以便系統啟動時加載使用。系統的數據管理采用SQLite輕量級數據庫作為底層存儲引擎,優勢為SQLite具有卓越性能和高度可靠性,能夠快速響應大量查詢請求;SQLite不需要獨立服務器或配置復雜管理系統,使得部署和維護變得相對簡單;系統更新時,只需要下載并替換本地SQLite存儲文件即可。

設計系統的數據庫時,每一門課程是一個獨立數據表,同時可以建立多張數據表對應多門課程。此外,為更好支持學生學習,每一張數據表被進一步劃分為不同章節,每個章節記錄相關知識點的詳細信息。這種劃分設計,讓學生能夠有針對性地練習和學習特定知識點,從而更全面地掌握編程技能。

由于ChatGPT API支持對話信息以數組方式代入,系統在數據庫設計中選擇更加精細的列分割方式,以便對知識點進行更全面和詳細的記錄。這一方法有助于ChatGPT更準確地理解教師所要傳達給學生的知識內容,為學生學習知識點提供更精確的支持。數據表分列劃分如表3所示。

3.3 配置關鍵字

課程編排的存儲方式,較為關鍵的是Hit字段。用戶編程輸入過程中,通過預先配置的關鍵字與輸入內容進行實時匹配,以便用戶在需要時得到輔助信息。關鍵字設計不僅能夠有效幫助課程設計者安排每個知識點的關鍵教學內容,還有助于ChatGPT生成更為精準和針對性的內容。

用于檢測的關鍵字可以是豐富多樣的,它們的設計和應用可以提升編程效率和授課效果。根據具體課程和知識點教學要求,通過Description字段與Hit字段的搭配使用,可以產生注釋解讀、Bug查找、代碼注解、代碼示例等多種輔助教學形式。當用戶輸入回車后,系統會自動檢查用戶輸入的該行代碼,如果命中到相關的關鍵字,就會實時給出相應回復。

關鍵字的配置:①注釋解讀配置。當用戶輸入并命中注釋關鍵字時,系統會智能解析注釋內容,然后根據用戶意圖和需求,自動補全后續代碼,并給出后續代碼的編寫思路。這一功能可以幫助用戶梳理編程思路,提高編程效率。②Bug查找配置。Bug是編程中常見問題,它可能導致程序運行時出現錯誤。系統可以根據每一章節重點教學內容,為用戶設計Bug查找關鍵字。例如教學內容是for循環,那么可以設計Hit字段為“for”,字段Description1為“檢查該行代碼是否有Bug,如果有Bug,請給出正確寫法”,當用戶書寫for循環代碼時,系統會檢查for代碼中是否存在潛在Bug,并實時指出Bug,同時提供多種修復方法和調試手段。③代碼注解配置。代碼注解關鍵字用于解釋用戶輸入代碼塊功能和用途。這一功能有助于用戶更好地理解所編寫的每行代碼以及代碼的整體邏輯。例如可以設計“if”關鍵字,字段Description1中加入“將該代碼加上注釋”。通過代碼注解,用戶可以深入了解代碼設計思路和執行流程,從而提高用戶對編程思路的理解。④代碼示例配置。代碼示例關鍵字提供與特定知識點相關的代碼示例。例如Hit為“continue”關鍵字時,字段Description1可以描述為“給出更多關于continue的代碼例子”。這些示例代碼可以幫助用戶學習和參考,為其提供實際的編程示范,有助于用戶加深對知識點的理解,提高編程技能水平。

關鍵字不同形式的設計,是根據課程內容和用戶需求設定的,旨在為用戶提供個性化支持,確保用戶能夠充分掌握編程知識和技能。關鍵字設計時,盡量以“for”“if”等簡單形式存在,如果設計的關鍵字較復雜,用戶代碼編寫有誤時,可能會無法命中對應的關鍵字。例如,關鍵字設計為“if(i==1)”,當用戶錯誤書寫成“if(i=1)”,那么系統將無法命中該關鍵字,導致用戶錯過利用ChatGPT檢查錯誤的機會。

使用多種關鍵字形式,可以為系統注入更多靈活性和多樣性,以滿足不同用戶的學習需求,促進更有效的計算機編程語言教育。通過課程學習助手系統,無論是初學者還是有經驗的編程者,都可以獲得實時的、有針對性的幫助,從而更有效地學習和應用編程知識。

4 實驗測試結果及分析

4.1 軟件開發環境

為了確保用戶可以在Windows,Linux,IOS等各種操作系統上無縫使用課程學習助手系統,采用Java語言開發軟件,以實現跨系統的運行兼容性。

課程學習助手系統的界面設計,選擇Swing作為底層界面顯示框架。它能夠提供豐富多樣的窗口和控件,使得界面設計變得輕松而靈活。Swing不僅提供可定制的用戶界面元素,還具備多種消息傳遞機制,可以實現用戶與軟件有效交互。

4.2 課程學習助手系統測試

系統分別針對Java語言、Python語言以及編程中出現的Bug進行測試。

Java語言測試中,首先測試注釋解讀關鍵字。在注釋里輸入“寫一個帶Main函數的類”,很快在ChatGPT反饋區中,就展示如何使用Java語言編寫一個帶有Main函數的類,并在圖1所示的測試結果圖中用右邊灰色區域提示用戶相應的操作;繼續在注釋行里輸入“寫一個九九乘法表”,ChatGPT反饋區馬上顯示完整的九九乘法表代碼,并告訴用戶這段代碼的執行結果。

Python語言測試中,對注釋解讀關鍵字進行測試。在注釋中輸入“引入圖形顯示庫”,在ChatGPT反饋區中,就展示了Python的圖形顯示庫如何引用。對代碼注解關鍵字進行測試,輸入一個for循環代碼,ChatGPT詳細解釋用戶輸入for語句的含義,并給出更多的for循環示例。測試結果如圖2所示。

圖2 Python編程測試結果圖

以Java語言為例,進行Bug查找關鍵字測試。書寫一個錯誤的if語句,ChatGPT馬上發現這個錯誤,并給出正確寫法,同時向用戶詳細解釋原因。測試結果如圖3所示。

圖3 Bug編程測試結果圖

實驗測試結果表明,課程學習助手系統在處理各種編程語言方面表現出色。通過針對不同關鍵字的檢測,能夠滿足用戶多樣化需求,為用戶在學習編程過程中提供豐富支持和幫助。但系統仍存在不完善之處,如由于用戶的原因輸錯關鍵字,將“for”輸成“far”,則系統無法使用模糊比對方式命中該關鍵字,從而失去對用戶的矯正。

5 結論

隨著ChatGPT的推出和發展,研究人員在各個領域對其進行了深入研究,但大部分研究還停留在理論探討層面。本文通過設計一款基于ChatGPT的計算機編程語言課程學習助手系統,圍繞API調用、數據集構建、關鍵字構建三個技術點實現系統功能,將ChatGPT強大潛力轉化為實際教育領域中的創新和應用。通過一系列的測試和評估,該系統在教學環境中能夠順利運行,并在實際計算機編程語言教學環境中為教師和學生提供幫助。

猜你喜歡
編程語言關鍵字代碼
履職盡責求實效 真抓實干勇作為——十個關鍵字,盤點江蘇統戰的2021
壓力-體積轉換在CFC編程語言中的實現解析
Java編程語言的特點與應用
成功避開“關鍵字”
創世代碼
創世代碼
創世代碼
創世代碼
淺談不同編程語言對計算機軟件開發的影響
面向對象Web開發編程語言的的評估方法
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合