File size: 2,091 Bytes
02c783d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
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'
|