()
| 1416 | |
| 1417 | |
| 1418 | def main(): |
| 1419 | args = _parse_args() |
| 1420 | |
| 1421 | master = _load_master(args.master_data) |
| 1422 | |
| 1423 | gt_dir, agent_dir = _resolve_directories(args) |
| 1424 | |
| 1425 | case_ids = _collect_case_ids(args, gt_dir, agent_dir) |
| 1426 | |
| 1427 | # Initialize LLM if needed |
| 1428 | llm_model = None |
| 1429 | if not args.skip_llm: |
| 1430 | llm_model = _init_llm() |
| 1431 | if llm_model is None: |
| 1432 | print( |
| 1433 | "\n Warning: LLM unavailable (missing packages or PROJECT_ID). " |
| 1434 | "Running deterministic only." |
| 1435 | ) |
| 1436 | print( |
| 1437 | " Install: pip install google-cloud-aiplatform python-dotenv" |
| 1438 | ) |
| 1439 | |
| 1440 | domain_name = master.display_name if master else "Invoice Processing" |
| 1441 | print("=" * 70) |
| 1442 | print(f"{domain_name.upper()} AGENT EVALUATION") |
| 1443 | print("=" * 70) |
| 1444 | print(f" Ground truth: {gt_dir}") |
| 1445 | print(f" Agent output: {agent_dir}") |
| 1446 | if master: |
| 1447 | print(f" Master data: {master.source_path}") |
| 1448 | print(f" Cases: {len(case_ids)}") |
| 1449 | print(f" Tolerance: ${args.tolerance}") |
| 1450 | print(f" LLM judge: {'enabled' if llm_model else 'disabled'}") |
| 1451 | |
| 1452 | results = _run_evaluation_loop( |
| 1453 | case_ids, gt_dir, agent_dir, args.tolerance, llm_model, master |
| 1454 | ) |
| 1455 | |
| 1456 | stats = compute_aggregate_stats(results, master) |
| 1457 | print_report(stats, results) |
| 1458 | |
| 1459 | _save_results(args, stats, results, gt_dir, agent_dir, llm_model, master) |
| 1460 | |
| 1461 | |
| 1462 | if __name__ == "__main__": |
no test coverage detected