在編寫程式時,無論是對於初學者還是對於專業開發人員,都會花費大量時間來調試或修復原始碼錯誤,也就是 Debug。
這個過程繁瑣複雜,包括 重現Bug和 Bug 定位等環節。如果有了自動化的 Debug 程式,就可以顯著提高程式設計的效率。
近日,有開發者打造了一款可以在幾秒鐘內修復並解釋問題程式碼的 Debug 神器 ——Adrenaline。
該工具由 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 的一些想法:
- 使用者端智慧(例如靜態程式碼分析)可用於為 GPT-3 構建更好的 prompt。
- Adrenaline 不僅應該解釋錯誤,還應該提供一個 ChatGPT 風格的助手來回答有關錯誤的問題。
- 創建一個執行此操作的 VSCode 外掛,將消除將程式碼和錯誤消息複製貼上到網站中的問題。
當然,ChatGPT 未必是完全正確的。有人問:如何處理來自 ChatGPT 的錯誤?
作者表示:「Adrenaline 不會總是正確地糾正你的錯誤,但它至少可以給你一個起點。」
資料來源:
加入電腦王Facebook粉絲團