Repository navigation
Evaluation: Add latency summary data #1253
Description
Is your feature request related to a problem?
Evaluation runs provide cost information for OpenAI calls but lack latency data. This prevents us from identifying which configurations or prompts are slower, impacting our ability to optimize evaluations effectively.
Describe the solution you'd like
Add a latency summary to each evaluation run next to the cost, including:
- Average time of OpenAI calls in milliseconds, plus the number of calls for each step:
- response: generating the answer
- embedding: similarity scoring (v1 runs)
- judge: LLM-as-judge scoring (v2 runs)
- One overall average across all successful calls.
- Display this data on existing run endpoints for frontend integration.
- Ensure runs complete even if latency calculation fails.
Original issue
Is your feature request related to a problem? Please describe.
Evaluation runs show how much the OpenAI calls cost, but not how long they took. When we compare configs or prompts, we can't tell whether one setup is slower than another, or which step of the evaluation is slow: generating answers, embeddings, or judging. Response time is one of the main reasons fast evaluations exist, but we don't report it anywhere.
Describe the solution you'd like
Add a latency summary to each evaluation run, next to the existing cost:
- The average time of an OpenAI call in milliseconds, plus the number of calls, for each step:
- response: generating the answer for each question
- embedding: similarity scoring (v1 runs)
- judge: LLM-as-judge scoring (v2 runs)
- One overall average across all calls in the run.
- Only successful calls count. Failed calls and questions blocked by a guardrail are left out.
- Shown on the existing run endpoints, so the frontend can display it on the run card next to cost.
- If working out latency fails, the run should still complete.
Describe alternatives you've considered
- Storing latency inside the cost field. Rejected: a problem with one could wipe out the other. Keeping them separate keeps them independent.
- Using the total batch duration for batch runs. Rejected: batch time is mostly OpenAI queue time, not call time, so it would be misleading. Batch runs will show no latency.
- Adding p95 / max / per-question latency now. Deferred: we'll start with averages. The call counts and per-question timings are stored so these can be added later.
Activity
[-]Evaluation: Show average OpenAI call latency on evaluation runs[/-][+]Evaluation: Add latency summary data[/+]