Evaluation pipeline: failed metrics silently dropped from averages; SUT output unescaped in judge prompts; g_eval logprob scoring misparses digit tokens; error handler imports SDKs inside except block
Summary
Four defects in opik's evaluation pipeline at pin c7ffd4e.
1. Failed metric scores silently dropped from experiment averages
Any metric exception produces ScoreResult(0.0, scoring_failed=True), those rows are never uploaded, and every aggregate excludes them. A crashing-judge run reports hallucination mean 0.0 over 5 survivors while an honest judge reports 0.5 over 10 on the same outputs.
2. System-under-test output interpolated unescaped into judge prompts
Judge templates interpolate SUT output verbatim; an output embedding a JSON object with score 0.0 is parsed as the judge response itself.
3. g_eval logprob scoring averages digit-string token candidates
Score 0 parses as 0.2999995; score 10 split into two tokens parses as 0.05. A hardcoded token index assumes single-digit scores.
4. Metric-error handler imports provider SDKs inside the except block
When openai/litellm are absent (the source-tree usage case), every tolerated metric error aborts the run instead of continuing.
All four verified with deterministic stubs. Harnesses available.
Source: comet-ml/opik