diff --git a/requirements.txt b/requirements.txt index e731354b..22682e87 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,5 @@ beautifulsoup4 colorama==0.4.6 -dirtyjson==1.0. openai==0.27.2 playsound==1.3.0 python-dotenv==1.0.0 diff --git a/scripts/json_parser.py b/scripts/json_parser.py index 8154b584..11ff9ed2 100644 --- a/scripts/json_parser.py +++ b/scripts/json_parser.py @@ -1,4 +1,4 @@ -import dirtyjson +import json from call_ai_function import call_ai_function from config import Config cfg = Config() @@ -24,7 +24,7 @@ def fix_and_parse_json(json_str: str, try_to_fix_with_gpt: bool = True): """ try: - return dirtyjson.loads(json_str) + return json.loads(json_str) except Exception as e: # Let's do something manually - sometimes GPT responds with something BEFORE the braces: # "I'm sorry, I don't understand. Please try again."{"text": "I'm sorry, I don't understand. Please try again.", "confidence": 0.0} @@ -34,21 +34,20 @@ def fix_and_parse_json(json_str: str, try_to_fix_with_gpt: bool = True): json_str = json_str[brace_index:] last_brace_index = json_str.rindex("}") json_str = json_str[:last_brace_index+1] - return dirtyjson.loads(json_str) + return json.loads(json_str) except Exception as e: if try_to_fix_with_gpt: print(f"Warning: Failed to parse AI output, attempting to fix.\n If you see this warning frequently, it's likely that your prompt is confusing the AI. Try changing it up slightly.") # Now try to fix this up using the ai_functions ai_fixed_json = fix_json(json_str, json_schema, False) if ai_fixed_json != "failed": - return dirtyjson.loads(ai_fixed_json) + return json.loads(ai_fixed_json) else: print(f"Failed to fix ai output, telling the AI.") # This allows the AI to react to the error message, which usually results in it correcting its ways. return json_str else: raise e -# TODO: Make debug a global config var def fix_json(json_str: str, schema: str, debug=False) -> str: # Try to fix the JSON using gpt: function_string = "def fix_json(json_str: str, schema:str=None) -> str:" @@ -68,10 +67,10 @@ def fix_json(json_str: str, schema: str, debug=False) -> str: print(f"Fixed JSON: {result_string}") print("----------- END OF FIX ATTEMPT ----------------") try: - return dirtyjson.loads(result_string) + return json.loads(result_string) except: # Get the call stack: # import traceback # call_stack = traceback.format_exc() # print(f"Failed to fix JSON: '{json_str}' "+call_stack) - return "failed" + return "failed" \ No newline at end of file