Skip to content

Commit

Permalink
Fix various JSON input bugs in correction
Browse files Browse the repository at this point in the history
By not having correct_json(json_str) in the try/except,
it was still easily possible to throw Invalid JSON errors.

When responses were received with no JSON at all, parsing
would fail on attempting to locate the braces.
  • Loading branch information
STRML committed Apr 12, 2023
1 parent 16b37ff commit 434f27f
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions scripts/json_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
"""


def fix_and_parse_json(
def fix_and_parse_json(
json_str: str,
try_to_fix_with_gpt: bool = True
) -> Union[str, Dict[Any, Any]]:
Expand All @@ -35,8 +35,8 @@ def fix_and_parse_json(
json_str = json_str.replace('\t', '')
return json.loads(json_str)
except json.JSONDecodeError as _: # noqa: F841
json_str = correct_json(json_str)
try:
json_str = correct_json(json_str)
return json.loads(json_str)
except json.JSONDecodeError as _: # noqa: F841
pass
Expand All @@ -53,6 +53,7 @@ def fix_and_parse_json(
last_brace_index = json_str.rindex("}")
json_str = json_str[:last_brace_index+1]
return json.loads(json_str)
# Can throw a ValueError if there is no "{" or "}" in the json_str
except (json.JSONDecodeError, ValueError) as e: # noqa: F841
if try_to_fix_with_gpt:
print("Warning: Failed to parse AI output, attempting to fix."
Expand Down

0 comments on commit 434f27f

Please sign in to comment.