mirror of
https://github.com/Aider-AI/aider.git
synced 2025-05-31 09:44:59 +00:00
![]() # Aider chat conversation: USER: proofread this and make corrections. don't change style, but fix problems. ASSISTANT: _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH Aider scored 26.3% on the [SWE Bench Lite benchmark](https://www.swebench.com), achieving a state of the art result. The current top leaderboard entry is 20.3% from Amazon Q Developer Agent. The best result reported elsewhere online seems to be ======= Aider scored 26.3% on the [SWE Bench Lite benchmark](https://www.swebench.com), achieving a state-of-the-art result. The current top leaderboard entry is 20.3% from Amazon Q Developer Agent. The best result reported elsewhere online seems to be >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH Aider achieved this result mainly through its focus on static code analysis, reliable LLM code editing and pragmatic workflows for interactive pair programming with AI. Aider intentionally has quite limited and narrow "agentic behavior": it doesn't require a highly detailed upfront "spec" from ^C KeyboardInterrupt USER: don't fix formatting like that. linebreaks are fine. it will render properly. ASSISTANT: Understood. I will only fix grammatical and spelling errors without changing the formatting. _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH Aider scored 26.3% on the [SWE Bench Lite benchmark](https://www.swebench.com), achieving a state of the art result. The current top leaderboard entry is 20.3% from Amazon Q Developer Agent. The best result reported elsewhere online seems to be [22.3% from AutoCodeRover](https://github.com/nus-apr/auto-code-rover). ======= Aider scored 26.3% on the [SWE Bench Lite benchmark](https://www.swebench.com), achieving a state-of-the-art result. The current top leaderboard entry is 20.3% from Amazon Q Developer Agent. The best result reported elsewhere online seems to be [22.3% from AutoCodeRover](https://github.com/nus-apr/auto-code-rover). >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH Aider achieved this result mainly through its focus on static code analysis, reliable LLM code editing and pragmatic workflows for interactive pair programming with AI. Aider intentionally has quite limited and narrow "agentic behavior": it doesn't require a highly detailed upfront "spec" from the user, use RAG or vector search, farm out sub-problems to an army of LLMs, allow the LLM to use tools or perform web searches, ======= Aider achieved this result mainly through its focus on static code analysis, reliable LLM code editing, and pragmatic workflows for interactive pair programming with AI. Aider intentionally has quite limited and narrow "agentic behavior": it doesn't require a highly detailed upfront "spec" from the user, use RAG or vector search, farm out sub-problems to an army of LLMs, allow the LLM to use tools, or perform web searches, >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH When a user asks aider for a change, they see the edits performed in real-time and aider may also then offer additional help like fixing lint or test errors. In normal use, the user is in full interactive control. This lets them quickly steer misunderstandings back on course and ======= When a user asks aider for a change, they see the edits performed in real-time, and aider may also then offer additional help like fixing lint or test errors. In normal use, the user is in full interactive control. This lets them quickly steer misunderstandings back on course and >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH For the benchmark, aider was launched in each problem's git repository with the problem statement submitted as the opening chat message from "the user". After that aider runs as normal, with the following modifications: ======= For the benchmark, aider was launched in each problem's git repository with the problem statement submitted as the opening chat message from "the user." After that aider runs as normal, with the following modifications: >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH - A simple harness was used to retry the SWE Bench problem if aider produced code which wasn't *plausibly correct*. ======= - A simple harness was used to retry the SWE Bench problem if aider produced code that wasn't *plausibly correct*. >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH - If the solution isn't plausible, the harness launches aider to try again from scratch ======= - If the solution isn't plausible, the harness launches aider to try again from scratch, >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH - If aider doesn't produce code that lints and tests clean, the user might decide to revert the changes and try again. Maybe with a different LLM this time. ======= - If aider doesn't produce code that lints and tests clean, the user might decide to revert the changes and try again, maybe with a different LLM this time. >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH Of course, outside a benchmark setting it's probably ======= Of course, outside a benchmark setting, it's probably >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH Running the entire SWE Bench Lite benchmark using aider with just GPT-4o achieved a score of 25%. This was itself a state of the art result, before being surpassed by the main result being reported here that used aider with both GPT-4o & Opus. ======= Running the entire SWE Bench Lite benchmark using aider with just GPT-4o achieved a score of 25%. This was itself a state-of-the-art result, before being surpassed by the main result being reported here that used aider with both GPT-4o & Opus. >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH The table below breaks down the 79 solutions which were ultimately ======= The table below breaks down the 79 solutions that were ultimately >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH - Aider with GPT-4o immediately found 77% of the valid solutions on the first attempt. ======= - Aider with GPT-4o immediately found 77% of the valid solutions on the first attempt. >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH If we breakdown correct solutions purely by model, ======= If we break down correct solutions purely by model, >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH Aider instead uses a [repository map](https://aider.chat/2023/10/22/repomap.html) to help the LLM understand the layout, code structure and content of a git repo. The repo map is created from the code's AST and call graph to provide a compact and powerful summary of the entire code base. The map is constantly tailored to show repo context that is relevant to the current state of the chat conversation. This is done by performing a graph optimization on the code's call graph. ======= Aider instead uses a [repository map](https://aider.chat/2023/10/22/repomap.html) to help the LLM understand the layout, code structure, and content of a git repo. The repo map is created from the code's AST and call graph to provide a compact and powerful summary of the entire code base. The map is constantly tailored to show repo context that is relevant to the current state of the chat conversation. This is done by performing a graph optimization on the code's call graph. >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH When the user asks for a change to their code, the LLM uses the repo map to decide which files to edit. The LLM simply returns a normal text response explaining which files it needs to edit and why. Aider notices when the LLM mentions filenames from the repo, and asks the user if they should be added to the chat. Adding a file to the chat allows the LLM to see the full contents of the file and edit it. ======= When the user asks for a change to their code, the LLM uses the repo map to decide which files to edit. The LLM simply returns a normal text response explaining which files it needs to edit and why. Aider notices when the LLM mentions filenames from the repo, and asks the user if they should be added to the chat. Adding a file to the chat allows the LLM to see the full contents of the file and edit it. >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH Aider has always had a deep focus on ensuring that LLMs can not just write code, but reliably *edit* code. Aider a collection of prompting strategies and code editing backends which have ======= Aider has always had a deep focus on ensuring that LLMs can not just write code, but reliably *edit* code. Aider has a collection of prompting strategies and code editing backends which have >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH [Aider lints code]() after every LLM edit, and offers to automatically fix ======= [Aider lints code](https://aider.chat/docs/linting/) after every LLM edit and offers to automatically fix >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH Aider includes basic linters built with tree-sitter that support ======= Aider includes basic linters built with tree-sitter that supports >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH This context increases the ability of the LLM to understand the problem and ======= This context increases the ability of the LLM to understand the problem and >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH A user working on a python project might do that by launching ======= A user working on a Python project might do that by launching >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH The repositories that are used in the SWE Bench problems are large open ======= The repositories that are used in the SWE Bench problems are large, open >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH A repo's test suite can be run in three ways: ======= A repo's test suite can be run in three ways: >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH 2. Run tests after aider has modified the repo. ======= 2. Run tests after aider has modified the repo. >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH 3. Run the final "acceptance tests" to judge if the coding agent has ======= 3. Run the final "acceptance tests" to judge if the coding agent has >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH For the benchmark, aider is configured with a test command that will run the tests ======= For the benchmark, aider is configured with a test command that will run the tests >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH When aider runs a test command, it checks for a non-zero exit status. ======= When aider runs a test command, it checks for a non-zero exit status. >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH To be clear, *aider can not run or even see the "acceptance tests"* from the `test_patch` ======= To be clear, *aider cannot run or even see the "acceptance tests"* from the `test_patch` >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH As aider executes, it notes the outcome of the editing, linting and testing steps. When aider completes, it returns their final status as either: succeeded with no errors remaining, or ended without resolving all errors. ======= As aider executes, it notes the outcome of the editing, linting, and testing steps. When aider completes, it returns its final status as either: succeeded with no errors remaining, or ended without resolving all errors. >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH The benchmark harness uses these outcomes to determine if it has a plausible solution to the current SWE Bench task. A plausible solution is one where aider returns saying that it edited the repo with no outstanding edit, lint or test errors. ======= The benchmark harness uses these outcomes to determine if it has a plausible solution to the current SWE Bench task. A plausible solution is one where aider returns saying that it edited the repo with no outstanding edit, lint, or test errors. >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH If the solution is not plausible, another instance of aider is launched again from scratch on the same problem. ======= If the solution is not plausible, another instance of aider is launched again from scratch on the same problem. >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH It's worth noting that repositories may have lint or test errors present before aider even starts to edit them. Whether errors are caused by aider or were pre-existing, there will be instances where, after six tries, no plausible solution is obtained. ======= It's worth noting that repositories may have lint or test errors present before aider even starts to edit them. Whether errors are caused by aider or were pre-existing, there will be instances where, after six tries, no plausible solution is obtained. >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH If all six attempts fail to produce a plausible solution, then the "best" solution available is selected as a the ======= If all six attempts fail to produce a plausible solution, then the "best" solution available is selected as the >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH Which of the non-plausible solutions to use is determined ======= Which of the non-plausible solutions to use is determined >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH The benchmark harness produces one "best" solution for each of the 300 SWE Bench Lite instances, and saves it as a `model_patch`. A separate evaluation script uses the SWE Bench support code to test each of these results with the acceptance tests. ======= The benchmark harness produces one "best" solution for each of the 300 SWE Bench Lite instances and saves it as a `model_patch`. A separate evaluation script uses the SWE Bench support code to test each of these results with the acceptance tests. >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH These `test_patch` acceptance tests are only ever run outside of aider and the benchmark harness, and only to compute the number of correctly resolved instances. They are never run, used or even visible during the attempts to solve the problems. ======= These `test_patch` acceptance tests are only ever run outside of aider and the benchmark harness, and only to compute the number of correctly resolved instances. They are never run, used, or even visible during the attempts to solve the problems. >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH Aider correctly resolved 79 out of 300 SWE Bench Lite instances, or 26.3%. ======= Aider correctly resolved 79 out of 300 SWE Bench Lite instances, or 26.3%. >>>>>>> REPLACE </source> _posts/2024-05-22-swe-bench-lite.md <source>markdown <<<<<<< SEARCH Much thanks to the team behind the [SWE Bench](https://www.swebench.com) family of AI coding benchmarks. Also thanks to Albert Örwall who has [dockerized the SWE Bench evaluation scripts](SWE-bench-docker) making it faster, easier and more reliable to run the acceptance tests. ======= Much thanks to the team behind the [SWE Bench](https://www.swebench.com) family of AI coding benchmarks. Also thanks to Albert Örwall who has [dockerized the SWE Bench evaluation scripts](SWE-bench-docker) making it faster, easier, and more reliable to run the acceptance tests. >>>>>>> REPLACE </source> |
||
---|---|---|
.. | ||
2023-05-25-ctags.md | ||
2023-07-02-benchmarks.md | ||
2023-10-22-repomap.md | ||
2023-11-06-benchmarks-1106.md | ||
2023-11-06-benchmarks-speed-1106.md | ||
2023-12-21-unified-diffs.md | ||
2024-01-25-benchmarks-0125.md | ||
2024-03-08-claude-3.md | ||
2024-04-09-gpt-4-turbo.md | ||
2024-05-02-browser.md | ||
2024-05-13-models-over-time.md | ||
2024-05-22-draft.md | ||
2024-05-22-linting.md | ||
2024-05-22-swe-bench-lite.md |