ASR_AGENT_ / scripts /run_diagnostic.py
unknown
Update UI
59afc96
from __future__ import annotations
import json
from pathlib import Path
import pandas as pd
from openai import OpenAI
from analysis.llm_analyzer import analyze_with_llm
from report.diagnostic_report import generate_report_with_openai
def load_jsonl(path: Path):
rows = []
with path.open("r", encoding="utf-8") as f:
for line in f:
line = line.strip()
if line:
rows.append(json.loads(line))
return rows
def main(run_id: str, runs_dir: str = "runs", model: str = "gpt-4.1-mini"):
run_dir = Path(runs_dir) / run_id
df_align = pd.DataFrame(load_jsonl(run_dir / "aligned.jsonl"))
df_events = pd.read_parquet(run_dir / "events.parquet") if (run_dir / "events.parquet").exists() else pd.DataFrame()
summary = json.loads((run_dir / "summary.json").read_text(encoding="utf-8")) if (run_dir / "summary.json").exists() else {}
client = OpenAI()
llm_diagnosis = analyze_with_llm(df_align, df_events, summary, model=model, client=client)
(run_dir / "llm_diagnosis.json").write_text(
json.dumps(llm_diagnosis, ensure_ascii=False, indent=2),
encoding="utf-8"
)
report = generate_report_with_openai(llm_diagnosis, summary, client, model=model)
(run_dir / "diagnostic_report.md").write_text(report, encoding="utf-8")
print(f"Diagnostic report written to: {run_dir / 'diagnostic_report.md'}")
if __name__ == "__main__":
import argparse
ap = argparse.ArgumentParser()
ap.add_argument("--run_id", required=True)
ap.add_argument("--runs_dir", default="runs")
ap.add_argument("--model", default="gpt-4.1-mini")
args = ap.parse_args()
main(args.run_id, args.runs_dir, args.model)