diff --git a/HISTORY.md b/HISTORY.md index 6a520a8c2..fdaa14896 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,6 +1,11 @@ # Release history +### main branch + +- Improved editing performance on Jupyter Notebook `.ipynb` files. +- Work around litellm tokenizer bug for images. + ### Aider v0.50.1 - Bugfix for provider API exceptions. diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index 6372d41d6..57d30d0e4 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -1,5 +1,6 @@ #!/usr/bin/env python +import base64 import hashlib import json import locale @@ -652,9 +653,11 @@ class Coder: image_messages = [] for fname, content in self.get_abs_fnames_content(): if is_image_file(fname): + with open(fname, "rb") as image_file: + encoded_string = base64.b64encode(image_file.read()).decode("utf-8") mime_type, _ = mimetypes.guess_type(fname) if mime_type and mime_type.startswith("image/"): - image_url = f"data:{mime_type};base64,{content}" + image_url = f"data:{mime_type};base64,{encoded_string}" rel_fname = self.get_rel_fname(fname) image_messages += [ {"type": "text", "text": f"Image file: {rel_fname}"}, diff --git a/aider/website/HISTORY.md b/aider/website/HISTORY.md index 96420b06a..ca63982ef 100644 --- a/aider/website/HISTORY.md +++ b/aider/website/HISTORY.md @@ -16,6 +16,11 @@ cog.out(text) # Release history +### main branch + +- Improved editing performance on Jupyter Notebook `.ipynb` files. +- Work around litellm tokenizer bug for images. + ### Aider v0.50.1 - Bugfix for provider API exceptions. diff --git a/aider/website/_data/code-in-json.yml b/aider/website/_data/code-in-json.yml index d983aefa8..a0e6e571e 100644 --- a/aider/website/_data/code-in-json.yml +++ b/aider/website/_data/code-in-json.yml @@ -82,27 +82,6 @@ versions: 0.50.2-dev seconds_per_case: 10.5 total_cost: 1.6714 -- dirname: 2024-08-15-13-24-56--json-no-lint-claude-3.5-sonnet-func - test_cases: 133 - model: claude-3.5-sonnet - edit_format: JSON - commit_hash: bac04a2 - pass_rate_1: 53.4 - percent_cases_well_formed: 100.0 - error_outputs: 0 - num_malformed_responses: 0 - num_with_malformed_responses: 0 - user_asks: 0 - lazy_comments: 0 - syntax_errors: 0 - indentation_errors: 0 - exhausted_context_windows: 0 - test_timeouts: 1 - command: aider --model claude-3.5-sonnet - date: 2024-08-15 - versions: 0.50.2-dev - seconds_per_case: 9.7 - total_cost: 1.5980 - dirname: 2024-08-15-13-26-38--json-no-lint-deepseek-coder-whole test_cases: 133 model: deepseek-coder V2 0724 @@ -124,27 +103,6 @@ versions: 0.50.2-dev seconds_per_case: 27.9 total_cost: 0.0438 -- dirname: 2024-08-15-13-29-55--json-no-lint-deepseek-coder-func - test_cases: 133 - model: deepseek-coder V2 0724 - edit_format: JSON - commit_hash: bac04a2 - pass_rate_1: 49.6 - percent_cases_well_formed: 100.0 - error_outputs: 3 - num_malformed_responses: 0 - num_with_malformed_responses: 0 - user_asks: 0 - lazy_comments: 0 - syntax_errors: 4 - indentation_errors: 0 - exhausted_context_windows: 0 - test_timeouts: 1 - command: aider --model deepseek-coder - date: 2024-08-15 - versions: 0.50.2-dev - seconds_per_case: 20.5 - total_cost: 0.0329 - dirname: 2024-08-15-13-50-03--json-no-lint-gpt-4o-2024-08-06-whole-2 test_cases: 133 model: gpt-4o-2024-08-06 @@ -229,27 +187,6 @@ versions: 0.50.2-dev seconds_per_case: 16.5 total_cost: 1.6556 -- dirname: 2024-08-15-14-02-15--json-no-lint-claude-3.5-sonnet-func-2 - test_cases: 133 - model: claude-3.5-sonnet - edit_format: JSON - commit_hash: bac04a2 - pass_rate_1: 51.9 - percent_cases_well_formed: 100.0 - error_outputs: 1 - num_malformed_responses: 0 - num_with_malformed_responses: 0 - user_asks: 0 - lazy_comments: 0 - syntax_errors: 0 - indentation_errors: 0 - exhausted_context_windows: 0 - test_timeouts: 1 - command: aider --model claude-3.5-sonnet - date: 2024-08-15 - versions: 0.50.2-dev - seconds_per_case: 14.3 - total_cost: 1.5835 - dirname: 2024-08-15-14-06-12--json-no-lint-deepseek-coder-whole-2 test_cases: 133 model: deepseek-coder V2 0724 @@ -271,27 +208,6 @@ versions: 0.50.2-dev seconds_per_case: 25.8 total_cost: 0.0439 -- dirname: 2024-08-15-14-09-22--json-no-lint-deepseek-coder-func-2 - test_cases: 133 - model: deepseek-coder V2 0724 - edit_format: JSON - commit_hash: bac04a2 - pass_rate_1: 53.4 - percent_cases_well_formed: 100.0 - error_outputs: 5 - num_malformed_responses: 0 - num_with_malformed_responses: 0 - user_asks: 0 - lazy_comments: 0 - syntax_errors: 6 - indentation_errors: 0 - exhausted_context_windows: 0 - test_timeouts: 1 - command: aider --model deepseek-coder - date: 2024-08-15 - versions: 0.50.2-dev - seconds_per_case: 18.8 - total_cost: 0.0333 - dirname: 2024-08-15-14-11-45--json-no-lint-gpt-4o-2024-08-06-whole-3 test_cases: 133 model: gpt-4o-2024-08-06 @@ -376,27 +292,6 @@ versions: 0.50.2-dev seconds_per_case: 11.0 total_cost: 1.6555 -- dirname: 2024-08-15-14-19-19--json-no-lint-claude-3.5-sonnet-func-3 - test_cases: 133 - model: claude-3.5-sonnet - edit_format: JSON - commit_hash: bac04a2 - pass_rate_1: 51.1 - percent_cases_well_formed: 100.0 - error_outputs: 3 - num_malformed_responses: 0 - num_with_malformed_responses: 0 - user_asks: 0 - lazy_comments: 0 - syntax_errors: 0 - indentation_errors: 0 - exhausted_context_windows: 0 - test_timeouts: 1 - command: aider --model claude-3.5-sonnet - date: 2024-08-15 - versions: 0.50.2-dev - seconds_per_case: 10.3 - total_cost: 1.5614 - dirname: 2024-08-15-14-21-06--json-no-lint-deepseek-coder-whole-3 test_cases: 133 model: deepseek-coder V2 0724 @@ -418,27 +313,6 @@ versions: 0.50.2-dev seconds_per_case: 24.4 total_cost: 0.0439 -- dirname: 2024-08-15-14-24-46--json-no-lint-deepseek-coder-func-3 - test_cases: 133 - model: deepseek-coder V2 0724 - edit_format: JSON - commit_hash: bac04a2 - pass_rate_1: 52.6 - percent_cases_well_formed: 100.0 - error_outputs: 3 - num_malformed_responses: 0 - num_with_malformed_responses: 0 - user_asks: 0 - lazy_comments: 0 - syntax_errors: 12 - indentation_errors: 0 - exhausted_context_windows: 0 - test_timeouts: 1 - command: aider --model deepseek-coder - date: 2024-08-15 - versions: 0.50.2-dev - seconds_per_case: 19.0 - total_cost: 0.0334 - dirname: 2024-08-15-14-27-17--json-no-lint-gpt-4o-2024-08-06-whole-4 test_cases: 133 model: gpt-4o-2024-08-06 @@ -523,27 +397,6 @@ versions: 0.50.2-dev seconds_per_case: 11.3 total_cost: 1.6635 -- dirname: 2024-08-15-14-36-18--json-no-lint-claude-3.5-sonnet-func-4 - test_cases: 133 - model: claude-3.5-sonnet - edit_format: JSON - commit_hash: bac04a2 - pass_rate_1: 55.6 - percent_cases_well_formed: 100.0 - error_outputs: 1 - num_malformed_responses: 0 - num_with_malformed_responses: 0 - user_asks: 0 - lazy_comments: 0 - syntax_errors: 0 - indentation_errors: 0 - exhausted_context_windows: 0 - test_timeouts: 1 - command: aider --model claude-3.5-sonnet - date: 2024-08-15 - versions: 0.50.2-dev - seconds_per_case: 10.5 - total_cost: 1.5768 - dirname: 2024-08-15-14-38-35--json-no-lint-deepseek-coder-whole-4 test_cases: 133 model: deepseek-coder V2 0724 @@ -565,27 +418,6 @@ versions: 0.50.2-dev seconds_per_case: 24.5 total_cost: 0.0438 -- dirname: 2024-08-15-14-41-36--json-no-lint-deepseek-coder-func-4 - test_cases: 133 - model: deepseek-coder V2 0724 - edit_format: JSON - commit_hash: bac04a2 - pass_rate_1: 49.6 - percent_cases_well_formed: 100.0 - error_outputs: 7 - num_malformed_responses: 0 - num_with_malformed_responses: 0 - user_asks: 0 - lazy_comments: 0 - syntax_errors: 2 - indentation_errors: 0 - exhausted_context_windows: 0 - test_timeouts: 1 - command: aider --model deepseek-coder - date: 2024-08-15 - versions: 0.50.2-dev - seconds_per_case: 18.7 - total_cost: 0.0333 - dirname: 2024-08-15-14-44-11--json-no-lint-gpt-4o-2024-08-06-whole-5 test_cases: 133 model: gpt-4o-2024-08-06 @@ -670,27 +502,6 @@ versions: 0.50.2-dev seconds_per_case: 11.4 total_cost: 1.6685 -- dirname: 2024-08-15-14-52-48--json-no-lint-claude-3.5-sonnet-func-5 - test_cases: 133 - model: claude-3.5-sonnet - edit_format: JSON - commit_hash: bac04a2 - pass_rate_1: 53.4 - percent_cases_well_formed: 100.0 - error_outputs: 2 - num_malformed_responses: 0 - num_with_malformed_responses: 0 - user_asks: 0 - lazy_comments: 0 - syntax_errors: 0 - indentation_errors: 0 - exhausted_context_windows: 0 - test_timeouts: 1 - command: aider --model claude-3.5-sonnet - date: 2024-08-15 - versions: 0.50.2-dev - seconds_per_case: 10.8 - total_cost: 1.5786 - dirname: 2024-08-15-14-54-41--json-no-lint-deepseek-coder-whole-5 test_cases: 133 model: deepseek-coder V2 0724 @@ -712,27 +523,6 @@ versions: 0.50.2-dev seconds_per_case: 24.5 total_cost: 0.0439 -- dirname: 2024-08-15-14-57-51--json-no-lint-deepseek-coder-func-5 - test_cases: 133 - model: deepseek-coder V2 0724 - edit_format: JSON - commit_hash: bac04a2 - pass_rate_1: 53.4 - percent_cases_well_formed: 100.0 - error_outputs: 5 - num_malformed_responses: 0 - num_with_malformed_responses: 0 - user_asks: 0 - lazy_comments: 0 - syntax_errors: 4 - indentation_errors: 1 - exhausted_context_windows: 0 - test_timeouts: 0 - command: aider --model deepseek-coder - date: 2024-08-15 - versions: 0.50.2-dev - seconds_per_case: 18.5 - total_cost: 0.0330 - dirname: 2024-08-15-15-12-55--json-no-lint-strict-gpt-4o-2024-08-06-func-2 test_cases: 133 model: gpt-4o-2024-08-06 @@ -922,3 +712,216 @@ versions: 0.50.2-dev seconds_per_case: 7.6 total_cost: 1.4948 + +- dirname: 2024-08-15-19-35-32--json-no-lint-again-deepseek-coder-func-1 + test_cases: 133 + model: deepseek-coder V2 0724 + edit_format: JSON + commit_hash: 3a2ac02-dirty + pass_rate_1: 50.4 + percent_cases_well_formed: 100.0 + error_outputs: 0 + num_malformed_responses: 0 + num_with_malformed_responses: 0 + user_asks: 0 + lazy_comments: 0 + syntax_errors: 2 + indentation_errors: 0 + exhausted_context_windows: 0 + test_timeouts: 1 + command: aider --model deepseek-coder + date: 2024-08-15 + versions: 0.50.2-dev + seconds_per_case: 17.8 + total_cost: 0.0330 +- dirname: 2024-08-15-19-37-50--json-no-lint-again-deepseek-coder-func-2 + test_cases: 133 + model: deepseek-coder V2 0724 + edit_format: JSON + commit_hash: 1a98c28 + pass_rate_1: 49.6 + percent_cases_well_formed: 100.0 + error_outputs: 0 + num_malformed_responses: 0 + num_with_malformed_responses: 0 + user_asks: 0 + lazy_comments: 0 + syntax_errors: 5 + indentation_errors: 0 + exhausted_context_windows: 0 + test_timeouts: 1 + command: aider --model deepseek-coder + date: 2024-08-15 + versions: 0.50.2-dev + seconds_per_case: 18.3 + total_cost: 0.0336 +- dirname: 2024-08-15-19-40-20--json-no-lint-again-deepseek-coder-func-3 + test_cases: 133 + model: deepseek-coder V2 0724 + edit_format: JSON + commit_hash: 1a98c28 + pass_rate_1: 48.9 + percent_cases_well_formed: 100.0 + error_outputs: 1 + num_malformed_responses: 0 + num_with_malformed_responses: 0 + user_asks: 0 + lazy_comments: 0 + syntax_errors: 5 + indentation_errors: 1 + exhausted_context_windows: 1 + test_timeouts: 2 + command: aider --model deepseek-coder + date: 2024-08-15 + versions: 0.50.2-dev + seconds_per_case: 18.4 + total_cost: 0.0337 +- dirname: 2024-08-15-19-44-07--json-no-lint-again-deepseek-coder-func-4 + test_cases: 133 + model: deepseek-coder V2 0724 + edit_format: JSON + commit_hash: 1a98c28 + pass_rate_1: 53.4 + percent_cases_well_formed: 100.0 + error_outputs: 0 + num_malformed_responses: 0 + num_with_malformed_responses: 0 + user_asks: 0 + lazy_comments: 0 + syntax_errors: 2 + indentation_errors: 0 + exhausted_context_windows: 0 + test_timeouts: 2 + command: aider --model deepseek-coder + date: 2024-08-15 + versions: 0.50.2-dev + seconds_per_case: 17.6 + total_cost: 0.0330 +- dirname: 2024-08-15-19-46-48--json-no-lint-again-deepseek-coder-func-5 + test_cases: 133 + model: deepseek-coder V2 0724 + edit_format: JSON + commit_hash: 1a98c28-dirty + pass_rate_1: 53.4 + percent_cases_well_formed: 100.0 + error_outputs: 0 + num_malformed_responses: 0 + num_with_malformed_responses: 0 + user_asks: 0 + lazy_comments: 0 + syntax_errors: 11 + indentation_errors: 0 + exhausted_context_windows: 0 + test_timeouts: 2 + command: aider --model deepseek-coder + date: 2024-08-15 + versions: 0.50.2-dev + seconds_per_case: 18.0 + total_cost: 0.0332 + +- dirname: 2024-08-15-20-07-59--json-no-lint-again-claude-3.5-sonnet-func-1 + test_cases: 133 + model: claude-3.5-sonnet + edit_format: JSON + commit_hash: 1a98c28 + pass_rate_1: 54.1 + percent_cases_well_formed: 100.0 + error_outputs: 0 + num_malformed_responses: 0 + num_with_malformed_responses: 0 + user_asks: 0 + lazy_comments: 0 + syntax_errors: 0 + indentation_errors: 0 + exhausted_context_windows: 0 + test_timeouts: 1 + command: aider --model claude-3.5-sonnet + date: 2024-08-15 + versions: 0.50.2-dev + seconds_per_case: 9.5 + total_cost: 1.5789 +- dirname: 2024-08-15-20-09-39--json-no-lint-again-claude-3.5-sonnet-func-2 + test_cases: 133 + model: claude-3.5-sonnet + edit_format: JSON + commit_hash: 1a98c28 + pass_rate_1: 55.6 + percent_cases_well_formed: 100.0 + error_outputs: 0 + num_malformed_responses: 0 + num_with_malformed_responses: 0 + user_asks: 0 + lazy_comments: 0 + syntax_errors: 0 + indentation_errors: 0 + exhausted_context_windows: 0 + test_timeouts: 1 + command: aider --model claude-3.5-sonnet + date: 2024-08-15 + versions: 0.50.2-dev + seconds_per_case: 9.2 + total_cost: 1.5916 +- dirname: 2024-08-15-20-11-39--json-no-lint-again-claude-3.5-sonnet-func-3 + test_cases: 133 + model: claude-3.5-sonnet + edit_format: JSON + commit_hash: 1a98c28 + pass_rate_1: 53.4 + percent_cases_well_formed: 100.0 + error_outputs: 0 + num_malformed_responses: 0 + num_with_malformed_responses: 0 + user_asks: 0 + lazy_comments: 0 + syntax_errors: 0 + indentation_errors: 0 + exhausted_context_windows: 0 + test_timeouts: 1 + command: aider --model claude-3.5-sonnet + date: 2024-08-15 + versions: 0.50.2-dev + seconds_per_case: 10.3 + total_cost: 1.5896 +- dirname: 2024-08-15-20-13-44--json-no-lint-again-claude-3.5-sonnet-func-4 + test_cases: 133 + model: claude-3.5-sonnet + edit_format: JSON + commit_hash: 1a98c28 + pass_rate_1: 55.6 + percent_cases_well_formed: 100.0 + error_outputs: 0 + num_malformed_responses: 0 + num_with_malformed_responses: 0 + user_asks: 0 + lazy_comments: 0 + syntax_errors: 0 + indentation_errors: 0 + exhausted_context_windows: 0 + test_timeouts: 1 + command: aider --model claude-3.5-sonnet + date: 2024-08-15 + versions: 0.50.2-dev + seconds_per_case: 9.2 + total_cost: 1.6000 +- dirname: 2024-08-15-20-15-51--json-no-lint-again-claude-3.5-sonnet-func-5 + test_cases: 133 + model: claude-3.5-sonnet + edit_format: JSON + commit_hash: 1a98c28 + pass_rate_1: 51.9 + percent_cases_well_formed: 100.0 + error_outputs: 0 + num_malformed_responses: 0 + num_with_malformed_responses: 0 + user_asks: 0 + lazy_comments: 0 + syntax_errors: 0 + indentation_errors: 0 + exhausted_context_windows: 0 + test_timeouts: 1 + command: aider --model claude-3.5-sonnet + date: 2024-08-15 + versions: 0.50.2-dev + seconds_per_case: 8.9 + total_cost: 1.5936 + \ No newline at end of file diff --git a/aider/website/_includes/code-in-json-benchmark.js b/aider/website/_includes/code-in-json-benchmark.js index 0a8f75e74..b7e89568b 100644 --- a/aider/website/_includes/code-in-json-benchmark.js +++ b/aider/website/_includes/code-in-json-benchmark.js @@ -1,11 +1,21 @@ -