Question presented to candidate: "We already run Ragas on our RAG endpoint, but most of our product is not retrieval: summaries, support replies, an agent that files tickets. How would you evaluate those outputs? Talk me through where an LLM judge fits, what a framework like DeepEval gives you, and where humans still have to be involved."
What a strong answer should cover:
- A layered stack: code checks for anything objective, an LLM judge with a written rubric for subjective criteria, and human review as the source of truth that the judge is calibrated against
- LLM-as-judge done properly: specific rubric criteria (G-Eval style evaluation steps), a fixed judge model and prompt version, binary or low-precision scales, and agreement with human labels measured before the scores are trusted
- What DeepEval adds: a pytest-style harness (
LLMTestCase, metrics with thresholds,assert_test,deepeval test run), a catalogue of RAG, agent and conversational metrics, and custom G-Eval criteria; and that it is a harness, not a source of truth - Human evaluation as a designed process: written guidelines, two annotators on a shared subset, inter-annotator agreement (Cohen's kappa) as the ceiling the judge cannot beat, and adjudication of disagreements
- Routing and cost: humans see borderline judge scores, a random audit sample and escalations, not everything; the judge is re-checked against fresh human labels whenever the judge model, rubric or product changes
Clarifying questions expected:
- Which outputs are objective (formats, facts, actions) and which are subjective (tone, helpfulness), and who owns the definition of "good"?
- How many outputs a day, and what budget exists for human reviewers or domain experts?
- Is there an existing labelled set, or do we have to create the first human labels?
Code / implementation expected: Optional โ a DeepEval test with a custom G-Eval criterion, or the arithmetic for judge-human agreement and review routing.