開源版AI程序員來了:GPT-4加持,能力比肩Devin,一天1.4k Star
最近,有很多人在為 AI 代替自己的工作而擔憂。
上個月火遍 AI 圈的「首位 AI 程序員」Devin,利用大模型能力已經(jīng)掌握了全棧技能,僅需要人類給出自然語言指令,就可以自動完成復雜的代碼任務。
Devin 展示的能力非常驚艷,不過這款工具出自走閉源路線的創(chuàng)業(yè)公司,現(xiàn)在只有一小部分獲得了內(nèi)測名額的人才能使用。
本周二,來自普林斯頓大學 NLP 組的研究人員放出了 SWE-agent —— 一個開源版 AI 程序員,不到一天就獲得了上千的 GitHub Star 量。
SWE-agent 是一款用于自主解決 GitHub 存儲庫中問題的新系統(tǒng)。它在 SWE-bench 上獲得了與 Devin 相似的準確度,平均耗時為 93 秒。
- 項目網(wǎng)站:https://swe-agent.com/
- GitHub:https://github.com/princeton-nlp/SWE-agent?
該項目的作者 John Yang 表示,相關(guān)論文的預印版也將在 4 月 10 號上傳。
從原理上看,SWE-agent 通過將大模型(例如 GPT-4)轉(zhuǎn)變?yōu)檐浖こ讨悄荏w,可以修復真實 GitHub 存儲庫中的錯誤和問題。
在完整的 SWE-bench 測試集上,SWE-agent 解決了 12.29% 的問題,實現(xiàn)了 SOTA 性能。
為了提供開發(fā)過程中的自動化,SWE-agent 通過與專用終端交互來工作,它可以打開、搜索文件內(nèi)容,使用自動語法檢查、編輯特定行,也可以編寫并執(zhí)行測試。
該項目的開發(fā)者精心設(shè)計了 UI 界面,并在 GitHub 上進行了介紹。
智能體 - 計算機接口 (ACI)
研究團隊設(shè)計了簡單的以大模型(LM)為中心的命令和反饋格式,使大模型能夠更方便地瀏覽存儲庫、查看、編輯和執(zhí)行代碼文件,這被稱為智能體 - 計算機接口 (ACI)。研究團隊還構(gòu)建了 SWE 智能體存儲庫,以便輕松迭代存儲庫級編碼智能體的 ACI 設(shè)計。
就像語言模型需要良好的提示工程(prompt engineering)一樣,良好的 ACI 設(shè)計在使用智能體時會帶來更好的結(jié)果。沒有經(jīng)過良好調(diào)整的 ACI 的基線智能體的表現(xiàn)比 SWE-agent 差得多。
SWE-agent 包含研究團隊在智能體 - 計算機接口設(shè)計過程中發(fā)現(xiàn)的非常有用的功能,包括:
1. 添加一個在發(fā)出編輯命令時運行的 linter,如果代碼語法不正確,則不會讓編輯命令通過。
2. 為智能體提供一個專門構(gòu)建的文件查看器。研究團隊發(fā)現(xiàn)此文件查看器在每輪僅顯示 100 行時效果最佳,并且該文件編輯器具有上下滾動以及在文件中執(zhí)行搜索的命令。
3. 為智能體提供專門構(gòu)建的全目錄字符串搜索命令。研究團隊發(fā)現(xiàn)該工具簡潔地列出匹配項非常重要 —— 只需列出至少有一個匹配項的每個文件。該研究表明,向模型顯示有關(guān)每個匹配的更多上下文對于模型來說太混亂了。
4. 當命令的輸出為空時,返回一條消息:「您的命令已成功運行,但未產(chǎn)生任何輸出」。
未來發(fā)布的論文將詳述更多信息。
安裝與使用
要使用 SWE-agent,首先要設(shè)置好如下條件:
1. 安裝 Docker,并在本地啟動 Docker;
2. 安裝 Miniconda,并使用 conda env create -fenvironment.yml 創(chuàng)建 swe-agent 環(huán)境;
3. 使用 conda activate swe-agent 激活;
4. 運行 ./setup.sh 創(chuàng)建 swe-agent docker 鏡像;
5. 在此存儲庫的根目錄下創(chuàng)建一個 keys.cfg 文件并填寫以下內(nèi)容:
OPENAI_API_KEY: 'OpenAI API Key Here if using OpenAI Model (optional)'
ANTHROPIC_API_KEY: 'Anthropic API Key Here if using Anthropic Model (optional)'
GITHUB_TOKEN: 'GitHub Token Here (required)'
SWE-agent pipeline 包含兩個步驟:
- 第一步:SWE-agent 接收輸入的 GitHub 問題,并返回嘗試修復它的拉取請求(pull request);
- 第二步:評估拉取請求以驗證它確實解決了問題(目前僅適用于 SWE-bench 基準測試中的問題)。
如果想在整個 SWE-bench 上運行和評估,最簡單的方法是使用 x86 機器。
python run.py --model_name gpt4 \
--data_path https://github.com/pvlib/pvlib-python/issues/1603 --config_file config/default_from_url.yaml
python run.py --model_name gpt4 \
--per_instance_cost_limit 2.00 \
--config_file ./config/default.yaml
如果想運行 SWE-bench 中的單個問題,可以使用 --instance_filter:
python run.py --model_name gpt4 \
--instance_filter marshmallow-code__marshmallow-1359
本文轉(zhuǎn)自 機器之心 ,作者:機器之心
