作为一名数据科学和数学老师,我实际上并不介意我的学生使用LLM,例如Chatgpt这样的LLM,只要它被用来帮助他们学习而不是取代学习过程。 Caltech的应用程序文书指南启发了我制定用于编程和机器学习课程的AI使用政策:
在CalTech应用程序文档中使用AI的不道德方法是什么?
CalTech应用程序文档中的道德AI使用方法是什么?
如果您仍然想知道自己是否正在使用AI是道德的,请问自己:要求值得信赖的成年人做同样的事情是否合适?例如,如果您要求老师帮助您纠正语法并拼写错误?当然!但是,让老师为您编写文档草案,然后在您进行一些更改后将其提交?绝对不可能。
话虽如此,我最近收到了一些代码作业,我看到这些作业是完全由AI撰写的,所以我整理了一些“ AI标志”。当然,人类和人工智能编写的代码变得越来越难以区分。但是Chatgpt/Claude/DeepSeek的生成代码仍然具有一些共同的特征,乍一看似乎是错误的。
评论
我希望所有学生都能像chatgpt一样写下这样的详细说明?当然希望。但是他们会吗?绝对不是。
评论过于详细,或者样式是使用AI的信号。
例如,在DeepSeek生成的代码中,您将看到以三个引号写入的docstring作为注释而不是使用标准#,尽管该docstring并未指定参数或返回值:
def find_squares_adding_to_zero(mod):
“”“找到两个非零数字a和b,使得a^2 + b^2 = 0 mod n。
对于范围(1,mod):#从1开始排除a = 0
对于范围内的b(a,mod):#从a开始以避免冗余对
if(a ** 2 + b ** 2)%mod == 0:
返回(A,B)
没有返回
我认为用来评论一行代码的方式非常不自然,尤其是在我的班级中,我显然教您如何使用#编写单线评论,而本段并不是一个严重的docstring。
评论也可以由AI撰写。除非我为许多人编写代码,否则我不会找到像“◦”这样的符号来我自己写评论。我敢说我的学生可能也不会那样做。
lambda表达式
不要误会我的意思 – 我喜欢lambda的表情,并认为它们在Python中是独特而有价值的功能。我认为lambda用于编写简洁和临时的小函数,并且将它们作为参数传递到函数(例如map(),filter(),filter()或sorted()是适当的。使用良好时,它非常引人注目。但是,一旦lambda表达被滥用,在错误的位置使用或在提到它之前随机使用,那就是一个警告。
Lambda的使用不当,这意味着设计不够严重,或者它过多地依赖于AI。
例如,如果我在系统地谈论Lambda表达之前收到了这样的家庭作业代码,那么我绝对会怀疑它是由Chatgpt写的:
从函数引起的lru_cache
fib =(lambda f :( lambda x:f(f,x)))(lambda self,n:
n如果n <2 else self(self,n-1) +自我(self,n-2))
#生成前10个斐波那契号
fib_sequence = [fib(n)在范围内(10)]
打印(fib_ sequence)
这种写作方法根本不适合使用lambda,而且太复杂了。它不能由第一次学习Python的学生写。
使用图书馆
在哪里导入库
有时,LLM会将导入到一个奇怪的位置(不在文件的顶部)。
我只看过几次这种情况,但是如果您向学生强调,应将进口的学生放在一开始或集中,那么这篇文章是可疑的。
使用了什么库:
使用某个库来完成不需要它的任务,尤其是以前未提及的不受欢迎的库,这也可能是AI写作的标志。
让我们看一下上述lambda代码:
从函数引起的lru_cache
fib =(lambda f :( lambda x:f(f,x)))(lambda self,n:
n如果n <2 else self(self,n-1) +自我(self,n-2))
#生成前10个斐波那契号
fib_sequence = [fib(n)在范围内(10)]
打印(fib_ sequence)
如果您尚未谈论Functools库,那么学生可能会使用Google或LLM找到。使用这些工具探索库肯定可以,但也可能表明实现方法是由AI生成的。
不一致的命名和格式
这可以一目了然。如果作业需要使用特定名称命名的字段或变量,则AI所写的代码通常会给出更通用和“解释性”的名称,但这并不自然。例如,以下段落查找所有小于n的代码。普通学生可能不会那么整齐地写作,并且具有这样的“特殊”变量名称:
def sieve_of_eratosthenes(极限):
“”“返回所有质数列表少于给定限制的列表。”“”
如果限制
本网站每日更新互联网创业教程,一年会员只需98,全站资源免费下载点击查看会员权益