基于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开发编程语言的的评估方法