import json, os from datetime import datetime from dotenv import load_dotenv load_dotenv() import sys sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from data.bug_dataset import TRAINING_SCENARIOS from orchestrator import Debugger def run_baseline(): debugger = Debugger(max_iterations=3) all_results = [] print(f"Running baseline on {len(TRAINING_SCENARIOS)} problems...") for i, problem in enumerate(TRAINING_SCENARIOS): print(f"\n[{i+1}/{len(TRAINING_SCENARIOS)}] {problem['title']} [{problem['difficulty']}]") result = debugger.run(problem, verbose=True) all_results.append(result) # Build summary — OUTSIDE the loop by_diff = {"easy": [], "medium": [], "hard": []} for r in all_results: by_diff[r["difficulty"]].append(r) summary = { "total_problems": len(all_results), "solved": sum(1 for r in all_results if r["solved"]), "avg_best_reward": sum(r["best_reward"] for r in all_results) / len(all_results), "by_difficulty": { diff: { "solved": sum(1 for r in problems if r["solved"]), "total": len(problems), "avg_reward": sum(r["best_reward"] for r in problems) / max(len(problems), 1) } for diff, problems in by_diff.items() } } output = { "format_version": 1, "model": "llama-3.1-8b-instant", "timestamp": datetime.now().isoformat(), "results": all_results, "summary": summary } os.makedirs("outputs", exist_ok=True) with open("outputs/baseline_scores.json", "w") as f: json.dump(output, f, indent=2) # Print summary ONCE here print("\n" + "="*60) print("BASELINE SUMMARY") print("="*60) debugger.print_summary_table(all_results) print(f"\nSolved: {summary['solved']}/{summary['total_problems']}") print(f"Avg best reward: {summary['avg_best_reward']:.1f}") print("Saved to outputs/baseline_scores.json") if __name__ == "__main__": run_baseline()