AI 开年翻车事件:训练神经网络除 bug ,结果它把整个库删了……( 四 )

在具体的执行流程上,SapFix 会先给每个 bug 生成多个潜在补丁,然后从 3 个方面对补丁质量进行评定(是否存在编译的错误、程序是否还会崩溃、补丁是否引入新的冲突),在评定结束后,SapFix 会在修复版本上进行测试,结果出来后第一时间发给人工评审员进行审批。

一旦获得人工反馈,SapFix 将会执行那些经批准的补丁,并清除其他未被批准的补丁。

值得一提的是,在面对较复杂的问题时,SapFix 会从过往的修复模板集去寻找生成补丁的借鉴参考。即使没能找着合适的修复模板,它也会尝试基于突变进行修复——简单来说,就是对导致崩溃的语句的抽象语法树(AST)执行小型代码修复,调整补丁,直到找着可行的解决方案。

该工具被 Facebook 视作 AI 技术的里程碑,下一步计划让 SapFix 实现自动制止代码崩溃机制,以及让软件的反应变得更敏捷。

Yelp「删库」事件是典型的 AI 过早落实民用的例子,在技术尚未成熟的条件下,AI 在输出结果上难免要犯傻,毕竟就像这位网友所说的……

最后,祝广大程序员们都能写出没有 bug 的代码。

推荐阅读