From 434f27fb51f1edd32be46cc2f8d5bae69e311497 Mon Sep 17 00:00:00 2001 From: Samuel Reed Date: Mon, 10 Apr 2023 09:10:26 -0400 Subject: [PATCH] Fix various JSON input bugs in correction 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. --- scripts/json_parser.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/json_parser.py b/scripts/json_parser.py index e96c43f6649a..5524425559a5 100644 --- a/scripts/json_parser.py +++ b/scripts/json_parser.py @@ -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]]: @@ -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 @@ -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."