| 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' | |