2024年9月9日,北京大学“赛博助教”系统迎来了大幅扩展升级,马郓团队推出适用全科教学的通用教辅系统—“赛博通师”。
马郓 北京大学人工智能研究院助理教授、博士生导师
“ChatGPT推出后,我发现它在编程方面的能力太强了,开始琢磨它对教学能起到什么帮助。然而将课程教学与大语言模型结合并没有先例,一切都要从零开始探索。”在接受本刊采访时,北京大学人工智能研究院助理教授马郓说。
北京大学为全校非理科专业1600余名学生开设了必修课“计算概论C”,马郓负责其中一个班级的教学。2023年夏,他将ChatGPT与课程结合,开发了“赛博助教”。
计算概论C:给文科生的编程课
“计算概论C”的前身是“文科计算机基础”,是北京大学面向所有非理科专业学生开设的必修课,主要讲授计算机基本原理和WORD、PPT、EXCEL等实用软件的使用。从2020年开始,“文科计算机基础”更名为“计算概论C”,教学内容调整为Python编程。
马郓所在的教学组有17位教师,每年为1600余名学生授课,马郓负责其中一个班级的教学,约120名学生。“计算概论C”旨在培养学生的计算思维能力,从问题求解的角度指导学生学习运用程序设计方法来解决应用问题。放眼国际,人工智能的兴起也使得人文社科领域开始借助计算的方式来辅助分析,正在形成新的研究范式。
“计算概论C”教学组向来鼓励老师们在教学上自发探索,进而将优秀经验和做法在教学组中推广。马郓的教学理念是秉持开放心态,主动拥抱新技术。他热衷于给学生科普IT领域的前沿热点,如云计算、大数据、人工智能、区块链、元宇宙等。以ChatGPT为代表的大语言模型推出后,马郓积极将其融入课程教学,开发了为学生自助答疑系统“赛博助教”,还在授课、作业、备课等多个方面对大语言模型展开了应用。
赛博助教的诞生
“计算概论C”面向非理科专业的学生,他们的数学基础、计算机基础和逻辑思维能力差异非常大。而编程是一门对理科思维要求较高,且很注重技巧性的课程。因此,学生在编程过程中遇到的问题可谓层出不穷,答疑的工作量巨大。一般来说,学校会给120人的教学班级配置3名助教,但马郓通常会额外招募3名志愿者,组成6人的助教团队,才基本保证学生的提问能够及时得到解答。然而,临近作业截止日和考试时,答疑工作量还会骤增。
于是,马郓团队从答疑这个痛点切入,利用ChatGPT强大的编程能力,开发了可以解答学生问题、修改程序bug的赛博助教。他们面临的第一个问题是,ChatGPT是通用大语言模型,通用就意味着解决特定问题的能力会有所欠缺,需要定制化的开发将其与课程有机结合。于是团队设计了一套提示词(Prompt)模板,在其中设置了一些空白,根据学生的具体问题抽取相关信息填入模板中,得到向ChatGPT提问的文本。例如,“你现在是一名帮助文科生解决Python编程问题的助教,编程任务是[ ],样例是[ ],学生的代码是[ ],出现的问题是[ ],请修改程序中的问题”。当学生提交了出错程序的链接,赛博助教就会抓取题目描述、学生的代码以及遇到的问题,填入模板中得到提示词,再利用ChatGPT提供的接口将提示词发送给大语言模型。如此一来,得到的回答就更有针对性。这是赛博助教的第一个功能——改bug。
除此之外,马郓团队还为赛博助教设计了两个功能。其一是“加注释”。有时,大语言模型生成的代码没有注释,为了让学生能够看懂代码,添加了给生成的程序加注释的功能。
另一个功能是给学生提供多种解法。同一个问题往往有很多不同的程序解法,有些简洁明晰,有些繁琐冗长。以往,马郓会搜集学生对于同一道题目的不同做法,在课堂上做“程序评析”,帮助学生开拓思路。受到这一灵感的启发,团队在赛博助教中开发了“换种写法”的功能:对于同一个问题,学生多问几次,就可以得到不同的程序写法,有助于学有余力的同学开展自我学习。
赛博助教投入使用后,受到了学生的普遍欢迎。调查表示,超过84%的学生经常使用赛博助教,超过92%的学生遇到bug时会首选向赛博助教求助,超过80%的学生认为其对自身编程能力的提升有帮助。
在实际应用中,马郓发现赛博助教还存在一些有待改进的问题。
第一个问题是赛博助教的回答与教学进度不对齐。马郓在课程初期就向学生介绍了如何使用赛博助教,而彼时学生才刚刚入门Python,提问时会发现,赛博助教回答的内容涉及课程后期才讲授的知识,这给他们带来了困扰。此外,还需要进行学生能力的对齐,也就是教学的分层。学生提出建议:能否给赛博助教设置高手版、小白版,甚至留学生版?相比基础好的学生,基础薄弱的学生需要更详细精确的解答,留学生需要多语言支持的问答等。
第二个问题是赛博助教在理解难题方面存在困难。计算概论C涉及的编程问题有两种类型的难题:一是结构复杂、过程烦琐的难题,二是需要算法技巧的难题。面对这两种难题,赛博助教频繁出错。如何让大语言模型提升回答难题的能力,这是马郓正在探索的方向。
第三个问题是部分学生对赛博助教产生了依赖,排除故障(debug)的能力训练不够。有些学生遇到问题就直接向赛博助教提问,给出解答后自己也不思考,直接复制粘贴提交,结果考试的时候由于无法使用赛博助教,导致两眼一抹黑。马郓在赛博助教的首页写了这么一句话:A ship in the harbor is safe,but that’s not what ships are built for.(一艘船停留在港湾固然安全,但这并不是造船的初衷。)学生考完试以后,纷纷表示对这句话深有感触,意识到对赛博助教的依赖将阻碍自身能力的提升。虽说平日里,赛博助教能帮助学生解决80%的问题,但若学生自己不经过这80%的问题的“洗礼”,也将会丧失解决另外那20%的问题的能力。
大语言模型与课程结合的应用实践
除了赛博助教,马郓还在授课、作业和备课这三个教学环节上应用了大语言模型。
在授课环节,马郓安排专门课时,讲解了大语言模型的基本原理以及提高问题回答质量的提示工程(Prompt Engineering)技巧,如“给模型设置身份”“给出尽量具体的指示”“使用思维链”等。马郓告诉学生,非常欢迎他们日常多使用大语言模型来提升学习效率。
在作业环节,马郓将大语言模型和课程实践项目结合,鼓励学生使用文心一言等大语言模型进行“结对编程”,实现课程讲授内容以外的拓展。马郓甚至还鼓励学生尝试不编写任何一行代码、完全通过与大语言模型交互来完成作业,不过最终没有小组能实现这一效果,大部分小组利用大语言模型实现了一些比较新颖的功能。通过完成课程实践项目,学生就好像打开了一扇窗,他们发现,利用上课所学知识,结合大语言模型,就能实现一些很复杂的实用功能。同时他们也认识到,目前利用大语言模型虽然可以辅助完成部分编程工作,但解决现实问题还是存在难度,无法仅靠提问就能完成,需要很多技巧,这其中就需要人的智慧。
在备课环节,马郓利用大语言模型命制作业题、考试题,并且调整作业题目的难度分布。编程有两步,第一步是把现实问题转换成数学问题,第二步是将数学问题翻译成程序语言。题面千变万化,而题眼万变不离其宗。学生的难点在于透过题面,看到题目的本质,这需要用到思维转换能力。而大语言模型恰恰适合设计贴合现实或学生本专业故事背景的题目,节省了老师的时间。比如期中考试前,有一只猴子跑到北大校园里到处逛,引发了全校师生的热烈讨论,于是马郓就用大语言模型以此为背景编制了一道二维数组的题目,同学们表示十分有趣。
终身学习是高校师生的必修课
在马郓看来,虽然ChatGPT的横空出世令人眼前一亮,但本质上它仍然是一种工具。技术的演进越来越快,过去,新技术的诞生需要十数年;而现在,也许几年间甚至几个月就会产生令世界翻天覆地的新技术。就目前而言,ChatGPT还没有具备拓展人类知识边界的能力,也许在未来,人工智能会发展出这样的能力。而在当下,知识边界的拓展依然需要人类智慧的力量。对于教师和学生而言,终身学习“永远在路上”。
正因如此,马郓认为大语言模型对“计算概论C”课程提出了更高的要求。
首先,要教给学生与人工智能相关的知识,以及让学生意识到人类思想的价值。要使学生了解人工智能的机理原理、运作方法、思维方式,并让他们具备应用人工智能解决日常问题的能力。另一方面,也应该让学生认识到,如果直接将问题丢给人工智能,难以得到高质量的答案,需要将问题一步步拆解,在这个过程中,就需要学生对学科进行整体把握,对事物有宏观和微观认知。马郓想让学生认识到:一些基础性的、重复性的内容,人类可以交给人工智能代劳;人类要做更高级的事情,更能体现人的思想高度、创造性、需要人与人之间联结的事情。
其次,还要教给学生如何人机共生、人机协同。要学会思考,如何更好地与人工智能合作,提高工作效率。换句话说,应该教给学生如何从0到1,再利用人工智能更快地从1到100。人工智能确实能提高效率,但本质的内容还是需要人掌握了之后,再运用技巧,借助人工智能实现从1到100的飞跃。
人工智能时代,对学生也提出了许多挑战。马郓认为,在未来,对学习的要求将越来越高,学生要永远以开放的心态接受新技术,不要守旧。要拥有掌握事物本质的能力,以全局的视野和开阔的思维看待问题。从历史的角度而言,每当有新技术产生时,都不会完全取代人。因此,学生要积极拥抱新技术,增强自身内核,让自身的思想发挥价值。
未来的探索
马郓所在的北京大学人工智能研究院成立于2019年,是学科交叉的校级平台。研究院汇集了各个院系的老师,设立了许多交叉研究中心,各学科都可以在这里探讨如何应用人工智能解决本学科的问题,以及如何利用各个学科的知识建设更好的人工智能。例如,哲学系的老师会探究智能的起源及其背后的哲学原理,法学院的老师会关注如何从法律、伦理方面对人工智能进行约束,生命科学学院的老师则会从生理角度剖析人脑智能的机理,从而启发人工智能的设计。北京大学的学科门类非常齐全,通过学科交叉的优势,激发了老师们产生很多新的想法,服务不同学科的探索。马郓目前就与北京大学外国语学院、新闻与传播学院、心理与认知科学学院的老师们合作,开展了多项交叉课题。
在“计算概论C”的课程探索方面,目前,赛博助教只是针对学生的作业进行答疑。马郓和助教们正在拓展其功能,将答疑范围从作业扩展到课件和教材,并开发更多答疑以外的实用功能。马郓表示,在2024年的教学中,也会更多向人工智能板块倾斜,不断探索人工智能时代的教学改革。
来源:《中国教育网络》2024年2-3月合刊
撰文:陈茜