不到 24 小時,Star 量突破 1400。
最近,有很多人在為 AI 代替自己的工作而擔憂。
上個月火遍 AI 圈的「首位 AI 程式設計師」Devin,利用大模型能力已經掌握了全棧技能,僅需要人類給出自然語言指令,就可以自動完成複雜的程式碼任務。
Devin 展示的能力非常驚豔,不過這款工具出自走閉源路線的創業公司,現在只有一小部分獲得了內測名額的人才能使用。
本週二,來自普林斯頓大學 NLP 組的研究人員放出了 SWE-agent —— 一個開源版 AI 程式設計師,不到一天就獲得了上千的 GitHub Star 量。
SWE-agent 是一款用於自主解決 GitHub 儲存庫中問題的新系統。它在 SWE-bench 上獲得了與 Devin 相似的準確度,平均耗時為 93 秒。
專案網站:https://swe-agent.com/
GitHub:https://github.com/princeton-nlp/SWE-agent
該專案的作者 John Yang 表示,相關論文的預印版也將在 4 月 10 號上傳。
在完整的 SWE-bench 測試集上,SWE-agent 解決了 12.29% 的問題,實現了 SOTA 效能。
為了提供開發過程中的自動化,SWE-agent 透過與專用終端互動來工作,它可以開啟、搜尋檔案內容,使用自動語法檢查、編輯特定行,也可以編寫並執行測試。
該專案的開發者精心設計了 UI 介面,並在 GitHub 上進行了介紹。
智慧體 - 計算機介面 (ACI)
研究團隊設計了簡單的以大模型(LM)為中心的命令和反饋格式,使大模型能夠更方便地瀏覽儲存庫、檢視、編輯和執行程式碼檔案,這被稱為智慧體 - 計算機介面 (ACI)。研究團隊還構建了 SWE 智慧體儲存庫,以便輕鬆迭代儲存庫級編碼智慧體的 ACI 設計。
就像語言模型需要良好的提示工程(prompt engineering)一樣,良好的 ACI 設計在使用智慧體時會帶來更好的結果。沒有經過良好調整的 ACI 的基線智慧體的表現比 SWE-agent 差得多。
SWE-agent 包含研究團隊在智慧體 - 計算機介面設計過程中發現的非常有用的功能,包括:
1. 新增一個在發出編輯命令時執行的 linter,如果程式碼語法不正確,則不會讓編輯命令透過。
2. 為智慧體提供一個專門構建的檔案檢視器。研究團隊發現此檔案檢視器在每輪僅顯示 100 行時效果最佳,並且該檔案編輯器具有上下滾動以及在檔案中執行搜尋的命令。
3. 為智慧體提供專門構建的全目錄字串搜尋命令。研究團隊發現該工具簡潔地列出匹配項非常重要 —— 只需列出至少有一個匹配項的每個檔案。該研究表明,向模型顯示有關每個匹配的更多上下文對於模型來說太混亂了。
4. 當命令的輸出為空時,返回一條訊息:「您的命令已成功執行,但未產生任何輸出」。
未來發布的論文將詳述更多資訊。
安裝與使用
要使用 SWE-agent,首先要設定好如下條件:
1. 安裝 Docker,並在本地啟動 Docker;
2. 安裝 Miniconda,並使用 conda env create -fenvironment.yml 建立 swe-agent 環境;
3. 使用 conda activate swe-agent 啟用;
4. 執行 ./setup.sh 建立 swe-agent docker 映象;
5. 在此儲存庫的根目錄下建立一個 keys.cfg 檔案並填寫以下內容:
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