Eval buyer's guide
LLM eval platforms compared: which one for which job?
LLM eval platforms compared across heuristic, LLM-as-judge, and human-in-the-loop. Langfuse, LangSmith, Phoenix, Braintrust, and what each does best.
The three categories, in one paragraph each
Heuristic evals are the cheapest and the fastest: regex, exact match, BLEU, embedding distance, JSON schema validation. They run in CI on every pull request. They are brittle on free-form outputs and useless for subjective quality. Use them as a smoke test, never as the final word.
LLM-as-judge evals scale to thousands of traces per day by having another model score the outputs. They are the workhorse of modern agent evals. They are non-trivially costly at volume, and they need a small held-out set of human labels to calibrate against, or the scores drift. Treat them as a noisy but useful signal.
Human-in-the-loop evals are the gold standard for product quality. Domain experts label traces, score free-form outputs, and flag failure modes the automated evals miss. Use them sparingly, on a representative sample, and route the findings back into the heuristic and LLM-as-judge pipelines as new assertions.
Platform-by-platform
Langfuse supports all three categories. Heuristic assertions run in the SDK or in a small worker. LLM-as-judge is a first-class primitive that runs against captured traces. Human review ships with a clean UI and ties back to the trace and the dataset. Strong API surface, runs against production traces, and integrates well with the rest of the Langfuse observability stack.
LangSmith covers the same surface with a tighter coupling to LangChain datasets. The dataset UI is one of the most polished in the category, and LangChain own evaluators (built-in string matchers, embedding distance, and a few LLM-as-judge templates) are bundled. The tradeoff is the same as elsewhere in the LangSmith product: you get opinionated defaults and a single-vendor story, but you give up the open-source escape hatch.
Arize Phoenix is OpenTelemetry-first and treats evals as a first-class concept. It is strong if your team already has an eval philosophy and wants raw OTel spans to drive it. The dashboard is lighter than Langfuse, and the platform is built on the Arize research team published work on LLM evaluation.
Braintrust is a newer entrant focused on LLM-as-judge and dataset management. It is opinionated in a different direction: it treats the eval loop as a product surface, with strong version pinning, scorer libraries, and a workflow for promoting a candidate through regression suites. Worth a close look if dataset iteration is the part of your process that hurts the most.
How to pick
Start with whatever observability platform you already have — its eval features are usually good enough for the first three to six months. Add a dedicated eval tool only when dataset iteration becomes a weekly ritual that the observability platform cannot keep up with. Do not run three eval platforms in parallel: pick one, iterate, and add a second only when a specific gap becomes a recurring source of pain.
Common mistakes
The most common mistake is running evals on synthetic data only. Synthetic data is great for CI smoke tests, terrible for calibrating LLM-as-judge. The second is having no held-out human labels — without them you cannot tell whether your judge is drifting. The third is failing to pin the version of the judge model: an unannounced upstream change can shift your scores by ten points overnight and you will not know why.
Frequently asked questions
Do I need a separate eval tool, or is my observability platform enough?
Most teams start with their observability platform eval features and add a dedicated tool only when dataset iteration becomes a weekly ritual. The signal to upgrade is usually friction in the dataset UI, not a feature gap in the eval runner.
How many human labels do I need?
A practical starting point is 200 to 500 labels per use case. Less than that and the LLM-as-judge calibration is noisy; more than that and you are usually better off spending the labelling budget on a second use case.
Should I run evals in CI?
Yes for heuristic and a small LLM-as-judge smoke test on every pull request. Full eval runs belong in a nightly job or a release-gate workflow, not on every PR — they are too slow and too costly to block every commit.