完全自主的編碼代理,可以解決 GitHub 問題。 它在編碼基準測試中的得分幾乎與 Devin 一樣高。 這是完整的評論和教程。
SWE-agent 將 LM(例如 GPT-4)轉(zhuǎn)變?yōu)檐浖こ檀?,可以修復真?GitHub 存儲庫中的錯誤和問題。
?? 在完整的 SWE-bench 測試集上,SWE-agent 修復了 12.29% 的問題,這是完整測試集上最新的結(jié)果。
我們通過設計簡單的以 LM 為中心的命令和專門構(gòu)建的輸入和輸出格式來實現(xiàn)這些結(jié)果,使 LM 更容易瀏覽存儲庫、查看、編輯和執(zhí)行代碼文件。 我們將此稱為代理計算機接口 (ACI),并構(gòu)建 SWE 代理存儲庫,以便輕松迭代存儲庫級編碼代理的 ACI 設計。
Agent-Computer Interface 代理計算機接口 (ACI)
我們通過設計簡單的以 LM 為中心的命令和反饋格式來實現(xiàn)這些結(jié)果,使 LM 更容易瀏覽存儲庫、查看、編輯和執(zhí)行代碼文件。 我們將其稱為代理計算機接口 (ACI),并構(gòu)建 SWE 代理存儲庫,以便輕松迭代存儲庫級編碼代理的 ACI 設計。
就像典型的語言模型需要良好的提示工程一樣,良好的 ACI 設計在使用代理時會帶來更好的結(jié)果。 正如我們在論文中所示,沒有經(jīng)過良好調(diào)整的 ACI 的基線代理的表現(xiàn)比 SWE 代理差得多。
SWE-agent 包含我們發(fā)現(xiàn)在代理-計算機界面設計過程中非常有用的功能:
- 我們添加了一個在發(fā)出編輯命令時運行的 linter,并且如果代碼語法不正確,則不會讓編輯命令通過。
- 我們?yōu)榇硖峁┝艘粋€專門構(gòu)建的文件查看器,而不僅僅是 cat 文件。 我們發(fā)現(xiàn)此文件查看器在每輪僅顯示 100 行時效果最佳。 我們構(gòu)建的文件編輯器具有用于上下滾動以及在文件中執(zhí)行搜索的命令。
- 我們?yōu)榇硖峁┝藢iT構(gòu)建的全目錄字符串搜索命令。 我們發(fā)現(xiàn)該工具簡潔地列出匹配項非常重要 - 我們只需列出至少有一個匹配項的每個文件。 事實證明,向模型顯示有關每場比賽的更多上下文對于模型來說太混亂了。
- 當命令的輸出為空時,我們會返回一條消息,指出“您的命令已成功運行,但未產(chǎn)生任何輸出”。
請閱讀我們的論文了解更多詳細信息。
@misc{yang2024sweagent,
title={SWE-agent: Agent Computer Interfaces Enable Software Engineering Language Models},
author={John Yang and Carlos E. Jimenez and Alexander Wettig and Shunyu Yao and Karthik Narasimhan and Ofir Press},
year={2024},
}
Setup 設置
- 安裝 Docker,然后在本地啟動 Docker。
? - 安裝 Miniconda,使用
?創(chuàng)建 swe-agent 環(huán)境 使用?conda env create -fenvironment.yml
? - 使用
激活。conda activate swe-agent
? - 運行
創(chuàng)建 swe-agent docker 鏡像。./setup.sh
? - 在此存儲庫的根目錄下創(chuàng)建一個keys.cfg 文件并填寫以下內(nèi)容:
GITHUB_TOKEN: 'GitHub Token Here (required)' OPENAI_API_KEY: 'OpenAI API Key Here if using OpenAI Model (optional)' ANTHROPIC_API_KEY: 'Anthropic API Key Here if using Anthropic Model (optional)' TOGETHER_API_KEY: 'Together API Key Here if using Together Model (optional)' AZURE_OPENAI_API_KEY: 'Azure OpenAI API Key Here if using Azure OpenAI Model (optional)' AZURE_OPENAI_ENDPOINT: 'Azure OpenAI Endpoint Here if using Azure OpenAI Model (optional)' AZURE_OPENAI_DEPLOYMENT: 'Azure OpenAI Deployment Here if using Azure OpenAI Model (optional)' AZURE_OPENAI_API_VERSION: 'Azure OpenAI API Version Here if using Azure OpenAI Model (optional)'
請參閱以下鏈接,獲取有關獲取 Anthropic、OpenAI 和 Github 令牌的教程。
Usage?用途
SWE-agent 管道有兩個步驟。 第一個 SWE 代理接受輸入 GitHub 問題并返回嘗試修復它的拉取請求。 我們稱該步驟為推理。 第二步(目前僅適用于 SWE-bench 基準測試中的問題)是評估拉取請求以驗證它確實解決了問題。
注意:目前,少數(shù)存儲庫存在已知問題,無法為arm64 / aarch64 架構(gòu)計算機正確安裝。 我們正在努力修復,但如果您想在整個 SWE-bench 上運行和評估,最簡單的方法是使用 x86 機器。
Inference 推論
對任何 GitHub 問題進行推理:使用此腳本,您可以在任何 GitHub 問題上運行 SWE-agent!
python run.py --model_name gpt4 \
--data_path https://github.com/pvlib/pvlib-python/issues/1603 \
--config_file config/default_from_url.yaml
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
- 請參閱 script/?文件夾以獲取其他有用的腳本和詳細信息。
- 有關如何定義自己的配置的詳細信息,請參閱?config/?文件夾!
- 有關基于配置的工作流程背后的邏輯的詳細信息,請參閱?sweagent/agent/ 文件夾。
- 有關 SWEEnv 環(huán)境(接口 + 實現(xiàn))的詳細信息,請參閱 sweagent/environment/?文件夾。
- 有關 run.py 輸出的詳細信息,請參閱 trajectories/文件夾。
Evaluation 評估
此步驟僅適用于 SWE 基準集中的問題。 要評估生成的拉取請求:
cd evaluation/
./run_eval.sh <predictions_path>
將 <predictions_path> 替換為模型預測的路徑,該路徑應從推理步驟生成。 <predictions_path> 參數(shù)應類似于 ../trajectories/<username>/<model>-<dataset>-<hyperparams>/all_preds.jsonl文章來源:http://www.zghlxwxcb.cn/news/detail-858477.html
有關評估如何工作的詳細信息,請參見評估/文件夾文章來源地址http://www.zghlxwxcb.cn/news/detail-858477.html
到了這里,關于SWE-Agent 這是針對本地模型的新人工智能一個開源項目的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!