import re def get_turn_title(response_text): tag = 'turn_title' pattern = fr'<{tag}>(.*?)' values = re.findall(pattern, response_text, re.DOTALL) values0 = values.copy() values = [v.strip() for v in values] values = [v for v in values if v] if len(values) == 0: # then maybe removed too much values = values0 if values: turn_title = values[-1] else: turn_title = response_text[:15] + '...' return turn_title def get_final_answer(response_text, cli_mode=False): tag = 'final_answer' pattern = fr'<{tag}>(.*?)' values = re.findall(pattern, response_text, re.DOTALL) values0 = values.copy() values = [v.strip() for v in values] values = [v for v in values if v] if len(values) == 0: # then maybe removed too much values = values0 if values: if cli_mode: response_text = '\n\nFINAL ANSWER:\n\n' + values[-1] + '\n\n' else: response_text = values[-1] else: response_text = None return response_text def get_xml_tag_value(response_text, tag, ret_all=True): pattern = fr'<{tag}>(.*?)' values = re.findall(pattern, response_text, re.DOTALL) values0 = values.copy() values = [v.strip() for v in values] values = [v for v in values if v] if len(values) == 0: # then maybe removed too much values = values0 if values: if ret_all: ret = values else: ret = [values[-1]] else: ret = [] return ret