在编写程序时,无论是对于初学者还是对于专业开发人员,都会花费大量时间来调试或修复源代码错误,也就是 debug。
这个过程繁琐复杂,包括 bug 复现和 bug 定位等环节。如果有了自动化的 debug 程序,就可以显著提高编程实践的效率。
近日,有开发者打造了一款可以在几秒钟内修复并解释问题代码的 debug 神器 ——adrenaline。
试用地址:https://useadrenaline.com/
该工具由 openai codex 提供支持,codex 是 openai 与 github 联合发布的 ai 代码补全工具 github copilot 背后的技术支撑。
鉴于 codex 的补全功能是基于 gpt-3 的,所以 adrenaline 也多了一项特色 debug 功能:解释 bug。
目前,adrenaline 已经开源,github 存储库地址为:https ://github.com/shobrook/adrenaline
使用方法请注意,使用 adrenaline 的前提是,用户必须从 openai 控制台提供自己的 openai api 密钥。这是为了防止 api 滥用。
要在本地运行,需要克隆存储库并运行以下命令:
$ npm install$ npm run start-local
目前,adrenaline 支持 python、javascript、java、ruby、php、c++、c、shell 多种编程语言。
调试过程如下:adrenaline 将代码和错误信息发送到 openai 编辑与插入 api ( code-davinci-edit-001),该 api 会发回可能修复错误的代码编辑。建议的修复会像 diff 一样在线显示,带有接受、拒绝或修改每个代码更改的选项。
adrenaline 不仅会为错误提出修复建议,还会使用 gpt-3 ( text-davinci-003) 以通俗易懂的英语解释错误:
该错误消息意味着无法计算 granger 因果检验统计量,因为 var(向量自回归)模型对数据有完美的拟合。这意味着数据的可预测性太强,var 模型无法找到变量之间的任何有意义的关系。要解决此问题,您可以尝试使用不同的模型或调整 var 模型的参数。
如果代码没有引发异常,但可能仍然存在错误,adrenaline 还可以使用 openai codex 扫描代码以查找问题并提出修复建议。
作者:希望能引入 chatgpt 助手现在,adrenaline 只是一个简单的 demo,仅仅展示了 ai 驱动 debug 的可能性。但在作者的构想中,未来的 adrenaline 将会有更丰富的功能。
在项目主页,作者也介绍了有关如何改进 adrenaline 的一些想法:
1. 客户端智能(例如静态代码分析)可用于为 gpt-3 构建更好的 prompt。
2. adrenaline 不仅应该解释错误,还应该提供一个 chatgpt 风格的助手来回答有关错误的问题。
3. 创建一个执行此操作的 vscode 扩展,将消除将代码和错误消息复制粘贴到站点中的问题。
当然,chatgpt 未必是完全正确的。有人问:如何处理来自 chatgpt 的错误?
作者表示:「adrenaline 不会总是正确地纠正你的错误,但它至少可以给你一个起点。」
以上就是把代码贴进去自动找bug,这个debug神器自动修复仅需几秒,还有gpt-3在线解惑的详细内容。