import os import re from utils.file_utils import assemble_project_path, read_resource_file from utils.json_utils import parse_semi_formatted_text def _extract_keys_from_template(templage_path): template_path = assemble_project_path(templage_path) if not os.path.exists(template_path): raise FileNotFoundError(f"Template file {template_path} does not exist") template = read_resource_file(template_path) # <$few_shots$> -> few_shots parse_input_keys = re.findall(r'<\$(.*?)\$>', template) input_keys = [key.strip() for key in parse_input_keys] print(f"Recommended input parameters: {input_keys}") # TODO: Extract output text should be general start_output_line_index = template.find('You should only respond') output_text = template[start_output_line_index + 1:] output = parse_semi_formatted_text(output_text) output_keys = list(output.keys()) print(f"Recommended output parameters: {output_keys}") return template, input_keys, output_keys