| 36 | |
| 37 | |
| 38 | def parse_args(): |
| 39 | parser = argparse.ArgumentParser(description="Run WritingBench benchmark") |
| 40 | parser.add_argument( |
| 41 | "--workflow-file", |
| 42 | type=str, |
| 43 | default=str(_DEFAULT_WORKFLOW), |
| 44 | help="Path to YAML workflow file", |
| 45 | ) |
| 46 | parser.add_argument( |
| 47 | "--model", |
| 48 | type=str, |
| 49 | default=None, |
| 50 | help="Model to use (overrides workflow config). Defaults to workflow's model.", |
| 51 | ) |
| 52 | parser.add_argument( |
| 53 | "--output-dir", |
| 54 | type=str, |
| 55 | default=_DEFAULT_OUTPUT_DIR, |
| 56 | help="Directory to save results", |
| 57 | ) |
| 58 | parser.add_argument( |
| 59 | "--max-parallel", |
| 60 | type=int, |
| 61 | default=1, |
| 62 | help="Maximum parallel queries (default: 1)", |
| 63 | ) |
| 64 | parser.add_argument( |
| 65 | "--limit", |
| 66 | type=int, |
| 67 | default=None, |
| 68 | help="Limit number of queries to process", |
| 69 | ) |
| 70 | parser.add_argument( |
| 71 | "--query-indices", |
| 72 | type=int, |
| 73 | nargs="+", |
| 74 | help="Specific query indices to run", |
| 75 | ) |
| 76 | parser.add_argument( |
| 77 | "--judge-model", |
| 78 | type=str, |
| 79 | default="claude-sonnet-4-5", |
| 80 | help="Model for evaluation judging (default: claude-sonnet-4-5)", |
| 81 | ) |
| 82 | parser.add_argument( |
| 83 | "--skip-eval", |
| 84 | action="store_true", |
| 85 | help="Skip evaluation after running queries", |
| 86 | ) |
| 87 | parser.add_argument( |
| 88 | "--save-logs", |
| 89 | action="store_true", |
| 90 | help="Save per-instance agent logs (full log + structured events)", |
| 91 | ) |
| 92 | parser.add_argument( |
| 93 | "--max-parallel-eval", |
| 94 | type=int, |
| 95 | default=1, |