import re import json import ast def extract_function_signatures(code): function_defs = [] pattern = r'def\s+([a-zA-Z0-9_]+)\s*\(([^)]*)\)' matches = re.finditer(pattern, code) for match in matches: func_name = match.group(1) params = match.group(2) function_defs.append(f"def {func_name}({params})") return function_defs def clear_code(code): if "```python" in code: code = code.split("```python")[-1].replace("<|im_end|>", "").replace("<|EOT|>", "") if "```" in code: code = code.split("```")[0] return code def extract_function_calls(code): calls = [] pattern = r'([a-zA-Z0-9_]+)\s*\(([^)]*)\)' matches = re.finditer(pattern, code) for match in matches: func_name = match.group(1) args = match.group(2) calls.append(f"{func_name}({args})") return calls def clear_json(response): if type(response) is dict: return response elif type(response) is not str: response = str(response) base_response = response try: response = base_response.replace("\n", " ") response = re.search('({.+})', response).group(0) response = re.sub(r"(\w)'(\w|\s)", r"\1\\'\2", response) result = ast.literal_eval(response) return result except (SyntaxError, NameError, AttributeError): pass try: response = base_response.split('assistantfinal')[-1] result = ast.literal_eval(response) return result except: pass try: response = base_response.split('assistantfinal JSON')[-1] result = ast.literal_eval(response) return result except: pass try: response = base_response.split('assistantfinal json')[-1] result = ast.literal_eval(response) return result except: pass try: response = list(re.finditer(r'\{[\s\S]*?\}', base_response))[-1].group(0) result = ast.literal_eval(response) return result except: pass return 'ERR_SYNTAX'