整理 | 屠敏
出品 | CSDN(ID:CSDNnews)
继开发者用 GPT-4 制造了一款“贾维斯”代码助手之后,另一位程序员小哥 BioBootloader 再次整活,他利用 Python 和 GPT-4 创建了一个名为 wolverine(金刚狼)的应用程序,它可以让代码程序自己不断 Debug,为 Python 程序提供“再生治疗能力”。
简单来看,这里的 wolverine程序可让代码脚本就像漫威旗下的英雄人物金刚狼一样,可自愈,保证正常运行。
当前,wolverine 代码已在 GitHub 上开源:https://github.com/biobootloader/wolverine,且短短时间便收获了 2.1k 个 Star。
01
Python 代码神器——「金刚狼」
BioBootloader 在 Twitter 上分享了一条 demo 视频,并写道,“用它运行你的脚本,当它们有问题时,GPT-4 会自动编辑程序并解释出了什么问题。即使程序有很多错误,它也会反复重新运行,直到一切都修复了。”
已关注
关注
重播分享赞
关闭
观看更多
更多
正在加载
正在加载
退出全屏
视频加载失败,请刷新页面再试
刷新
视频详情
在「金刚狼」的演示视频中,BioBootloader 展示了一个并排的窗口,左侧是 Python 代码,右侧是终端中的「金刚狼」运行结果。
正如视频中呈现的那样,BioBootloader 加载了一个自定义计算器脚本,然后他故意埋了一些 Bug 在代码中,然后让「金刚狼」程序去运行。
为了直观地看到区别,我们先分享一下正确的代码片段:
随后,BioBootloader 故意将返回值“result”改为“res”,并删除了“subtract_numbers(a, b)”这个函数。
毋庸置疑,单独运行这个脚本肯定会报错,当用 Wolverine 会有什么样的结果?
Wolverine 是一个封装器,它可以运行有问题的脚本,捕捉任何错误信息,然后将这些错误发送给 GPT-4,询问它认为代码出了什么问题,并开始去修复程序。
在演示中,GPT-4 正确地识别了这两个错误(尽管其中只有一个直接导致了程序崩溃),但这还不是全部!
Wolverine 实际上是将建议的修改应用到代码中,并重新运行它。
这一次仍然有一个错误......因为 GPT-4 之前的修改包括一个超出范围的返回语句。
紧接着,Wolverine 再次咨询了 GPT-4,创建并格式化了一个修改,应用它,并重新运行修改后的脚本。这一次,脚本成功运行,Wolverine 的工作完成了。
02
未来计划
像 GPT-4 这样的 LLM(大型语言模型)是用自然语言 "编程 "的,而这些指令被称为提示词。金刚狼所做的事情之所以能够成功有很大一部分要归功于精心编写的提示。
不过,「金刚狼」当前也有很强的局限性,譬如它只适用于 Python 语言。设置方法如下:
将你的 OpenAI API 密钥添加到 -warning!默认情况下使用 GPT-4,可能会多次重复调用 api.openai_key.txt。也需要注意的是,GPT-4 目前仅供 ChatGPT Plus 订阅者使用,并以 API 形式提供给 Beta 测试人员。所以想要尝试这款「金刚狼」程序,也需要拿到 OpenAI 的 GPT-4 的入门钥匙。
BioBootloader 表示,这只是他在几小时内做出的一个快速原型,未来也有计划拓展到 Python 以外的语言,同时欢迎大家为一些拓展做贡献(https://github.com/biobootloader/wolverine),如添加标记以定制使用方法,例如在运行改变的代码前要求用户确认;对 GPT 响应的编辑格式进行进一步的迭代;针对一套有问题的文件的示例,可以在上面测试提示,以确保可靠性和衡量改进;多个文件/代码库:向 GPT 发送堆栈跟踪中出现的所有文件;对大文件的优雅处理等等。
03
GPT-4 带来的工具思考与未来
虽然「金刚狼」目前还只是一个原始原型,但是它的理念也引发了很多的思考,倘若未来所有的应用程序都能够修复自己的 Bug,甚至是提前对可能出现的意外错误做好部署,那么无疑真正意义上实现了自动化。
不过,对此也有一些网友表示了担忧:
Steve L:
确实非常酷,但人工智能的末日时钟又提前了一分钟。
Michael:
我总是发现最难修复的 Bug 总是会出现在工作正常的时候。这似乎只会让你的 Bug 从长远来看更难发现,你的代码更难读(因为 Wolverine 为你写的)。
想象一下,如果我有一个函数可以将一个角度最多移动±𝜋 弧度,而我不小心输入了一个超过 𝜋 的度数值。这个脚本可以通过剪切任何高于 𝜋 的值来解决这个问题,这可以解决错误,但不能解决根本问题。
也就是说,一个负责任的开发者应该把它作为一个工具来使用,以便更容易地诊断错误,并把这个建议作为一个指南,而不是仅仅相信它是自动更正。
Robbie:
作为一种实现方式,这是非常聪明的,但这似乎只是一个鼓励不良行为的工具,"哦,一个错误,我把它留给 AI 来解决"。我认为最好是自己理解和调试你的代码,并且使用一种编译语言,这样让这些错误都会在编译时被发现,而不是在运行时随机出现的。
为此,你觉得让 AI 工具实现代码自修复是不是一个好的方向呢?
参考:
https://hackaday.com/2023/04/09/wolverine-gives-your-python-s-the-ability-to-self-heal/