Spaces:
Sleeping
Sleeping
File size: 2,328 Bytes
87e87cc | 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 | import re
log_path = "/Users/yujingchen/code/lilith-agent/.lilith/failed_tasks_trace.log"
task_summaries = {}
current_task = None
task_start_pattern = re.compile(r"\[runner\] task=([0-9a-f\-]+) \(\d+/\d+\) starting")
summary_pattern = re.compile(r"summary='(.*)'$")
answer_pattern = re.compile(r"\[runner\] task=([0-9a-f\-]+) \(\d+/\d+\) answer='(.*)'")
content_pattern = re.compile(r"\[model\] finished content='(.*)'")
prompt_q_pattern = re.compile(r"q='([^']*)'")
with open(log_path, "r") as f:
for line in f:
start_match = task_start_pattern.search(line)
if start_match:
current_task = start_match.group(1)
if current_task not in task_summaries:
task_summaries[current_task] = {"summary": "", "content": "", "answer": "", "q": ""}
# Try to grab the truncated question
q_match = prompt_q_pattern.search(line)
if q_match:
task_summaries[current_task]["q"] = q_match.group(1)
continue
if current_task:
summary_match = summary_pattern.search(line)
if summary_match:
task_summaries[current_task]["summary"] = summary_match.group(1)
content_match = content_pattern.search(line)
if content_match:
# keep updating content because there might be multiple calls, we want the last one before answer
task_summaries[current_task]["content"] = content_match.group(1)
answer_match = answer_pattern.search(line)
if answer_match:
t_id = answer_match.group(1)
ans = answer_match.group(2)
if t_id in task_summaries:
task_summaries[t_id]["answer"] = ans
with open("/Users/yujingchen/code/lilith-agent/scratch/failed_tasks_analysis.md", "w") as out:
for t_id, data in task_summaries.items():
out.write(f"### Task ID: {t_id}\n")
out.write(f"**Question (truncated):** {data['q']}\n")
out.write(f"**Agent Final Content:** {data['content']}\n")
out.write(f"**Extracted Answer:** {data['answer']}\n")
out.write(f"**Episode Summary:** {data['summary']}\n\n")
print(f"Extracted analysis for {len(task_summaries)} tasks.")
|