Spaces:
Running
Running
| 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) | |