華人又來炸場!一個命令工具讓GPT-4干掉Devin和RAG!Jim Fan:提示工程2.0沒必要了!
華人又來炸場了!昨天,普林斯頓的CS/NLP碩士生John Yang在Github上開源了一款堪比Devin的利器。不到一天,就在Github上斬獲了1.3k 星,異常生猛。據(jù)悉,4月10日,詳細的技術論文就會公開!
圖片
1.讓語言模型秒變編程Agent!
SWE-agent是一款用于自主解決Github存儲庫問題的新系統(tǒng),在SWE-bench上取得了與Devin相似的準確度,平均耗時只有93s,而且重要的是,開源?。?!
圖片
此外,SWE-agent 通過與專用終端交互來工作,這使得它能夠:
- 打開、滾動和搜索文件
- 使用自動語法檢查編輯特定行
- 編寫并執(zhí)行測試 這個定制的界面對于良好的性能至關重要!
2.大模型雖好,但也需要疊加Buff
要知道,目前如果只是簡單地將 LM 連接到普通的 bash 終端效果并不好。
大模型需要精心設計的代理計算機界面(類似于人類喜歡良好的 UI 設計)才能更好地發(fā)揮威力!即使強如GPT-4,良好的代理計算機設計也很重要。
例如,當大模型弄亂縮進時,SWE-agent的編輯器會阻止它并提供反饋!
另外,團隊還發(fā)現(xiàn)了一個重要的數(shù)字經驗:對于查看文件,讓 SWE-agent 一次僅查看 100 行比讓它查看 200 或 300 行要好,而且比讓它查看整個文件要好得多。所謂的“長文本”能力在這里好像不好用了。
SWE-agent團隊的厲害之處在于,他們設計了一種代理計算機交互接口(ACI),讓大模型有一個專屬的定制界面。
圖片
SWE-agent 將大模型(例如 GPT-4)轉變?yōu)檐浖こ檀恚梢孕迯驼鎸?GitHub 存儲庫中的錯誤和問題。在完整的SWE-bench測試集上,SWE-agent 解決了12.29%的問題,在完整的測試集上實現(xiàn)了最先進的性能。
圖片
3.Agent必備:代理計算機接口 (ACI)
通過設計簡單的以大模型為中心的命令和反饋格式來實現(xiàn)這些結果,使大模型更容易瀏覽存儲庫、查看、編輯和執(zhí)行代碼文件。團隊將其稱為代理計算機接口(ACI),并構建 SWE 代理存儲庫,以便輕松迭代存儲庫級編碼代理的 ACI 設計。
圖片
大家都知道,再好的語言模型,也都需要良好的提示工程。Agent也一樣,同樣需要良好的ACI設計,這樣可以帶來更好的結果。正如我們在論文中所示,沒有經過良好調整的 ACI 的基線代理的表現(xiàn)比 SWE 代理差得多。
在Agent-計算機界面設計過程中,SWE-agent 團隊總結了幾個非常有用的經驗:
第一,團隊添加了一個在發(fā)出編輯命令時運行的 linter,并且如果代碼語法不正確,則不會讓編輯命令通過。
第二,為Agent提供了一個專門構建的文件查看器,而不僅僅是cat文件。團隊發(fā)現(xiàn)此文件查看器在每輪僅顯示 100 行時效果最佳。我們構建的文件編輯器具有用于上下滾動以及在文件中執(zhí)行搜索的命令。
第三,還為Agent提供了專門構建的全目錄字符串搜索命令。團隊發(fā)現(xiàn)該工具簡潔地列出匹配項非常重要 - 我們只需列出至少有一個匹配項的每個文件。事實證明,向模型顯示有關每場比賽的更多上下文對于模型來說太混亂了。
第四,當命令的輸出為空時,我們會返回一條消息,指出“您的命令已成功運行,但未產生任何輸出”。
來看看實際演示,全程無炒作!
安裝也很簡單,Docker+Miniconda,外加一個激活命令行:conda activate swe-agent
就可以快速體驗。具體來說,運行./setup.sh以創(chuàng)建swe-agentdocker 鏡像,然后配置文件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)'
4.用法簡單:推理和評估兩個步驟
SWE-agent 管道有兩個步驟:推理和評估。非常簡單,第一步(推理)就是向SWE agent輸入GitHub問題并返回嘗試修復它的拉取請求;第二步(評估,目前僅適用于 SWE-bench 基準測試中的問題)就是評估拉取請求,看看它是否確實可以解決問題。
不管你是想跑在Github還是SWE-bench上,都會有相應的命令。
推理
對任何GitHub 問題的推理:使用此腳本,你可以在任何 GitHub 問題上運行 SWE-agent!
python run.py --model_name gpt4 \
--data_path https://github.com/pvlib/pvlib-python/issues/1603 --config_fi
SWE-bench 上的推理:在SWE-bench Lite上運行 SWE-agent并生成補丁。
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
評估
此步驟僅適用于 SWE 基準集中的問題。要評估生成的拉取請求:
cd evaluation/
./run_eval.sh <predictions_path>
5.JimFan:提示工程2.0也許沒那么重要了!
對于這一發(fā)布,英偉達高級研究經理JimFan認為,非常棒!單純靠GPT4命令行工具進行更好手動設計就可以達到媲美Devin的精確度,沒有魔法,沒有炒作。
此外,Jim認為當GPT5到來時,也許指令遵循、工具使用,長上下文會更好。也許所謂“提示工程2.0”不再那么重要了!
圖片
知識補充:
SWE Bench旨在提供一組不同的代碼庫問題,這些問題可以使用回購單元測試進行驗證。完整的SWE臺架測試拆分包括12個python存儲庫中的2294個問題提交對。
自發(fā)布以來,對于大多數(shù)在SWE工作臺上進行評估的系統(tǒng)來說,運行每個實例可能需要大量的時間和計算。官方還發(fā)現(xiàn),SWE工作臺可能是一個特別困難的基準,從長遠來看,這對評估LMs很有用,但對試圖在短期內取得進展的系統(tǒng)來說卻令人沮喪。
為了解決這些問題,SWE-bench發(fā)布了一個規(guī)范子集SWE-bench Lite。SWE-bench Lite包括SWE bench中的300個實例,這些實例經過采樣后更加獨立,重點是評估功能性錯誤修復。
參考鏈接:https://github.com/princeton-nlp/SWE-agent
本文轉載自??51CTO技術棧??
