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