開源版AI程式設計師來了:GPT-4加持,能力比肩Devin,一天1.4k Star

机器之心發表於2024-04-03
不到 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 號上傳。開源版AI程式設計師來了:GPT-4加持,能力比肩Devin,一天1.4k Star

從原理上看,SWE-agent 透過將大模型(例如 GPT-4)轉變為軟體工程智慧體,可以修復真實 GitHub 儲存庫中的錯誤和問題。

在完整的 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

相關文章