workflow_summary_markers = [ 'WORKFLOW SUMMARY', 'WORKFLOW_SUMMARY', 'WORKFLOW-SUMMARY', 'Workflow Summary', ] final_answer_markers = [ 'FINAL ANSWER', 'FINAL_ANSWER', 'FINAL-ANSWER', 'Final Answer', 'Scientific Hypothesis', 'Hypothesis', ] next_agent_markers = [ 'NEXT AGENT', 'NEXT-AGENT', 'NEXT_AGENT', 'FEEDBACK', ] def extract_between(content, start_markers, end_markers=None): for marker in start_markers: if marker in content: result = content.split(marker, 1)[1] if end_markers: for end_marker in end_markers: if end_marker in result: result = result.split(end_marker, 1)[0] return result return '' def extract_gen_hypo_from_logs(content: str): error = '' gen_workflow = extract_between( content, workflow_summary_markers, final_answer_markers ) if not gen_workflow: error += 'No Workflow Summary found in the line. | ' gen_hypothesis = extract_between(content, final_answer_markers, next_agent_markers) if not gen_hypothesis: error += 'No Final Answer in the line.' return gen_hypothesis, gen_workflow, error