eval-triage
GitHub利用 LangWatch CLI 排查实验失败、分数回退及评估器异常。通过定位失败行、检查评估器设置,对比版本变更以识别根因(如模型、提示词或数据问题),并提供修复与预防建议。
Trigger Scenarios
Install
npx skills add langwatch/langwatch --skill eval-triage -g -y
SKILL.md
Frontmatter
{
"name": "eval-triage",
"license": "MIT",
"metadata": {
"category": "recipe"
},
"description": "Investigate failing experiments and evaluations with LangWatch. Triage a failing experiment run to the exact rows and evaluator scores that regressed, then to a root cause. Use when an experiment fails, scores drop, or evaluations regress.",
"compatibility": "Requires the `langwatch` CLI with a valid `LANGWATCH_API_KEY`. Works with any coding agent."
}
Triage Failing Experiments and Evaluations
From "the run failed" to the specific rows, evaluators, and inputs responsible, then to a root cause. Work the steps in order.
Prerequisites
Step 1: Find the Failing Run
langwatch experiment list --limit 20 -o json # experiments in the project
langwatch experiment list-runs <slug> -o json # runs for one experiment
langwatch experiment status <slug> -o json # latest run: status, progress, errors
langwatch experiment status <slug> --run-id <id> -o json
A run can fail two ways, and they triage differently:
- Execution failure: the run errored out or stalled.
statusshows the error; jump to Step 4. - Score regression: the run completed but evaluator scores dropped or rows failed. Continue to Step 2.
Step 2: Isolate the Failing Rows
langwatch experiment results <slug> --filter failed -o json
langwatch experiment results <slug> --filter failed --evaluator <name> -o json
langwatch experiment results <slug> --run-id <id> --limit 50 -o json
--filter failedkeeps only the rows that failed at least one evaluator. Start there, not with the full result set.--evaluator <name>shows one evaluator's column when several ran: is the regression concentrated in one evaluator (a scoring problem) or spread across all of them (a real behavior regression)?
For each failing row, note the input, the expected output (from the dataset), and the actual output. Rows that fail the SAME way point at one root cause; rows that fail differently suggest flakiness or a noisy evaluator.
Step 3: Inspect the Evaluators
langwatch evaluator list -o json
langwatch evaluator get <idOrSlug> -o json
Before blaming the agent, rule out the scorer:
- LLM-judge evaluators: check the model in
settings. A judge model that changed, is rate-limited, or is too weak for the rubric produces score swings that have nothing to do with the agent. - Thresholds: a score of 0.49 vs a pass threshold of 0.5 is a borderline judge, not a regression. Look at the score distribution across rows, not just pass/fail.
- Deterministic evaluators (exact match, JSON validity): these don't drift; failures here are real.
Step 4: Root Cause
- Compare the failing run against the last passing one: what changed (prompt version, model, dataset, code)?
git logon prompts and agent code usually answers this directly. - If rows fail on retrieval or context: inspect a production trace of the same path (
langwatch trace search/langwatch trace get; see thedebug-with-langwatchrecipe). - If the dataset itself looks wrong (stale expected outputs, bad rows), fix the dataset. Use
langwatch dataset get <slugOrId>to inspect it. - Apply the fix and re-run:
langwatch experiment run <slug> --wait
langwatch experiment status <slug> -o json
Step 5: Prevent the Recurrence
- If the failure mode wasn't covered by any evaluator, add one (
langwatch evaluator create) and wire it into the experiment. - If it only shows up in production, set up a monitor (
langwatch monitor create) so online evaluation catches it before the next experiment does.
Version History
-
6f9d4a4
Current 2026-08-28 21:10
移除了文档读取和报告命令等前置步骤,精简为专注于实验结果隔离、评估器检查和根因分析的调试流程。
- 12615f1 2026-08-20 10:01


