Files
Auto-GPT/autogpts/autogpt/tests/unit/_test_json_parser.py
merwanehamadi 8f41dbe27d Rename Auto-GPT to AutoGPT (#5301)
* Rename to AutoGPT

Signed-off-by: Merwane Hamadi <merwanehamadi@gmail.com>

* Update autogpts/autogpt/BULLETIN.md

Co-authored-by: Reinier van der Leer <pwuts@agpt.co>

* Update BULLETIN.md

* Update docker-compose.yml

* Update autogpts/forge/tutorials/001_getting_started.md

Co-authored-by: Reinier van der Leer <pwuts@agpt.co>

* Update autogpts/autogpt/tests/unit/test_logs.py

Co-authored-by: Reinier van der Leer <pwuts@agpt.co>

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update introduction.md

* Update plugins.md

---------

Signed-off-by: Merwane Hamadi <merwanehamadi@gmail.com>
Co-authored-by: Reinier van der Leer <pwuts@agpt.co>
2023-09-22 15:49:29 -07:00

114 lines
5.3 KiB
Python

import pytest
from autogpt.json_utils.json_fix_llm import fix_and_parse_json
def test_valid_json():
"""Test that a valid JSON string is parsed correctly."""
json_str = '{"name": "John", "age": 30, "city": "New York"}'
obj = fix_and_parse_json(json_str)
assert obj == {"name": "John", "age": 30, "city": "New York"}
def test_invalid_json_minor():
"""Test that an invalid JSON string can be fixed with gpt."""
json_str = '{"name": "John", "age": 30, "city": "New York",}'
assert fix_and_parse_json(json_str, try_to_fix_with_gpt=False) == {
"name": "John",
"age": 30,
"city": "New York",
}
def test_invalid_json_major_with_gpt():
"""Test that an invalid JSON string raises an error when try_to_fix_with_gpt is False."""
json_str = 'BEGIN: "name": "John" - "age": 30 - "city": "New York" :END'
assert fix_and_parse_json(json_str, try_to_fix_with_gpt=True) == {
"name": "John",
"age": 30,
"city": "New York",
}
def test_invalid_json_major_without_gpt():
"""Test that a REALLY invalid JSON string raises an error when try_to_fix_with_gpt is False."""
json_str = 'BEGIN: "name": "John" - "age": 30 - "city": "New York" :END'
# Assert that this raises an exception:
with pytest.raises(Exception):
fix_and_parse_json(json_str, try_to_fix_with_gpt=False)
def test_invalid_json_leading_sentence_with_gpt():
"""Test that a REALLY invalid JSON string raises an error when try_to_fix_with_gpt is False."""
json_str = """I suggest we start by browsing the repository to find any issues that we can fix.
{
"command": {
"name": "browse_website",
"args":{
"url": "https://github.com/Significant-Gravitas/AutoGPT"
}
},
"thoughts":
{
"text": "I suggest we start browsing the repository to find any issues that we can fix.",
"reasoning": "Browsing the repository will give us an idea of the current state of the codebase and identify any issues that we can address to improve the repo.",
"plan": "- Look through the repository to find any issues.\n- Investigate any issues to determine what needs to be fixed\n- Identify possible solutions to fix the issues\n- Open Pull Requests with fixes",
"criticism": "I should be careful while browsing so as not to accidentally introduce any new bugs or issues.",
"speak": "I will start browsing the repository to find any issues we can fix."
}
}"""
good_obj = {
"command": {
"name": "browse_website",
"args": {"url": "https://github.com/Significant-Gravitas/AutoGPT"},
},
"thoughts": {
"text": "I suggest we start browsing the repository to find any issues that we can fix.",
"reasoning": "Browsing the repository will give us an idea of the current state of the codebase and identify any issues that we can address to improve the repo.",
"plan": "- Look through the repository to find any issues.\n- Investigate any issues to determine what needs to be fixed\n- Identify possible solutions to fix the issues\n- Open Pull Requests with fixes",
"criticism": "I should be careful while browsing so as not to accidentally introduce any new bugs or issues.",
"speak": "I will start browsing the repository to find any issues we can fix.",
},
}
# Assert that this raises an exception:
assert fix_and_parse_json(json_str, try_to_fix_with_gpt=False) == good_obj
def test_invalid_json_leading_sentence_with_gpt(self):
"""Test that a REALLY invalid JSON string raises an error when try_to_fix_with_gpt is False."""
json_str = """I will first need to browse the repository (https://github.com/Significant-Gravitas/AutoGPT) and identify any potential bugs that need fixing. I will use the "browse_website" command for this.
{
"command": {
"name": "browse_website",
"args":{
"url": "https://github.com/Significant-Gravitas/AutoGPT"
}
},
"thoughts":
{
"text": "Browsing the repository to identify potential bugs",
"reasoning": "Before fixing bugs, I need to identify what needs fixing. I will use the 'browse_website' command to analyze the repository.",
"plan": "- Analyze the repository for potential bugs and areas of improvement",
"criticism": "I need to ensure I am thorough and pay attention to detail while browsing the repository.",
"speak": "I am browsing the repository to identify potential bugs."
}
}"""
good_obj = {
"command": {
"name": "browse_website",
"args": {"url": "https://github.com/Significant-Gravitas/AutoGPT"},
},
"thoughts": {
"text": "Browsing the repository to identify potential bugs",
"reasoning": "Before fixing bugs, I need to identify what needs fixing. I will use the 'browse_website' command to analyze the repository.",
"plan": "- Analyze the repository for potential bugs and areas of improvement",
"criticism": "I need to ensure I am thorough and pay attention to detail while browsing the repository.",
"speak": "I am browsing the repository to identify potential bugs.",
},
}
assert fix_and_parse_json(json_str, try_to_fix_with_gpt=False) == good_obj