| 4100 | "#", "state", "prompt", "gen", "total", "given", "correct", "test"); |
| 4101 | for (int i = 0; i < ncases; i++) { |
| 4102 | int prompt_tokens = ui->prompt_tokens ? ui->prompt_tokens[i] : 0; |
| 4103 | int generated_tokens = ui->generated_tokens ? ui->generated_tokens[i] : 0; |
| 4104 | int total_tokens = prompt_tokens + generated_tokens; |
| 4105 | const char *given = ui->guess && ui->guess[i][0] ? ui->guess[i] : "-"; |
| 4106 | printf("%3d %-8s %8d %8d %8d %-8s %-8s %s/%s\n", |
| 4107 | i + 1, |
| 4108 | report_status_name(ui->status[i]), |
| 4109 | prompt_tokens, |
| 4110 | generated_tokens, |
| 4111 | total_tokens, |
| 4112 | given, |
| 4113 | ui->cases[i].answer, |
| 4114 | ui->cases[i].source, |
| 4115 | ui->cases[i].id); |
| 4116 | } |
| 4117 | } |
| 4118 | |
| 4119 | int main(int argc, char **argv) { |
| 4120 | eval_config cfg = parse_options(argc, argv); |
| 4121 | if (cfg.self_test_extractors) return run_extractor_self_tests(); |
| 4122 | if (cfg.regrade_trace_path) return regrade_trace_file(cfg.regrade_trace_path); |
| 4123 | |
| 4124 | int ncases = (int)(sizeof(eval_cases) / sizeof(eval_cases[0])); |
| 4125 | if (cfg.question_limit > 0 && cfg.question_limit < ncases) ncases = cfg.question_limit; |
| 4126 | if (cfg.question_limit > (int)(sizeof(eval_cases) / sizeof(eval_cases[0]))) { |
| 4127 | fprintf(stderr, "ds4-eval: only %zu questions are embedded\n", |
| 4128 | sizeof(eval_cases) / sizeof(eval_cases[0])); |
| 4129 | return 2; |
| 4130 | } |
| 4131 | int *case_sequence = NULL; |
| 4132 | int case_sequence_len = 0; |
| 4133 | if (cfg.case_sequence && |
| 4134 | parse_case_sequence(cfg.case_sequence, ncases, &case_sequence, &case_sequence_len) != 0) { |
| 4135 | return 2; |
| 4136 | } |
| 4137 | if (!cfg.seed) { |
| 4138 | cfg.seed = (uint64_t)time(NULL) ^ |
| 4139 | ((uint64_t)getpid() << 32) ^ |
| 4140 | (uint64_t)clock(); |
| 4141 | } |
| 4142 | |
| 4143 | FILE *trace = NULL; |
| 4144 | if (cfg.trace_path) { |
| 4145 | trace = fopen(cfg.trace_path, "w"); |
| 4146 | if (!trace) { |
| 4147 | fprintf(stderr, "ds4-eval: cannot open trace '%s': %s\n", |
| 4148 | cfg.trace_path, strerror(errno)); |
| 4149 | free(case_sequence); |
| 4150 | return 2; |
| 4151 | } |
| 4152 | } |
| 4153 | |
| 4154 | ds4_engine_options opt = { |
| 4155 | .model_path = cfg.model_path, |
| 4156 | .mtp_path = cfg.mtp_path, |
| 4157 | .backend = cfg.backend, |
| 4158 | .n_threads = cfg.threads, |
| 4159 | .context_size = cfg.ctx_size > 0 ? cfg.ctx_size : 0, |
nothing calls this directly
no test coverage detected