mirror of
https://github.com/Aider-AI/aider.git
synced 2025-05-25 06:44:59 +00:00
Merge branch 'main' into json-coders
This commit is contained in:
commit
3a2ac02024
8 changed files with 1562 additions and 95 deletions
|
@ -1009,7 +1009,8 @@ class Coder:
|
||||||
)
|
)
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
self.io.tool_error(f"Unexpected error: {err}")
|
self.io.tool_error(f"Unexpected error: {err}")
|
||||||
traceback.print_exc()
|
lines = traceback.format_exception(type(err), err, err.__traceback__)
|
||||||
|
self.io.tool_error("".join(lines))
|
||||||
return
|
return
|
||||||
finally:
|
finally:
|
||||||
if self.mdstream:
|
if self.mdstream:
|
||||||
|
|
|
@ -516,7 +516,11 @@ class Model:
|
||||||
|
|
||||||
def token_count(self, messages):
|
def token_count(self, messages):
|
||||||
if type(messages) is list:
|
if type(messages) is list:
|
||||||
return litellm.token_counter(model=self.name, messages=messages)
|
try:
|
||||||
|
return litellm.token_counter(model=self.name, messages=messages)
|
||||||
|
except Exception as err:
|
||||||
|
print(f"Unable to count tokens: {err}")
|
||||||
|
return 0
|
||||||
|
|
||||||
if not self.tokenizer:
|
if not self.tokenizer:
|
||||||
return
|
return
|
||||||
|
|
924
aider/website/_data/code-in-json.yml
Normal file
924
aider/website/_data/code-in-json.yml
Normal file
|
@ -0,0 +1,924 @@
|
||||||
|
- dirname: 2024-08-15-13-17-11--json-no-lint-gpt-4o-2024-08-06-whole
|
||||||
|
test_cases: 133
|
||||||
|
model: gpt-4o-2024-08-06
|
||||||
|
edit_format: Markdown
|
||||||
|
commit_hash: bac04a2
|
||||||
|
pass_rate_1: 60.2
|
||||||
|
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 gpt-4o-2024-08-06
|
||||||
|
date: 2024-08-15
|
||||||
|
versions: 0.50.2-dev
|
||||||
|
seconds_per_case: 4.3
|
||||||
|
total_cost: 0.7965
|
||||||
|
- dirname: 2024-08-15-13-18-36--json-no-lint-gpt-4o-2024-08-06-func
|
||||||
|
test_cases: 133
|
||||||
|
model: gpt-4o-2024-08-06
|
||||||
|
edit_format: JSON
|
||||||
|
commit_hash: bac04a2
|
||||||
|
pass_rate_1: 57.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: 1
|
||||||
|
indentation_errors: 0
|
||||||
|
exhausted_context_windows: 0
|
||||||
|
test_timeouts: 1
|
||||||
|
command: aider --model gpt-4o-2024-08-06
|
||||||
|
date: 2024-08-15
|
||||||
|
versions: 0.50.2-dev
|
||||||
|
seconds_per_case: 5.7
|
||||||
|
total_cost: 0.8417
|
||||||
|
- dirname: 2024-08-15-13-21-55--json-no-lint-gpt-4o-2024-05-13-func
|
||||||
|
test_cases: 133
|
||||||
|
model: gpt-4o-2024-05-13
|
||||||
|
edit_format: JSON
|
||||||
|
commit_hash: bac04a2
|
||||||
|
pass_rate_1: 60.2
|
||||||
|
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: 1
|
||||||
|
indentation_errors: 0
|
||||||
|
exhausted_context_windows: 0
|
||||||
|
test_timeouts: 0
|
||||||
|
command: aider --model gpt-4o-2024-05-13
|
||||||
|
date: 2024-08-15
|
||||||
|
versions: 0.50.2-dev
|
||||||
|
seconds_per_case: 7.1
|
||||||
|
total_cost: 1.2285
|
||||||
|
- dirname: 2024-08-15-13-23-33--json-no-lint-claude-3.5-sonnet-whole
|
||||||
|
test_cases: 133
|
||||||
|
model: claude-3.5-sonnet
|
||||||
|
edit_format: Markdown
|
||||||
|
commit_hash: bac04a2
|
||||||
|
pass_rate_1: 60.2
|
||||||
|
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: 0
|
||||||
|
command: aider --model claude-3.5-sonnet
|
||||||
|
date: 2024-08-15
|
||||||
|
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
|
||||||
|
edit_format: Markdown
|
||||||
|
commit_hash: bac04a2
|
||||||
|
pass_rate_1: 59.4
|
||||||
|
percent_cases_well_formed: 100.0
|
||||||
|
error_outputs: 2
|
||||||
|
num_malformed_responses: 0
|
||||||
|
num_with_malformed_responses: 0
|
||||||
|
user_asks: 2
|
||||||
|
lazy_comments: 0
|
||||||
|
syntax_errors: 0
|
||||||
|
indentation_errors: 0
|
||||||
|
exhausted_context_windows: 0
|
||||||
|
test_timeouts: 0
|
||||||
|
command: aider --model deepseek-coder
|
||||||
|
date: 2024-08-15
|
||||||
|
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
|
||||||
|
edit_format: Markdown
|
||||||
|
commit_hash: bac04a2
|
||||||
|
pass_rate_1: 61.7
|
||||||
|
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 gpt-4o-2024-08-06
|
||||||
|
date: 2024-08-15
|
||||||
|
versions: 0.50.2-dev
|
||||||
|
seconds_per_case: 4.2
|
||||||
|
total_cost: 0.7946
|
||||||
|
- dirname: 2024-08-15-13-51-36--json-no-lint-gpt-4o-2024-08-06-func-2
|
||||||
|
test_cases: 133
|
||||||
|
model: gpt-4o-2024-08-06
|
||||||
|
edit_format: JSON
|
||||||
|
commit_hash: bac04a2
|
||||||
|
pass_rate_1: 56.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: 1
|
||||||
|
indentation_errors: 0
|
||||||
|
exhausted_context_windows: 0
|
||||||
|
test_timeouts: 1
|
||||||
|
command: aider --model gpt-4o-2024-08-06
|
||||||
|
date: 2024-08-15
|
||||||
|
versions: 0.50.2-dev
|
||||||
|
seconds_per_case: 6.4
|
||||||
|
total_cost: 0.8390
|
||||||
|
- dirname: 2024-08-15-13-54-53--json-no-lint-gpt-4o-2024-05-13-func-2
|
||||||
|
test_cases: 133
|
||||||
|
model: gpt-4o-2024-05-13
|
||||||
|
edit_format: JSON
|
||||||
|
commit_hash: bac04a2
|
||||||
|
pass_rate_1: 60.2
|
||||||
|
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: 1
|
||||||
|
indentation_errors: 0
|
||||||
|
exhausted_context_windows: 0
|
||||||
|
test_timeouts: 0
|
||||||
|
command: aider --model gpt-4o-2024-05-13
|
||||||
|
date: 2024-08-15
|
||||||
|
versions: 0.50.2-dev
|
||||||
|
seconds_per_case: 7.7
|
||||||
|
total_cost: 1.2210
|
||||||
|
- dirname: 2024-08-15-13-56-21--json-no-lint-claude-3.5-sonnet-whole-2
|
||||||
|
test_cases: 133
|
||||||
|
model: claude-3.5-sonnet
|
||||||
|
edit_format: Markdown
|
||||||
|
commit_hash: bac04a2
|
||||||
|
pass_rate_1: 60.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: 0
|
||||||
|
command: aider --model claude-3.5-sonnet
|
||||||
|
date: 2024-08-15
|
||||||
|
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
|
||||||
|
edit_format: Markdown
|
||||||
|
commit_hash: bac04a2
|
||||||
|
pass_rate_1: 60.9
|
||||||
|
percent_cases_well_formed: 100.0
|
||||||
|
error_outputs: 2
|
||||||
|
num_malformed_responses: 0
|
||||||
|
num_with_malformed_responses: 0
|
||||||
|
user_asks: 1
|
||||||
|
lazy_comments: 0
|
||||||
|
syntax_errors: 0
|
||||||
|
indentation_errors: 0
|
||||||
|
exhausted_context_windows: 0
|
||||||
|
test_timeouts: 0
|
||||||
|
command: aider --model deepseek-coder
|
||||||
|
date: 2024-08-15
|
||||||
|
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
|
||||||
|
edit_format: Markdown
|
||||||
|
commit_hash: bac04a2
|
||||||
|
pass_rate_1: 60.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 gpt-4o-2024-08-06
|
||||||
|
date: 2024-08-15
|
||||||
|
versions: 0.50.2-dev
|
||||||
|
seconds_per_case: 4.3
|
||||||
|
total_cost: 0.7945
|
||||||
|
- dirname: 2024-08-15-14-13-11--json-no-lint-gpt-4o-2024-08-06-func-3
|
||||||
|
test_cases: 133
|
||||||
|
model: gpt-4o-2024-08-06
|
||||||
|
edit_format: JSON
|
||||||
|
commit_hash: bac04a2
|
||||||
|
pass_rate_1: 56.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: 1
|
||||||
|
indentation_errors: 0
|
||||||
|
exhausted_context_windows: 0
|
||||||
|
test_timeouts: 1
|
||||||
|
command: aider --model gpt-4o-2024-08-06
|
||||||
|
date: 2024-08-15
|
||||||
|
versions: 0.50.2-dev
|
||||||
|
seconds_per_case: 5.6
|
||||||
|
total_cost: 0.8220
|
||||||
|
- dirname: 2024-08-15-14-16-34--json-no-lint-gpt-4o-2024-05-13-func-3
|
||||||
|
test_cases: 133
|
||||||
|
model: gpt-4o-2024-05-13
|
||||||
|
edit_format: JSON
|
||||||
|
commit_hash: bac04a2
|
||||||
|
pass_rate_1: 58.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: 0
|
||||||
|
command: aider --model gpt-4o-2024-05-13
|
||||||
|
date: 2024-08-15
|
||||||
|
versions: 0.50.2-dev
|
||||||
|
seconds_per_case: 8.7
|
||||||
|
total_cost: 1.2064
|
||||||
|
- dirname: 2024-08-15-14-17-51--json-no-lint-claude-3.5-sonnet-whole-3
|
||||||
|
test_cases: 133
|
||||||
|
model: claude-3.5-sonnet
|
||||||
|
edit_format: Markdown
|
||||||
|
commit_hash: bac04a2
|
||||||
|
pass_rate_1: 60.2
|
||||||
|
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: 0
|
||||||
|
command: aider --model claude-3.5-sonnet
|
||||||
|
date: 2024-08-15
|
||||||
|
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
|
||||||
|
edit_format: Markdown
|
||||||
|
commit_hash: bac04a2
|
||||||
|
pass_rate_1: 61.7
|
||||||
|
percent_cases_well_formed: 100.0
|
||||||
|
error_outputs: 3
|
||||||
|
num_malformed_responses: 0
|
||||||
|
num_with_malformed_responses: 0
|
||||||
|
user_asks: 2
|
||||||
|
lazy_comments: 0
|
||||||
|
syntax_errors: 0
|
||||||
|
indentation_errors: 0
|
||||||
|
exhausted_context_windows: 0
|
||||||
|
test_timeouts: 3
|
||||||
|
command: aider --model deepseek-coder
|
||||||
|
date: 2024-08-15
|
||||||
|
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
|
||||||
|
edit_format: Markdown
|
||||||
|
commit_hash: bac04a2
|
||||||
|
pass_rate_1: 60.2
|
||||||
|
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 gpt-4o-2024-08-06
|
||||||
|
date: 2024-08-15
|
||||||
|
versions: 0.50.2-dev
|
||||||
|
seconds_per_case: 4.3
|
||||||
|
total_cost: 0.8015
|
||||||
|
- dirname: 2024-08-15-14-28-58--json-no-lint-gpt-4o-2024-08-06-func-4
|
||||||
|
test_cases: 133
|
||||||
|
model: gpt-4o-2024-08-06
|
||||||
|
edit_format: JSON
|
||||||
|
commit_hash: bac04a2
|
||||||
|
pass_rate_1: 60.2
|
||||||
|
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 gpt-4o-2024-08-06
|
||||||
|
date: 2024-08-15
|
||||||
|
versions: 0.50.2-dev
|
||||||
|
seconds_per_case: 6.0
|
||||||
|
total_cost: 0.8394
|
||||||
|
- dirname: 2024-08-15-14-32-58--json-no-lint-gpt-4o-2024-05-13-func-4
|
||||||
|
test_cases: 133
|
||||||
|
model: gpt-4o-2024-05-13
|
||||||
|
edit_format: JSON
|
||||||
|
commit_hash: bac04a2
|
||||||
|
pass_rate_1: 59.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: 0
|
||||||
|
command: aider --model gpt-4o-2024-05-13
|
||||||
|
date: 2024-08-15
|
||||||
|
versions: 0.50.2-dev
|
||||||
|
seconds_per_case: 11.1
|
||||||
|
total_cost: 1.2120
|
||||||
|
- dirname: 2024-08-15-14-34-39--json-no-lint-claude-3.5-sonnet-whole-4
|
||||||
|
test_cases: 133
|
||||||
|
model: claude-3.5-sonnet
|
||||||
|
edit_format: Markdown
|
||||||
|
commit_hash: bac04a2
|
||||||
|
pass_rate_1: 60.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: 0
|
||||||
|
command: aider --model claude-3.5-sonnet
|
||||||
|
date: 2024-08-15
|
||||||
|
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
|
||||||
|
edit_format: Markdown
|
||||||
|
commit_hash: bac04a2
|
||||||
|
pass_rate_1: 59.4
|
||||||
|
percent_cases_well_formed: 100.0
|
||||||
|
error_outputs: 2
|
||||||
|
num_malformed_responses: 0
|
||||||
|
num_with_malformed_responses: 0
|
||||||
|
user_asks: 2
|
||||||
|
lazy_comments: 0
|
||||||
|
syntax_errors: 0
|
||||||
|
indentation_errors: 0
|
||||||
|
exhausted_context_windows: 0
|
||||||
|
test_timeouts: 0
|
||||||
|
command: aider --model deepseek-coder
|
||||||
|
date: 2024-08-15
|
||||||
|
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
|
||||||
|
edit_format: Markdown
|
||||||
|
commit_hash: bac04a2
|
||||||
|
pass_rate_1: 60.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 gpt-4o-2024-08-06
|
||||||
|
date: 2024-08-15
|
||||||
|
versions: 0.50.2-dev
|
||||||
|
seconds_per_case: 4.6
|
||||||
|
total_cost: 0.8023
|
||||||
|
- dirname: 2024-08-15-14-45-40--json-no-lint-gpt-4o-2024-08-06-func-5
|
||||||
|
test_cases: 133
|
||||||
|
model: gpt-4o-2024-08-06
|
||||||
|
edit_format: JSON
|
||||||
|
commit_hash: bac04a2
|
||||||
|
pass_rate_1: 57.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: 3
|
||||||
|
command: aider --model gpt-4o-2024-08-06
|
||||||
|
date: 2024-08-15
|
||||||
|
versions: 0.50.2-dev
|
||||||
|
seconds_per_case: 6.3
|
||||||
|
total_cost: 0.8354
|
||||||
|
- dirname: 2024-08-15-14-49-44--json-no-lint-gpt-4o-2024-05-13-func-5
|
||||||
|
test_cases: 133
|
||||||
|
model: gpt-4o-2024-05-13
|
||||||
|
edit_format: JSON
|
||||||
|
commit_hash: bac04a2
|
||||||
|
pass_rate_1: 59.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: 4
|
||||||
|
indentation_errors: 0
|
||||||
|
exhausted_context_windows: 0
|
||||||
|
test_timeouts: 0
|
||||||
|
command: aider --model gpt-4o-2024-05-13
|
||||||
|
date: 2024-08-15
|
||||||
|
versions: 0.50.2-dev
|
||||||
|
seconds_per_case: 10.5
|
||||||
|
total_cost: 1.2099
|
||||||
|
- dirname: 2024-08-15-14-51-18--json-no-lint-claude-3.5-sonnet-whole-5
|
||||||
|
test_cases: 133
|
||||||
|
model: claude-3.5-sonnet
|
||||||
|
edit_format: Markdown
|
||||||
|
commit_hash: bac04a2
|
||||||
|
pass_rate_1: 60.2
|
||||||
|
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: 0
|
||||||
|
command: aider --model claude-3.5-sonnet
|
||||||
|
date: 2024-08-15
|
||||||
|
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
|
||||||
|
edit_format: Markdown
|
||||||
|
commit_hash: bac04a2
|
||||||
|
pass_rate_1: 61.7
|
||||||
|
percent_cases_well_formed: 100.0
|
||||||
|
error_outputs: 2
|
||||||
|
num_malformed_responses: 0
|
||||||
|
num_with_malformed_responses: 0
|
||||||
|
user_asks: 2
|
||||||
|
lazy_comments: 0
|
||||||
|
syntax_errors: 0
|
||||||
|
indentation_errors: 0
|
||||||
|
exhausted_context_windows: 0
|
||||||
|
test_timeouts: 0
|
||||||
|
command: aider --model deepseek-coder
|
||||||
|
date: 2024-08-15
|
||||||
|
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
|
||||||
|
edit_format: JSON (strict)
|
||||||
|
commit_hash: bf2d5fe
|
||||||
|
pass_rate_1: 57.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 gpt-4o-2024-08-06
|
||||||
|
date: 2024-08-15
|
||||||
|
versions: 0.50.2-dev
|
||||||
|
seconds_per_case: 5.9
|
||||||
|
total_cost: 0.8216
|
||||||
|
- dirname: 2024-08-15-15-14-31--json-no-lint-strict-gpt-4o-2024-08-06-func-3
|
||||||
|
test_cases: 133
|
||||||
|
model: gpt-4o-2024-08-06
|
||||||
|
edit_format: JSON (strict)
|
||||||
|
commit_hash: bf2d5fe
|
||||||
|
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: 2
|
||||||
|
indentation_errors: 0
|
||||||
|
exhausted_context_windows: 0
|
||||||
|
test_timeouts: 1
|
||||||
|
command: aider --model gpt-4o-2024-08-06
|
||||||
|
date: 2024-08-15
|
||||||
|
versions: 0.50.2-dev
|
||||||
|
seconds_per_case: 6.3
|
||||||
|
total_cost: 0.8410
|
||||||
|
- dirname: 2024-08-15-15-16-14--json-no-lint-strict-gpt-4o-2024-08-06-func-4
|
||||||
|
test_cases: 133
|
||||||
|
model: gpt-4o-2024-08-06
|
||||||
|
edit_format: JSON (strict)
|
||||||
|
commit_hash: bf2d5fe
|
||||||
|
pass_rate_1: 59.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 gpt-4o-2024-08-06
|
||||||
|
date: 2024-08-15
|
||||||
|
versions: 0.50.2-dev
|
||||||
|
seconds_per_case: 5.9
|
||||||
|
total_cost: 0.8203
|
||||||
|
- dirname: 2024-08-15-15-17-50--json-no-lint-strict-gpt-4o-2024-08-06-func-5
|
||||||
|
test_cases: 133
|
||||||
|
model: gpt-4o-2024-08-06
|
||||||
|
edit_format: JSON (strict)
|
||||||
|
commit_hash: bf2d5fe
|
||||||
|
pass_rate_1: 57.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: 1
|
||||||
|
indentation_errors: 0
|
||||||
|
exhausted_context_windows: 0
|
||||||
|
test_timeouts: 1
|
||||||
|
command: aider --model gpt-4o-2024-08-06
|
||||||
|
date: 2024-08-15
|
||||||
|
versions: 0.50.2-dev
|
||||||
|
seconds_per_case: 6.1
|
||||||
|
total_cost: 0.8415
|
||||||
|
- dirname: 2024-08-15-17-36-22--json-no-lint-again-gpt-4o-2024-05-13-whole-1
|
||||||
|
test_cases: 133
|
||||||
|
model: gpt-4o-2024-05-13
|
||||||
|
edit_format: Markdown
|
||||||
|
commit_hash: ed94379
|
||||||
|
pass_rate_1: 60.2
|
||||||
|
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: 7
|
||||||
|
indentation_errors: 0
|
||||||
|
exhausted_context_windows: 0
|
||||||
|
test_timeouts: 1
|
||||||
|
command: aider --model gpt-4o-2024-05-13
|
||||||
|
date: 2024-08-15
|
||||||
|
versions: 0.50.2-dev
|
||||||
|
seconds_per_case: 6.8
|
||||||
|
total_cost: 1.5110
|
||||||
|
- dirname: 2024-08-15-17-38-13--json-no-lint-again-gpt-4o-2024-05-13-whole-2
|
||||||
|
test_cases: 133
|
||||||
|
model: gpt-4o-2024-05-13
|
||||||
|
edit_format: Markdown
|
||||||
|
commit_hash: ed94379
|
||||||
|
pass_rate_1: 60.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 gpt-4o-2024-05-13
|
||||||
|
date: 2024-08-15
|
||||||
|
versions: 0.50.2-dev
|
||||||
|
seconds_per_case: 7.0
|
||||||
|
total_cost: 1.4954
|
||||||
|
- dirname: 2024-08-15-17-40-10--json-no-lint-again-gpt-4o-2024-05-13-whole-3
|
||||||
|
test_cases: 133
|
||||||
|
model: gpt-4o-2024-05-13
|
||||||
|
edit_format: Markdown
|
||||||
|
commit_hash: ed94379
|
||||||
|
pass_rate_1: 60.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: 0
|
||||||
|
command: aider --model gpt-4o-2024-05-13
|
||||||
|
date: 2024-08-15
|
||||||
|
versions: 0.50.2-dev
|
||||||
|
seconds_per_case: 6.8
|
||||||
|
total_cost: 1.4999
|
||||||
|
- dirname: 2024-08-15-17-41-30--json-no-lint-again-gpt-4o-2024-05-13-whole-4
|
||||||
|
test_cases: 133
|
||||||
|
model: gpt-4o-2024-05-13
|
||||||
|
edit_format: Markdown
|
||||||
|
commit_hash: ed94379
|
||||||
|
pass_rate_1: 58.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 gpt-4o-2024-05-13
|
||||||
|
date: 2024-08-15
|
||||||
|
versions: 0.50.2-dev
|
||||||
|
seconds_per_case: 7.4
|
||||||
|
total_cost: 1.4848
|
||||||
|
- dirname: 2024-08-15-17-43-12--json-no-lint-again-gpt-4o-2024-05-13-whole-5
|
||||||
|
test_cases: 133
|
||||||
|
model: gpt-4o-2024-05-13
|
||||||
|
edit_format: Markdown
|
||||||
|
commit_hash: ed94379
|
||||||
|
pass_rate_1: 59.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 gpt-4o-2024-05-13
|
||||||
|
date: 2024-08-15
|
||||||
|
versions: 0.50.2-dev
|
||||||
|
seconds_per_case: 7.6
|
||||||
|
total_cost: 1.4948
|
170
aider/website/_includes/code-in-json-benchmark.js
Normal file
170
aider/website/_includes/code-in-json-benchmark.js
Normal file
|
@ -0,0 +1,170 @@
|
||||||
|
<div id="chartContainer" style="position: relative; height: 0; padding-bottom: 50%; margin-bottom: 20px;">
|
||||||
|
<canvas id="passRateChart" style="position: absolute; width: 100%; height: 100%;"></canvas>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
||||||
|
<script>
|
||||||
|
document.addEventListener('DOMContentLoaded', function () {
|
||||||
|
var ctx = document.getElementById('passRateChart').getContext('2d');
|
||||||
|
|
||||||
|
var yamlData = {{ site.data.code-in-json | jsonify }};
|
||||||
|
|
||||||
|
var models = [...new Set(yamlData.map(item => item.model))].sort();
|
||||||
|
var editFormats = [...new Set(yamlData.map(item => item.edit_format))];
|
||||||
|
|
||||||
|
var datasets = editFormats.map(format => ({
|
||||||
|
label: format,
|
||||||
|
data: models.map(model => {
|
||||||
|
var items = yamlData.filter(d => d.model === model && d.edit_format === format);
|
||||||
|
if (items.length === 0) return null;
|
||||||
|
var average = items.reduce((sum, item) => sum + item.pass_rate_1, 0) / items.length;
|
||||||
|
return parseFloat(average.toFixed(1));
|
||||||
|
}),
|
||||||
|
backgroundColor: function(context) {
|
||||||
|
const format = context.dataset.label;
|
||||||
|
if (format === 'Markdown') {
|
||||||
|
return 'rgba(54, 162, 235, 0.8)';
|
||||||
|
} else if (format.startsWith('JSON')) {
|
||||||
|
const ctx = context.chart.ctx;
|
||||||
|
const gradient = ctx.createPattern(createStripedCanvas(format === 'JSON (strict)'), 'repeat');
|
||||||
|
return gradient;
|
||||||
|
} else {
|
||||||
|
return 'rgba(75, 192, 192, 0.8)';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}));
|
||||||
|
|
||||||
|
var data = {
|
||||||
|
labels: models,
|
||||||
|
datasets: datasets
|
||||||
|
};
|
||||||
|
|
||||||
|
var config = {
|
||||||
|
type: 'bar',
|
||||||
|
data: data,
|
||||||
|
options: {
|
||||||
|
responsive: true,
|
||||||
|
maintainAspectRatio: false,
|
||||||
|
scales: {
|
||||||
|
x: {
|
||||||
|
title: {
|
||||||
|
display: true,
|
||||||
|
text: 'Model'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
y: {
|
||||||
|
beginAtZero: true,
|
||||||
|
title: {
|
||||||
|
display: true,
|
||||||
|
text: 'Pass Rate (%, average of 5 runs)'
|
||||||
|
},
|
||||||
|
max: 70
|
||||||
|
}
|
||||||
|
},
|
||||||
|
plugins: {
|
||||||
|
title: {
|
||||||
|
display: true,
|
||||||
|
text: 'Pass rate by model and code wrapping strategy',
|
||||||
|
font: {
|
||||||
|
size: 16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
position: 'top',
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
callbacks: {
|
||||||
|
label: function(context) {
|
||||||
|
let label = context.dataset.label || '';
|
||||||
|
if (label) {
|
||||||
|
label += ': ';
|
||||||
|
}
|
||||||
|
if (context.parsed.y !== null) {
|
||||||
|
label += context.parsed.y.toFixed(1) + '%';
|
||||||
|
}
|
||||||
|
return label;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
plugins: [{
|
||||||
|
afterDraw: function(chart) {
|
||||||
|
var ctx = chart.ctx;
|
||||||
|
chart.data.datasets.forEach(function(dataset, i) {
|
||||||
|
var meta = chart.getDatasetMeta(i);
|
||||||
|
meta.data.forEach(function(bar, index) {
|
||||||
|
var data = dataset.data[index];
|
||||||
|
if (data !== null) {
|
||||||
|
ctx.fillStyle = '#000000';
|
||||||
|
ctx.textAlign = 'center';
|
||||||
|
ctx.textBaseline = 'bottom';
|
||||||
|
ctx.fillText(data.toFixed(1) + '%', bar.x, bar.y - 5);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
|
||||||
|
// Adjust chart height based on screen width
|
||||||
|
function adjustChartHeight() {
|
||||||
|
var container = document.getElementById('chartContainer');
|
||||||
|
if (window.innerWidth < 600) {
|
||||||
|
container.style.paddingBottom = '75%'; // Increase height on small screens
|
||||||
|
} else {
|
||||||
|
container.style.paddingBottom = '50%'; // Default height
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Call the function initially and on window resize
|
||||||
|
adjustChartHeight();
|
||||||
|
window.addEventListener('resize', adjustChartHeight);
|
||||||
|
|
||||||
|
function createStripedCanvas(isStrict) {
|
||||||
|
const patternCanvas = document.createElement('canvas');
|
||||||
|
const patternContext = patternCanvas.getContext('2d');
|
||||||
|
const size = 10;
|
||||||
|
patternCanvas.width = size;
|
||||||
|
patternCanvas.height = size;
|
||||||
|
|
||||||
|
patternContext.fillStyle = 'rgba(255, 99, 132, 0.8)';
|
||||||
|
patternContext.fillRect(0, 0, size, size);
|
||||||
|
|
||||||
|
if (isStrict) {
|
||||||
|
patternContext.strokeStyle = 'rgba(255, 255, 255, 0.8)';
|
||||||
|
patternContext.lineWidth = 0.75;
|
||||||
|
patternContext.beginPath();
|
||||||
|
patternContext.moveTo(0, 0);
|
||||||
|
patternContext.lineTo(size, size);
|
||||||
|
patternContext.stroke();
|
||||||
|
}
|
||||||
|
|
||||||
|
return patternCanvas;
|
||||||
|
}
|
||||||
|
|
||||||
|
new Chart(ctx, config);
|
||||||
|
});
|
||||||
|
|
||||||
|
function createStripedCanvas(isStrict) {
|
||||||
|
const patternCanvas = document.createElement('canvas');
|
||||||
|
const patternContext = patternCanvas.getContext('2d');
|
||||||
|
const size = 10;
|
||||||
|
patternCanvas.width = size;
|
||||||
|
patternCanvas.height = size;
|
||||||
|
|
||||||
|
patternContext.fillStyle = 'rgba(255, 99, 132, 0.8)';
|
||||||
|
patternContext.fillRect(0, 0, size, size);
|
||||||
|
|
||||||
|
if (isStrict) {
|
||||||
|
patternContext.strokeStyle = 'rgba(255, 255, 255, 0.8)';
|
||||||
|
patternContext.lineWidth = 0.75;
|
||||||
|
patternContext.beginPath();
|
||||||
|
patternContext.moveTo(0, 0);
|
||||||
|
patternContext.lineTo(size, size);
|
||||||
|
patternContext.stroke();
|
||||||
|
}
|
||||||
|
|
||||||
|
return patternCanvas;
|
||||||
|
}
|
||||||
|
</script>
|
125
aider/website/_includes/code-in-json-syntax.js
Normal file
125
aider/website/_includes/code-in-json-syntax.js
Normal file
|
@ -0,0 +1,125 @@
|
||||||
|
<div id="syntaxErrorsContainer" style="position: relative; height: 0; padding-bottom: 50%; margin-bottom: 20px;">
|
||||||
|
<canvas id="syntaxErrorsChart" style="position: absolute; width: 100%; height: 100%;"></canvas>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
document.addEventListener('DOMContentLoaded', function () {
|
||||||
|
var ctx = document.getElementById('syntaxErrorsChart').getContext('2d');
|
||||||
|
|
||||||
|
var yamlData = {{ site.data.code-in-json | jsonify }};
|
||||||
|
|
||||||
|
var models = [...new Set(yamlData.map(item => item.model))].sort();
|
||||||
|
var editFormats = [...new Set(yamlData.map(item => item.edit_format))];
|
||||||
|
|
||||||
|
var datasets = editFormats.map(format => ({
|
||||||
|
label: format,
|
||||||
|
data: models.map(model => {
|
||||||
|
var items = yamlData.filter(d => d.model === model && d.edit_format === format);
|
||||||
|
if (items.length === 0) return null;
|
||||||
|
var totalErrors = items.reduce((sum, item) => sum + item.syntax_errors + item.indentation_errors, 0);
|
||||||
|
return totalErrors;
|
||||||
|
}),
|
||||||
|
backgroundColor: function(context) {
|
||||||
|
const format = context.dataset.label;
|
||||||
|
if (format === 'Markdown') {
|
||||||
|
return 'rgba(54, 162, 235, 0.8)';
|
||||||
|
} else if (format.startsWith('JSON')) {
|
||||||
|
const ctx = context.chart.ctx;
|
||||||
|
const gradient = ctx.createPattern(createStripedCanvas(format === 'JSON (strict)'), 'repeat');
|
||||||
|
return gradient;
|
||||||
|
} else {
|
||||||
|
return 'rgba(75, 192, 192, 0.8)';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}));
|
||||||
|
|
||||||
|
var data = {
|
||||||
|
labels: models,
|
||||||
|
datasets: datasets
|
||||||
|
};
|
||||||
|
|
||||||
|
var config = {
|
||||||
|
type: 'bar',
|
||||||
|
data: data,
|
||||||
|
options: {
|
||||||
|
responsive: true,
|
||||||
|
maintainAspectRatio: false,
|
||||||
|
scales: {
|
||||||
|
x: {
|
||||||
|
title: {
|
||||||
|
display: true,
|
||||||
|
text: 'Model'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
y: {
|
||||||
|
beginAtZero: true,
|
||||||
|
title: {
|
||||||
|
display: true,
|
||||||
|
text: 'Total syntax errors from 5 runs'
|
||||||
|
},
|
||||||
|
max: 35
|
||||||
|
}
|
||||||
|
},
|
||||||
|
plugins: {
|
||||||
|
title: {
|
||||||
|
display: true,
|
||||||
|
text: 'Syntax errors by model and code wrapping strategy',
|
||||||
|
font: {
|
||||||
|
size: 16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
position: 'top',
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
callbacks: {
|
||||||
|
label: function(context) {
|
||||||
|
let label = context.dataset.label || '';
|
||||||
|
if (label) {
|
||||||
|
label += ': ';
|
||||||
|
}
|
||||||
|
if (context.parsed.y !== null) {
|
||||||
|
label += context.parsed.y;
|
||||||
|
}
|
||||||
|
return label;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
plugins: [{
|
||||||
|
afterDraw: function(chart) {
|
||||||
|
var ctx = chart.ctx;
|
||||||
|
chart.data.datasets.forEach(function(dataset, i) {
|
||||||
|
var meta = chart.getDatasetMeta(i);
|
||||||
|
meta.data.forEach(function(bar, index) {
|
||||||
|
var data = dataset.data[index];
|
||||||
|
if (data !== null) {
|
||||||
|
ctx.fillStyle = '#000000';
|
||||||
|
ctx.textAlign = 'center';
|
||||||
|
ctx.textBaseline = 'bottom';
|
||||||
|
ctx.fillText(data, bar.x, bar.y - 5);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
|
||||||
|
// Adjust chart height based on screen width
|
||||||
|
function adjustChartHeight() {
|
||||||
|
var container = document.getElementById('syntaxErrorsContainer');
|
||||||
|
if (window.innerWidth < 600) {
|
||||||
|
container.style.paddingBottom = '75%'; // Increase height on small screens
|
||||||
|
} else {
|
||||||
|
container.style.paddingBottom = '50%'; // Default height
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Call the function initially and on window resize
|
||||||
|
adjustChartHeight();
|
||||||
|
window.addEventListener('resize', adjustChartHeight);
|
||||||
|
|
||||||
|
new Chart(ctx, config);
|
||||||
|
});
|
||||||
|
</script>
|
233
aider/website/_posts/2024-08-14-code-in-json.md
Normal file
233
aider/website/_posts/2024-08-14-code-in-json.md
Normal file
|
@ -0,0 +1,233 @@
|
||||||
|
---
|
||||||
|
title: LLMs are bad at returning code in JSON
|
||||||
|
excerpt: LLMs write worse code if you ask them to return the code wrapped in JSON (via a tool or function call).
|
||||||
|
highlight_image: /assets/code-in-json.jpg
|
||||||
|
draft: true
|
||||||
|
nav_exclude: true
|
||||||
|
---
|
||||||
|
{% if page.date %}
|
||||||
|
<p class="post-date">{{ page.date | date: "%B %d, %Y" }}</p>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
# LLMs are bad at returning code in JSON
|
||||||
|
|
||||||
|
|
||||||
|
Current LLMs have support for returning properly formatted JSON,
|
||||||
|
making it easier for clients to reliably parse complex responses.
|
||||||
|
It therefore seems attractive for
|
||||||
|
AI coding applications ask LLMs to return code in structured JSON replies.
|
||||||
|
Unfortunately,
|
||||||
|
LLMs write worse code when asked to wrap it in JSON, harming their ability
|
||||||
|
to correctly solve coding tasks.
|
||||||
|
On a variant of the aider code editing benchmark,
|
||||||
|
asking for JSON-wrapped code
|
||||||
|
often harms coding performance.
|
||||||
|
This holds true across many top coding LLMs,
|
||||||
|
including OpenAI's latest model gpt-4o-2024-08-06
|
||||||
|
which has strong JSON support.
|
||||||
|
|
||||||
|
{% include code-in-json-benchmark.js %}
|
||||||
|
|
||||||
|
> Figure 1: Benchmark scores of models using either plain markdown text or JSON to return code,
|
||||||
|
> averaged over 5 runs.
|
||||||
|
> Models produce better code when they return it as plain markdown text, as compared to wrapping it in JSON for a tool function call.
|
||||||
|
|
||||||
|
|
||||||
|
## Background
|
||||||
|
|
||||||
|
A lot of people wonder why aider doesn't use LLM tools for code editing.
|
||||||
|
Instead, aider asks for code edits in plain text, like this:
|
||||||
|
|
||||||
|
````
|
||||||
|
greeting.py
|
||||||
|
```
|
||||||
|
<<<<<<< SEARCH
|
||||||
|
def greeting():
|
||||||
|
print("Hello")
|
||||||
|
=======
|
||||||
|
def greeting():
|
||||||
|
print("Goodbye")
|
||||||
|
>>>>>>> REPLACE
|
||||||
|
```
|
||||||
|
````
|
||||||
|
|
||||||
|
People expect that it would be easier and more reliable to use tool calls,
|
||||||
|
which would return a structured JSON response:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"filename": "greeting.py",
|
||||||
|
"search": "def greeting():\n print(\"Hello\")\n"
|
||||||
|
"replace": "def greeting():\n print(\"Goodbye\")\n"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
This has become even more tempting as LLM providers
|
||||||
|
continue to improve their tooling for reliably generating JSON.
|
||||||
|
For example,
|
||||||
|
[OpenAI recently announced](https://openai.com/index/introducing-structured-outputs-in-the-api/)
|
||||||
|
the ability to
|
||||||
|
strictly enforce that JSON responses will be syntactically correct
|
||||||
|
and conform to a specified schema.
|
||||||
|
|
||||||
|
|
||||||
|
But producing valid (schema compliant) JSON is not sufficient for working with AI generated code.
|
||||||
|
The code inside the JSON has to correctly solve the requested task
|
||||||
|
and be free from syntax errors.
|
||||||
|
Unfortunately,
|
||||||
|
LLMs write worse code when they're asked to
|
||||||
|
wrap it in JSON.
|
||||||
|
|
||||||
|
In some sense this shouldn't be surprising.
|
||||||
|
Just look at the very simple
|
||||||
|
JSON example above, with the escaped
|
||||||
|
quotes `\"` and
|
||||||
|
newlines `\n`
|
||||||
|
mixed into the code.
|
||||||
|
Imagine the additional
|
||||||
|
complexity
|
||||||
|
if the code itself contained quoted strings
|
||||||
|
with their
|
||||||
|
own escape sequences.
|
||||||
|
|
||||||
|
Would *you* write better code by
|
||||||
|
typing it out normally
|
||||||
|
or as a properly escaped
|
||||||
|
JSON string?
|
||||||
|
|
||||||
|
|
||||||
|
## Quantifying the benefits of plain text
|
||||||
|
|
||||||
|
Previous [aider benchmark results](/2023/07/02/benchmarks.html)
|
||||||
|
showed
|
||||||
|
the superiority of returning code
|
||||||
|
as plain text compared to JSON-wrapped function calls.
|
||||||
|
Those results were obtained
|
||||||
|
over a year ago, against far less
|
||||||
|
capable models.
|
||||||
|
OpenAI's newly announced support for "strict" JSON seemed like a good reason to
|
||||||
|
investigate whether the newest models are still handicapped by JSON-wrapping code.
|
||||||
|
|
||||||
|
The results presented here were based on
|
||||||
|
the
|
||||||
|
[aider "code editing" benchmark](/2023/07/02/benchmarks.html#the-benchmark)
|
||||||
|
of 133 practice exercises from the Exercism python repository.
|
||||||
|
Models were
|
||||||
|
restricted to a single attempt,
|
||||||
|
without a second try to fix errors as is normal in the aider benchmark.
|
||||||
|
|
||||||
|
The performance of each model was compared across different strategies for returning code:
|
||||||
|
|
||||||
|
- **Markdown** -- the model returned the whole source code file in standard markdown triple-backtick fences.
|
||||||
|
- **JSON** -- the model used a tool function call to return the whole source code file. This required the LLM to wrap the code in JSON.
|
||||||
|
- **JSON (strict)** -- the same as the "JSON" strategy, but with `strict=True`. Only gpt-4o-2024-08-06 supports this setting.
|
||||||
|
|
||||||
|
The markdown strategy is the same as
|
||||||
|
aider's "whole" edit format, where the
|
||||||
|
LLM returns a source file like this:
|
||||||
|
|
||||||
|
````
|
||||||
|
Here is the program you asked for which prints "Hello":
|
||||||
|
|
||||||
|
greeting.py
|
||||||
|
```
|
||||||
|
def greeting():
|
||||||
|
print("Hello")
|
||||||
|
```
|
||||||
|
````
|
||||||
|
|
||||||
|
The JSON and JSON (strict) strategies required the LLM to call the `write_file` function with
|
||||||
|
two parameters, as shown below.
|
||||||
|
For maximum simplicity, the LLM didn't have to specify the filename,
|
||||||
|
since the benchmark operates on one source file at a time.
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"explanation": "Here is the program you asked for which prints \"Hello\"",
|
||||||
|
"content": "def greeting():\n print(\"Hello\")\n"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
These strategies avoid actually *editing* source files, to keep
|
||||||
|
the task as
|
||||||
|
simple as possible.
|
||||||
|
The LLM is able to emit the whole source file intact,
|
||||||
|
which is much easier
|
||||||
|
than correctly formulating
|
||||||
|
instructions to edit
|
||||||
|
portions of a file.
|
||||||
|
|
||||||
|
This experimental setup is designed to quantify
|
||||||
|
the effects of JSON-wrapping on the LLMs ability to write code to solve a task.
|
||||||
|
|
||||||
|
## Results
|
||||||
|
|
||||||
|
Four of the strongest code editing models were benchmarked
|
||||||
|
to assess the impact of JSON-wrapping code:
|
||||||
|
|
||||||
|
- claude-3-5-sonnet-20240620
|
||||||
|
- deepseek-coder (V2 0724)
|
||||||
|
- gpt-4o-2024-05-13
|
||||||
|
- gpt-4o-2024-08-06
|
||||||
|
|
||||||
|
Each combination of model and code wrapping strategy was benchmarked 5 times.
|
||||||
|
|
||||||
|
## Overall coding skill
|
||||||
|
|
||||||
|
As shown in Figure 1,
|
||||||
|
all of the models did worse on the benchmark when asked to
|
||||||
|
return JSON-wrapped code in a tool function call.
|
||||||
|
Most did significantly worse, performing far below
|
||||||
|
the result obtained with the markdown strategy.
|
||||||
|
|
||||||
|
Some noteworthy observations:
|
||||||
|
|
||||||
|
- OpenAI's gpt-4o-2024-05-13 was the only model where the markdown and JSON results were
|
||||||
|
close. Using JSON only dropped the score by 0.3 percent, a difference which is
|
||||||
|
within the margin of error for 5 trials.
|
||||||
|
- The use of OpenAI's new strict mode offered no improvement
|
||||||
|
as compared to non-strict JSON.
|
||||||
|
Of course, both JSON results were well below the markdown result.
|
||||||
|
- The results from Sonnet and DeepSeek Coder suffered the worst harm from JSON wrapping.
|
||||||
|
|
||||||
|
## Syntax errors
|
||||||
|
|
||||||
|
Models tend to make more syntax errors when asked to wrap code in JSON.
|
||||||
|
Figure 2 shows the number of syntax errors found in the code produced by each
|
||||||
|
model and code wrapping strategy,
|
||||||
|
totaling up `SyntaxError` and `IndentationError` errors from all 5 runs.
|
||||||
|
|
||||||
|
|
||||||
|
Sonnet's results seems to indicate that the negative effects of JSON-wrapping
|
||||||
|
go beyond syntactic difficulties.
|
||||||
|
Sonnet avoided syntax errors regardless of the code wrapping strategy,
|
||||||
|
but its benchmark scores in Figure 1 were nonetheless lower with JSON.
|
||||||
|
This implies that JSON-wrapping may distract or challenge models in a way that
|
||||||
|
reduces their ability to reason about solving coding problems.
|
||||||
|
|
||||||
|
{% include code-in-json-syntax.js %}
|
||||||
|
|
||||||
|
> Figure 2: Number of `SyntaxError` and `IndentationError` errors found in model generated code,
|
||||||
|
> totaled from 5 runs.
|
||||||
|
> Models tend to make more syntax and formatting errors when asked to wrap code in JSON.
|
||||||
|
|
||||||
|
|
||||||
|
## Conclusions
|
||||||
|
|
||||||
|
While the quantitative results differ from the similar
|
||||||
|
[July 2023 experiments](/2023/07/02/benchmarks.html),
|
||||||
|
the conclusion seems unchanged: LLMs are bad at returning code in JSON.
|
||||||
|
|
||||||
|
OpenAI appears to be making progress in allowing LLMs to return code in
|
||||||
|
structured JSON responses without harming the code quality.
|
||||||
|
But it still seems premature to consider switching from plain text
|
||||||
|
to JSON-wrapped code.
|
||||||
|
|
||||||
|
|
||||||
|
## Notes on the aider leaderboard
|
||||||
|
|
||||||
|
The results presented here are not directly comparable to results
|
||||||
|
from the main
|
||||||
|
[aider LLM leaderboard](https://aider.chat/docs/leaderboards/).
|
||||||
|
A number of settings were changed to simplify the benchmark
|
||||||
|
in order to focus on comparing plain text and JSON-wrapped code.
|
|
@ -6,7 +6,7 @@
|
||||||
<rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
<rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
||||||
<cc:Work>
|
<cc:Work>
|
||||||
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
|
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
|
||||||
<dc:date>2024-08-14T06:29:51.758534</dc:date>
|
<dc:date>2024-08-15T09:51:56.911643</dc:date>
|
||||||
<dc:format>image/svg+xml</dc:format>
|
<dc:format>image/svg+xml</dc:format>
|
||||||
<dc:creator>
|
<dc:creator>
|
||||||
<cc:Agent>
|
<cc:Agent>
|
||||||
|
@ -39,7 +39,7 @@ z
|
||||||
</g>
|
</g>
|
||||||
<g id="PathCollection_1">
|
<g id="PathCollection_1">
|
||||||
<defs>
|
<defs>
|
||||||
<path id="C0_0_f73c302d91" d="M 0 5.477226
|
<path id="C0_0_b74b00717e" d="M 0 5.477226
|
||||||
C 1.452577 5.477226 2.845856 4.900111 3.872983 3.872983
|
C 1.452577 5.477226 2.845856 4.900111 3.872983 3.872983
|
||||||
C 4.900111 2.845856 5.477226 1.452577 5.477226 -0
|
C 4.900111 2.845856 5.477226 1.452577 5.477226 -0
|
||||||
C 5.477226 -1.452577 4.900111 -2.845856 3.872983 -3.872983
|
C 5.477226 -1.452577 4.900111 -2.845856 3.872983 -3.872983
|
||||||
|
@ -51,98 +51,98 @@ C -2.845856 4.900111 -1.452577 5.477226 0 5.477226
|
||||||
z
|
z
|
||||||
"/>
|
"/>
|
||||||
</defs>
|
</defs>
|
||||||
<g clip-path="url(#p00265ac60d)">
|
<g clip-path="url(#p463a66dc35)">
|
||||||
<use xlink:href="#C0_0_f73c302d91" x="560.040005" y="138.427962" style="fill: #add8e6; fill-opacity: 0.5; stroke: #add8e6; stroke-opacity: 0.5"/>
|
<use xlink:href="#C0_0_b74b00717e" x="560.040005" y="138.427962" style="fill: #add8e6; fill-opacity: 0.5; stroke: #add8e6; stroke-opacity: 0.5"/>
|
||||||
</g>
|
</g>
|
||||||
<g clip-path="url(#p00265ac60d)">
|
<g clip-path="url(#p463a66dc35)">
|
||||||
<use xlink:href="#C0_0_f73c302d91" x="560.040005" y="176.034844" style="fill: #add8e6; fill-opacity: 0.5; stroke: #add8e6; stroke-opacity: 0.5"/>
|
<use xlink:href="#C0_0_b74b00717e" x="560.040005" y="176.034844" style="fill: #add8e6; fill-opacity: 0.5; stroke: #add8e6; stroke-opacity: 0.5"/>
|
||||||
</g>
|
</g>
|
||||||
<g clip-path="url(#p00265ac60d)">
|
<g clip-path="url(#p463a66dc35)">
|
||||||
<use xlink:href="#C0_0_f73c302d91" x="518.297786" y="188.570471" style="fill: #008000; fill-opacity: 0.5; stroke: #008000; stroke-opacity: 0.5"/>
|
<use xlink:href="#C0_0_b74b00717e" x="518.297786" y="188.570471" style="fill: #008000; fill-opacity: 0.5; stroke: #008000; stroke-opacity: 0.5"/>
|
||||||
</g>
|
</g>
|
||||||
<g clip-path="url(#p00265ac60d)">
|
<g clip-path="url(#p463a66dc35)">
|
||||||
<use xlink:href="#C0_0_f73c302d91" x="124.728296" y="167.677759" style="fill: #008000; fill-opacity: 0.5; stroke: #008000; stroke-opacity: 0.5"/>
|
<use xlink:href="#C0_0_b74b00717e" x="124.728296" y="167.677759" style="fill: #008000; fill-opacity: 0.5; stroke: #008000; stroke-opacity: 0.5"/>
|
||||||
</g>
|
</g>
|
||||||
<g clip-path="url(#p00265ac60d)">
|
<g clip-path="url(#p463a66dc35)">
|
||||||
<use xlink:href="#C0_0_f73c302d91" x="248.762317" y="188.570471" style="fill: #008000; fill-opacity: 0.5; stroke: #008000; stroke-opacity: 0.5"/>
|
<use xlink:href="#C0_0_b74b00717e" x="248.762317" y="188.570471" style="fill: #008000; fill-opacity: 0.5; stroke: #008000; stroke-opacity: 0.5"/>
|
||||||
</g>
|
</g>
|
||||||
<g clip-path="url(#p00265ac60d)">
|
<g clip-path="url(#p463a66dc35)">
|
||||||
<use xlink:href="#C0_0_f73c302d91" x="518.297786" y="144.55649" style="fill: #ff0000; fill-opacity: 0.5; stroke: #ff0000; stroke-opacity: 0.5"/>
|
<use xlink:href="#C0_0_b74b00717e" x="518.297786" y="144.55649" style="fill: #ff0000; fill-opacity: 0.5; stroke: #ff0000; stroke-opacity: 0.5"/>
|
||||||
</g>
|
</g>
|
||||||
<g clip-path="url(#p00265ac60d)">
|
<g clip-path="url(#p463a66dc35)">
|
||||||
<use xlink:href="#C0_0_f73c302d91" x="140.232548" y="144.55649" style="fill: #ff0000; fill-opacity: 0.5; stroke: #ff0000; stroke-opacity: 0.5"/>
|
<use xlink:href="#C0_0_b74b00717e" x="140.232548" y="144.55649" style="fill: #ff0000; fill-opacity: 0.5; stroke: #ff0000; stroke-opacity: 0.5"/>
|
||||||
</g>
|
</g>
|
||||||
<g clip-path="url(#p00265ac60d)">
|
<g clip-path="url(#p463a66dc35)">
|
||||||
<use xlink:href="#C0_0_f73c302d91" x="248.762317" y="140.377948" style="fill: #ff0000; fill-opacity: 0.5; stroke: #ff0000; stroke-opacity: 0.5"/>
|
<use xlink:href="#C0_0_b74b00717e" x="248.762317" y="140.377948" style="fill: #ff0000; fill-opacity: 0.5; stroke: #ff0000; stroke-opacity: 0.5"/>
|
||||||
</g>
|
</g>
|
||||||
<g clip-path="url(#p00265ac60d)">
|
<g clip-path="url(#p463a66dc35)">
|
||||||
<use xlink:href="#C0_0_f73c302d91" x="422.887001" y="146.785046" style="fill: #ff0000; fill-opacity: 0.5; stroke: #ff0000; stroke-opacity: 0.5"/>
|
<use xlink:href="#C0_0_b74b00717e" x="422.887001" y="146.785046" style="fill: #ff0000; fill-opacity: 0.5; stroke: #ff0000; stroke-opacity: 0.5"/>
|
||||||
</g>
|
</g>
|
||||||
<g clip-path="url(#p00265ac60d)">
|
<g clip-path="url(#p463a66dc35)">
|
||||||
<use xlink:href="#C0_0_f73c302d91" x="607.745398" y="150.963589" style="fill: #ff0000; fill-opacity: 0.5; stroke: #ff0000; stroke-opacity: 0.5"/>
|
<use xlink:href="#C0_0_b74b00717e" x="607.745398" y="150.963589" style="fill: #ff0000; fill-opacity: 0.5; stroke: #ff0000; stroke-opacity: 0.5"/>
|
||||||
</g>
|
</g>
|
||||||
<g clip-path="url(#p00265ac60d)">
|
<g clip-path="url(#p463a66dc35)">
|
||||||
<use xlink:href="#C0_0_f73c302d91" x="618.479111" y="191.913305" style="fill: #add8e6; fill-opacity: 0.5; stroke: #add8e6; stroke-opacity: 0.5"/>
|
<use xlink:href="#C0_0_b74b00717e" x="618.479111" y="191.913305" style="fill: #add8e6; fill-opacity: 0.5; stroke: #add8e6; stroke-opacity: 0.5"/>
|
||||||
</g>
|
</g>
|
||||||
<g clip-path="url(#p00265ac60d)">
|
<g clip-path="url(#p463a66dc35)">
|
||||||
<use xlink:href="#C0_0_f73c302d91" x="601.782223" y="240.941537" style="fill: #add8e6; fill-opacity: 0.5; stroke: #add8e6; stroke-opacity: 0.5"/>
|
<use xlink:href="#C0_0_b74b00717e" x="601.782223" y="240.941537" style="fill: #add8e6; fill-opacity: 0.5; stroke: #add8e6; stroke-opacity: 0.5"/>
|
||||||
</g>
|
</g>
|
||||||
<g clip-path="url(#p00265ac60d)">
|
<g clip-path="url(#p463a66dc35)">
|
||||||
<use xlink:href="#C0_0_f73c302d91" x="639.946538" y="159.320674" style="fill: #add8e6; fill-opacity: 0.5; stroke: #add8e6; stroke-opacity: 0.5"/>
|
<use xlink:href="#C0_0_b74b00717e" x="639.946538" y="159.320674" style="fill: #add8e6; fill-opacity: 0.5; stroke: #add8e6; stroke-opacity: 0.5"/>
|
||||||
</g>
|
</g>
|
||||||
<g clip-path="url(#p00265ac60d)">
|
<g clip-path="url(#p463a66dc35)">
|
||||||
<use xlink:href="#C0_0_f73c302d91" x="530.224134" y="224.227367" style="fill: #add8e6; fill-opacity: 0.5; stroke: #add8e6; stroke-opacity: 0.5"/>
|
<use xlink:href="#C0_0_b74b00717e" x="530.224134" y="224.227367" style="fill: #add8e6; fill-opacity: 0.5; stroke: #add8e6; stroke-opacity: 0.5"/>
|
||||||
</g>
|
</g>
|
||||||
<g clip-path="url(#p00265ac60d)">
|
<g clip-path="url(#p463a66dc35)">
|
||||||
<use xlink:href="#C0_0_f73c302d91" x="648.294981" y="125.892334" style="fill: #800080; fill-opacity: 0.5; stroke: #800080; stroke-opacity: 0.5"/>
|
<use xlink:href="#C0_0_b74b00717e" x="648.294981" y="125.892334" style="fill: #800080; fill-opacity: 0.5; stroke: #800080; stroke-opacity: 0.5"/>
|
||||||
</g>
|
</g>
|
||||||
<g clip-path="url(#p00265ac60d)">
|
<g clip-path="url(#p463a66dc35)">
|
||||||
<use xlink:href="#C0_0_f73c302d91" x="693.615105" y="113.356707" style="fill: #add8e6; fill-opacity: 0.5; stroke: #add8e6; stroke-opacity: 0.5"/>
|
<use xlink:href="#C0_0_b74b00717e" x="693.615105" y="113.356707" style="fill: #add8e6; fill-opacity: 0.5; stroke: #add8e6; stroke-opacity: 0.5"/>
|
||||||
</g>
|
</g>
|
||||||
<g clip-path="url(#p00265ac60d)">
|
<g clip-path="url(#p463a66dc35)">
|
||||||
<use xlink:href="#C0_0_f73c302d91" x="575.544257" y="196.927556" style="fill: #add8e6; fill-opacity: 0.5; stroke: #add8e6; stroke-opacity: 0.5"/>
|
<use xlink:href="#C0_0_b74b00717e" x="575.544257" y="196.927556" style="fill: #add8e6; fill-opacity: 0.5; stroke: #add8e6; stroke-opacity: 0.5"/>
|
||||||
</g>
|
</g>
|
||||||
<g clip-path="url(#p00265ac60d)">
|
<g clip-path="url(#p463a66dc35)">
|
||||||
<use xlink:href="#C0_0_f73c302d91" x="727.008879" y="174.084857" style="fill: #ff0000; fill-opacity: 0.5; stroke: #ff0000; stroke-opacity: 0.5"/>
|
<use xlink:href="#C0_0_b74b00717e" x="727.008879" y="174.084857" style="fill: #add8e6; fill-opacity: 0.5; stroke: #add8e6; stroke-opacity: 0.5"/>
|
||||||
</g>
|
</g>
|
||||||
<g clip-path="url(#p00265ac60d)">
|
<g clip-path="url(#p463a66dc35)">
|
||||||
<use xlink:href="#C0_0_f73c302d91" x="703.156183" y="134.249419" style="fill: #add8e6; fill-opacity: 0.5; stroke: #add8e6; stroke-opacity: 0.5"/>
|
<use xlink:href="#C0_0_b74b00717e" x="703.156183" y="134.249419" style="fill: #add8e6; fill-opacity: 0.5; stroke: #add8e6; stroke-opacity: 0.5"/>
|
||||||
</g>
|
</g>
|
||||||
<g clip-path="url(#p00265ac60d)">
|
<g clip-path="url(#p463a66dc35)">
|
||||||
<use xlink:href="#C0_0_f73c302d91" x="732.972054" y="150.963589" style="fill: #add8e6; fill-opacity: 0.5; stroke: #add8e6; stroke-opacity: 0.5"/>
|
<use xlink:href="#C0_0_b74b00717e" x="732.972054" y="150.963589" style="fill: #add8e6; fill-opacity: 0.5; stroke: #add8e6; stroke-opacity: 0.5"/>
|
||||||
</g>
|
</g>
|
||||||
<g clip-path="url(#p00265ac60d)">
|
<g clip-path="url(#p463a66dc35)">
|
||||||
<use xlink:href="#C0_0_f73c302d91" x="732.972054" y="144.55649" style="fill: #add8e6; fill-opacity: 0.5; stroke: #add8e6; stroke-opacity: 0.5"/>
|
<use xlink:href="#C0_0_b74b00717e" x="732.972054" y="144.55649" style="fill: #add8e6; fill-opacity: 0.5; stroke: #add8e6; stroke-opacity: 0.5"/>
|
||||||
</g>
|
</g>
|
||||||
<g clip-path="url(#p00265ac60d)">
|
<g clip-path="url(#p463a66dc35)">
|
||||||
<use xlink:href="#C0_0_f73c302d91" x="734.164688" y="125.892334" style="fill: #add8e6; fill-opacity: 0.5; stroke: #add8e6; stroke-opacity: 0.5"/>
|
<use xlink:href="#C0_0_b74b00717e" x="734.164688" y="125.892334" style="fill: #add8e6; fill-opacity: 0.5; stroke: #add8e6; stroke-opacity: 0.5"/>
|
||||||
</g>
|
</g>
|
||||||
<g clip-path="url(#p00265ac60d)">
|
<g clip-path="url(#p463a66dc35)">
|
||||||
<use xlink:href="#C0_0_f73c302d91" x="734.164688" y="161.27066" style="fill: #add8e6; fill-opacity: 0.5; stroke: #add8e6; stroke-opacity: 0.5"/>
|
<use xlink:href="#C0_0_b74b00717e" x="734.164688" y="161.27066" style="fill: #add8e6; fill-opacity: 0.5; stroke: #add8e6; stroke-opacity: 0.5"/>
|
||||||
</g>
|
</g>
|
||||||
<g clip-path="url(#p00265ac60d)">
|
<g clip-path="url(#p463a66dc35)">
|
||||||
<use xlink:href="#C0_0_f73c302d91" x="732.972054" y="224.227367" style="fill: #add8e6; fill-opacity: 0.5; stroke: #add8e6; stroke-opacity: 0.5"/>
|
<use xlink:href="#C0_0_b74b00717e" x="732.972054" y="224.227367" style="fill: #add8e6; fill-opacity: 0.5; stroke: #add8e6; stroke-opacity: 0.5"/>
|
||||||
</g>
|
</g>
|
||||||
<g clip-path="url(#p00265ac60d)">
|
<g clip-path="url(#p463a66dc35)">
|
||||||
<use xlink:href="#C0_0_f73c302d91" x="732.972054" y="165.727772" style="fill: #add8e6; fill-opacity: 0.5; stroke: #add8e6; stroke-opacity: 0.5"/>
|
<use xlink:href="#C0_0_b74b00717e" x="732.972054" y="165.727772" style="fill: #add8e6; fill-opacity: 0.5; stroke: #add8e6; stroke-opacity: 0.5"/>
|
||||||
</g>
|
</g>
|
||||||
<g clip-path="url(#p00265ac60d)">
|
<g clip-path="url(#p463a66dc35)">
|
||||||
<use xlink:href="#C0_0_f73c302d91" x="749.668941" y="130.070877" style="fill: #800080; fill-opacity: 0.5; stroke: #800080; stroke-opacity: 0.5"/>
|
<use xlink:href="#C0_0_b74b00717e" x="749.668941" y="130.070877" style="fill: #800080; fill-opacity: 0.5; stroke: #800080; stroke-opacity: 0.5"/>
|
||||||
</g>
|
</g>
|
||||||
<g clip-path="url(#p00265ac60d)">
|
<g clip-path="url(#p463a66dc35)">
|
||||||
<use xlink:href="#C0_0_f73c302d91" x="752.054211" y="136.199406" style="fill: #800080; fill-opacity: 0.5; stroke: #800080; stroke-opacity: 0.5"/>
|
<use xlink:href="#C0_0_b74b00717e" x="752.054211" y="136.199406" style="fill: #800080; fill-opacity: 0.5; stroke: #800080; stroke-opacity: 0.5"/>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<g id="matplotlib.axis_1">
|
<g id="matplotlib.axis_1">
|
||||||
<g id="xtick_1">
|
<g id="xtick_1">
|
||||||
<g id="line2d_1">
|
<g id="line2d_1">
|
||||||
<defs>
|
<defs>
|
||||||
<path id="mf05c697576" d="M 0 0
|
<path id="m058b7e9181" d="M 0 0
|
||||||
L 0 3.5
|
L 0 3.5
|
||||||
" style="stroke: #000000; stroke-width: 0.8"/>
|
" style="stroke: #000000; stroke-width: 0.8"/>
|
||||||
</defs>
|
</defs>
|
||||||
<g>
|
<g>
|
||||||
<use xlink:href="#mf05c697576" x="124.728296" y="328.969498" style="stroke: #000000; stroke-width: 0.8"/>
|
<use xlink:href="#m058b7e9181" x="124.728296" y="328.969498" style="stroke: #000000; stroke-width: 0.8"/>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<g id="text_1">
|
<g id="text_1">
|
||||||
|
@ -250,7 +250,7 @@ z
|
||||||
<g id="xtick_2">
|
<g id="xtick_2">
|
||||||
<g id="line2d_2">
|
<g id="line2d_2">
|
||||||
<g>
|
<g>
|
||||||
<use xlink:href="#mf05c697576" x="197.47902" y="328.969498" style="stroke: #000000; stroke-width: 0.8"/>
|
<use xlink:href="#m058b7e9181" x="197.47902" y="328.969498" style="stroke: #000000; stroke-width: 0.8"/>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<g id="text_2">
|
<g id="text_2">
|
||||||
|
@ -297,7 +297,7 @@ z
|
||||||
<g id="xtick_3">
|
<g id="xtick_3">
|
||||||
<g id="line2d_3">
|
<g id="line2d_3">
|
||||||
<g>
|
<g>
|
||||||
<use xlink:href="#mf05c697576" x="270.229744" y="328.969498" style="stroke: #000000; stroke-width: 0.8"/>
|
<use xlink:href="#m058b7e9181" x="270.229744" y="328.969498" style="stroke: #000000; stroke-width: 0.8"/>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<g id="text_3">
|
<g id="text_3">
|
||||||
|
@ -332,7 +332,7 @@ z
|
||||||
<g id="xtick_4">
|
<g id="xtick_4">
|
||||||
<g id="line2d_4">
|
<g id="line2d_4">
|
||||||
<g>
|
<g>
|
||||||
<use xlink:href="#mf05c697576" x="344.173102" y="328.969498" style="stroke: #000000; stroke-width: 0.8"/>
|
<use xlink:href="#m058b7e9181" x="344.173102" y="328.969498" style="stroke: #000000; stroke-width: 0.8"/>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<g id="text_4">
|
<g id="text_4">
|
||||||
|
@ -383,7 +383,7 @@ z
|
||||||
<g id="xtick_5">
|
<g id="xtick_5">
|
||||||
<g id="line2d_5">
|
<g id="line2d_5">
|
||||||
<g>
|
<g>
|
||||||
<use xlink:href="#mf05c697576" x="416.923826" y="328.969498" style="stroke: #000000; stroke-width: 0.8"/>
|
<use xlink:href="#m058b7e9181" x="416.923826" y="328.969498" style="stroke: #000000; stroke-width: 0.8"/>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<g id="text_5">
|
<g id="text_5">
|
||||||
|
@ -415,7 +415,7 @@ z
|
||||||
<g id="xtick_6">
|
<g id="xtick_6">
|
||||||
<g id="line2d_6">
|
<g id="line2d_6">
|
||||||
<g>
|
<g>
|
||||||
<use xlink:href="#mf05c697576" x="489.67455" y="328.969498" style="stroke: #000000; stroke-width: 0.8"/>
|
<use xlink:href="#m058b7e9181" x="489.67455" y="328.969498" style="stroke: #000000; stroke-width: 0.8"/>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<g id="text_6">
|
<g id="text_6">
|
||||||
|
@ -455,7 +455,7 @@ z
|
||||||
<g id="xtick_7">
|
<g id="xtick_7">
|
||||||
<g id="line2d_7">
|
<g id="line2d_7">
|
||||||
<g>
|
<g>
|
||||||
<use xlink:href="#mf05c697576" x="561.23264" y="328.969498" style="stroke: #000000; stroke-width: 0.8"/>
|
<use xlink:href="#m058b7e9181" x="561.23264" y="328.969498" style="stroke: #000000; stroke-width: 0.8"/>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<g id="text_7">
|
<g id="text_7">
|
||||||
|
@ -474,7 +474,7 @@ z
|
||||||
<g id="xtick_8">
|
<g id="xtick_8">
|
||||||
<g id="line2d_8">
|
<g id="line2d_8">
|
||||||
<g>
|
<g>
|
||||||
<use xlink:href="#mf05c697576" x="633.983364" y="328.969498" style="stroke: #000000; stroke-width: 0.8"/>
|
<use xlink:href="#m058b7e9181" x="633.983364" y="328.969498" style="stroke: #000000; stroke-width: 0.8"/>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<g id="text_8">
|
<g id="text_8">
|
||||||
|
@ -493,7 +493,7 @@ z
|
||||||
<g id="xtick_9">
|
<g id="xtick_9">
|
||||||
<g id="line2d_9">
|
<g id="line2d_9">
|
||||||
<g>
|
<g>
|
||||||
<use xlink:href="#mf05c697576" x="706.734088" y="328.969498" style="stroke: #000000; stroke-width: 0.8"/>
|
<use xlink:href="#m058b7e9181" x="706.734088" y="328.969498" style="stroke: #000000; stroke-width: 0.8"/>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<g id="text_9">
|
<g id="text_9">
|
||||||
|
@ -512,7 +512,7 @@ z
|
||||||
<g id="xtick_10">
|
<g id="xtick_10">
|
||||||
<g id="line2d_10">
|
<g id="line2d_10">
|
||||||
<g>
|
<g>
|
||||||
<use xlink:href="#mf05c697576" x="780.677446" y="328.969498" style="stroke: #000000; stroke-width: 0.8"/>
|
<use xlink:href="#m058b7e9181" x="780.677446" y="328.969498" style="stroke: #000000; stroke-width: 0.8"/>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<g id="text_10">
|
<g id="text_10">
|
||||||
|
@ -789,16 +789,16 @@ z
|
||||||
<g id="line2d_11">
|
<g id="line2d_11">
|
||||||
<path d="M 93.362 328.969498
|
<path d="M 93.362 328.969498
|
||||||
L 783.420506 328.969498
|
L 783.420506 328.969498
|
||||||
" clip-path="url(#p00265ac60d)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.2; stroke-linecap: square"/>
|
" clip-path="url(#p463a66dc35)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.2; stroke-linecap: square"/>
|
||||||
</g>
|
</g>
|
||||||
<g id="line2d_12">
|
<g id="line2d_12">
|
||||||
<defs>
|
<defs>
|
||||||
<path id="mba261bd0cb" d="M 0 0
|
<path id="m6fbb20319c" d="M 0 0
|
||||||
L -3.5 0
|
L -3.5 0
|
||||||
" style="stroke: #000000; stroke-width: 0.8"/>
|
" style="stroke: #000000; stroke-width: 0.8"/>
|
||||||
</defs>
|
</defs>
|
||||||
<g>
|
<g>
|
||||||
<use xlink:href="#mba261bd0cb" x="93.362" y="328.969498" style="stroke: #000000; stroke-width: 0.8"/>
|
<use xlink:href="#m6fbb20319c" x="93.362" y="328.969498" style="stroke: #000000; stroke-width: 0.8"/>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<g id="text_12">
|
<g id="text_12">
|
||||||
|
@ -812,11 +812,11 @@ L -3.5 0
|
||||||
<g id="line2d_13">
|
<g id="line2d_13">
|
||||||
<path d="M 93.362 273.255599
|
<path d="M 93.362 273.255599
|
||||||
L 783.420506 273.255599
|
L 783.420506 273.255599
|
||||||
" clip-path="url(#p00265ac60d)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.2; stroke-linecap: square"/>
|
" clip-path="url(#p463a66dc35)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.2; stroke-linecap: square"/>
|
||||||
</g>
|
</g>
|
||||||
<g id="line2d_14">
|
<g id="line2d_14">
|
||||||
<g>
|
<g>
|
||||||
<use xlink:href="#mba261bd0cb" x="93.362" y="273.255599" style="stroke: #000000; stroke-width: 0.8"/>
|
<use xlink:href="#m6fbb20319c" x="93.362" y="273.255599" style="stroke: #000000; stroke-width: 0.8"/>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<g id="text_13">
|
<g id="text_13">
|
||||||
|
@ -831,11 +831,11 @@ L 783.420506 273.255599
|
||||||
<g id="line2d_15">
|
<g id="line2d_15">
|
||||||
<path d="M 93.362 217.541699
|
<path d="M 93.362 217.541699
|
||||||
L 783.420506 217.541699
|
L 783.420506 217.541699
|
||||||
" clip-path="url(#p00265ac60d)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.2; stroke-linecap: square"/>
|
" clip-path="url(#p463a66dc35)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.2; stroke-linecap: square"/>
|
||||||
</g>
|
</g>
|
||||||
<g id="line2d_16">
|
<g id="line2d_16">
|
||||||
<g>
|
<g>
|
||||||
<use xlink:href="#mba261bd0cb" x="93.362" y="217.541699" style="stroke: #000000; stroke-width: 0.8"/>
|
<use xlink:href="#m6fbb20319c" x="93.362" y="217.541699" style="stroke: #000000; stroke-width: 0.8"/>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<g id="text_14">
|
<g id="text_14">
|
||||||
|
@ -850,11 +850,11 @@ L 783.420506 217.541699
|
||||||
<g id="line2d_17">
|
<g id="line2d_17">
|
||||||
<path d="M 93.362 161.827799
|
<path d="M 93.362 161.827799
|
||||||
L 783.420506 161.827799
|
L 783.420506 161.827799
|
||||||
" clip-path="url(#p00265ac60d)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.2; stroke-linecap: square"/>
|
" clip-path="url(#p463a66dc35)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.2; stroke-linecap: square"/>
|
||||||
</g>
|
</g>
|
||||||
<g id="line2d_18">
|
<g id="line2d_18">
|
||||||
<g>
|
<g>
|
||||||
<use xlink:href="#mba261bd0cb" x="93.362" y="161.827799" style="stroke: #000000; stroke-width: 0.8"/>
|
<use xlink:href="#m6fbb20319c" x="93.362" y="161.827799" style="stroke: #000000; stroke-width: 0.8"/>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<g id="text_15">
|
<g id="text_15">
|
||||||
|
@ -901,11 +901,11 @@ z
|
||||||
<g id="line2d_19">
|
<g id="line2d_19">
|
||||||
<path d="M 93.362 106.1139
|
<path d="M 93.362 106.1139
|
||||||
L 783.420506 106.1139
|
L 783.420506 106.1139
|
||||||
" clip-path="url(#p00265ac60d)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.2; stroke-linecap: square"/>
|
" clip-path="url(#p463a66dc35)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.2; stroke-linecap: square"/>
|
||||||
</g>
|
</g>
|
||||||
<g id="line2d_20">
|
<g id="line2d_20">
|
||||||
<g>
|
<g>
|
||||||
<use xlink:href="#mba261bd0cb" x="93.362" y="106.1139" style="stroke: #000000; stroke-width: 0.8"/>
|
<use xlink:href="#m6fbb20319c" x="93.362" y="106.1139" style="stroke: #000000; stroke-width: 0.8"/>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<g id="text_16">
|
<g id="text_16">
|
||||||
|
@ -961,11 +961,11 @@ z
|
||||||
<g id="line2d_21">
|
<g id="line2d_21">
|
||||||
<path d="M 93.362 50.4
|
<path d="M 93.362 50.4
|
||||||
L 783.420506 50.4
|
L 783.420506 50.4
|
||||||
" clip-path="url(#p00265ac60d)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.2; stroke-linecap: square"/>
|
" clip-path="url(#p463a66dc35)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.2; stroke-linecap: square"/>
|
||||||
</g>
|
</g>
|
||||||
<g id="line2d_22">
|
<g id="line2d_22">
|
||||||
<g>
|
<g>
|
||||||
<use xlink:href="#mba261bd0cb" x="93.362" y="50.4" style="stroke: #000000; stroke-width: 0.8"/>
|
<use xlink:href="#m6fbb20319c" x="93.362" y="50.4" style="stroke: #000000; stroke-width: 0.8"/>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<g id="text_17">
|
<g id="text_17">
|
||||||
|
@ -1317,7 +1317,7 @@ z
|
||||||
<path d="M 648.294981 125.892334
|
<path d="M 648.294981 125.892334
|
||||||
L 749.668941 130.070877
|
L 749.668941 130.070877
|
||||||
L 752.054211 136.199406
|
L 752.054211 136.199406
|
||||||
" clip-path="url(#p00265ac60d)" style="fill: none; stroke: #800080; stroke-opacity: 0.5; stroke-linecap: square"/>
|
" clip-path="url(#p463a66dc35)" style="fill: none; stroke: #800080; stroke-opacity: 0.5; stroke-linecap: square"/>
|
||||||
</g>
|
</g>
|
||||||
<g id="line2d_24">
|
<g id="line2d_24">
|
||||||
<path d="M 140.232548 144.55649
|
<path d="M 140.232548 144.55649
|
||||||
|
@ -1325,14 +1325,13 @@ L 248.762317 140.377948
|
||||||
L 422.887001 146.785046
|
L 422.887001 146.785046
|
||||||
L 518.297786 144.55649
|
L 518.297786 144.55649
|
||||||
L 607.745398 150.963589
|
L 607.745398 150.963589
|
||||||
L 727.008879 174.084857
|
" clip-path="url(#p463a66dc35)" style="fill: none; stroke: #ff0000; stroke-opacity: 0.5; stroke-linecap: square"/>
|
||||||
" clip-path="url(#p00265ac60d)" style="fill: none; stroke: #ff0000; stroke-opacity: 0.5; stroke-linecap: square"/>
|
|
||||||
</g>
|
</g>
|
||||||
<g id="line2d_25">
|
<g id="line2d_25">
|
||||||
<path d="M 124.728296 167.677759
|
<path d="M 124.728296 167.677759
|
||||||
L 248.762317 188.570471
|
L 248.762317 188.570471
|
||||||
L 518.297786 188.570471
|
L 518.297786 188.570471
|
||||||
" clip-path="url(#p00265ac60d)" style="fill: none; stroke: #008000; stroke-opacity: 0.5; stroke-linecap: square"/>
|
" clip-path="url(#p463a66dc35)" style="fill: none; stroke: #008000; stroke-opacity: 0.5; stroke-linecap: square"/>
|
||||||
</g>
|
</g>
|
||||||
<g id="patch_3">
|
<g id="patch_3">
|
||||||
<path d="M 93.362 328.969498
|
<path d="M 93.362 328.969498
|
||||||
|
@ -2210,7 +2209,7 @@ z
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<defs>
|
<defs>
|
||||||
<clipPath id="p00265ac60d">
|
<clipPath id="p463a66dc35">
|
||||||
<rect x="93.362" y="50.4" width="690.058506" height="278.569498"/>
|
<rect x="93.362" y="50.4" width="690.058506" height="278.569498"/>
|
||||||
</clipPath>
|
</clipPath>
|
||||||
</defs>
|
</defs>
|
||||||
|
|
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 74 KiB |
|
@ -6,6 +6,24 @@ from matplotlib import rc
|
||||||
from aider.dump import dump # noqa: 401
|
from aider.dump import dump # noqa: 401
|
||||||
|
|
||||||
|
|
||||||
|
def get_model_color(model):
|
||||||
|
default = "lightblue"
|
||||||
|
|
||||||
|
if model == "gpt-4o-mini":
|
||||||
|
return default
|
||||||
|
|
||||||
|
if "-4o" in model:
|
||||||
|
return "purple"
|
||||||
|
|
||||||
|
if "gpt-4" in model:
|
||||||
|
return "red"
|
||||||
|
|
||||||
|
if "gpt-3.5" in model:
|
||||||
|
return "green"
|
||||||
|
|
||||||
|
return default
|
||||||
|
|
||||||
|
|
||||||
def plot_over_time(yaml_file):
|
def plot_over_time(yaml_file):
|
||||||
with open(yaml_file, "r") as file:
|
with open(yaml_file, "r") as file:
|
||||||
data = yaml.safe_load(file)
|
data = yaml.safe_load(file)
|
||||||
|
@ -49,14 +67,7 @@ def plot_over_time(yaml_file):
|
||||||
spine.set_edgecolor("#DDDDDD")
|
spine.set_edgecolor("#DDDDDD")
|
||||||
spine.set_linewidth(0.5)
|
spine.set_linewidth(0.5)
|
||||||
|
|
||||||
colors = [
|
colors = [get_model_color(model) for model in models]
|
||||||
(
|
|
||||||
"purple"
|
|
||||||
if "-4o" in model and "gpt-4o-mini" not in model
|
|
||||||
else "red" if "gpt-4" in model else "green" if "gpt-3.5" in model else "lightblue"
|
|
||||||
)
|
|
||||||
for model in models
|
|
||||||
]
|
|
||||||
|
|
||||||
# Separate data points by color
|
# Separate data points by color
|
||||||
purple_points = [(d, r) for d, r, c in zip(dates, pass_rates, colors) if c == "purple"]
|
purple_points = [(d, r) for d, r, c in zip(dates, pass_rates, colors) if c == "purple"]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue