Cost quality frontier
Curated AI agent evaluation skills from Microsoft's Eval Guide — plan, generate, run, and interpret eval suites for Copilot Studio agents
npx -y skills add varunk130/AI-Eval-Skills --skill cost-quality-frontierAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Adds cost (input + output tokens × model price) and latency (p50, p95) to eval results, plots model options on a Pareto frontier, and produces a quality-per-dollar composite score so production model selection is grounded in trade-offs, not just quality. Use when: model comparison, cost-aware evals, latency budget, quality-per-dollar, Pareto frontier, model selection, eval economics, picking a model for production.
SKILL.md
7.4 KB, as published. Nobody here has run it
Cost-Quality Frontier
Most eval suites today answer the question "which model is most accurate?" The production question is harder: "which model gives me the best quality I can afford, at the latency budget my product allows?" This skill takes existing eval runs and augments each result with cost and latency, then plots the candidates on a Pareto frontier so the trade-off is visible at a glance.
Core Principle
Quality, cost, and latency are a single decision, not three. A model that is 2 points more accurate but costs 6× and adds 800ms of p95 latency is rarely the right pick. A model that is 1 point worse but cheaper and faster usually is - but only if you can see the frontier. This skill makes the frontier explicit.
What You'll Get
| Artifact | Description |
|---|---|
| Augmented Eval Schema | Every result row gains cost_usd, input_tokens, output_tokens, latency_ms, model, pricing_source columns |
| Per-Model Aggregates | Quality (mean + 95% CI), p50/p95 latency, cost-per-eval-run, cost-per-1k-runs, total tokens consumed |
| Pareto Frontier Plot | ASCII / Markdown table of which models are non-dominated on (quality, cost) and (quality, latency) |
| Quality-per-Dollar Score | Single composite: quality_score / cost_per_1k_runs, with a 95% CI from bootstrap |
| Decision Matrix | "If your latency budget is X and your cost ceiling is Y, the best model is Z" - for several common (X, Y) regimes |
| Sensitivity Analysis | How the recommendation changes if pricing shifts ±20% or quality measurement noise is ±2 points |
Augmented Eval Result Schema
The skill assumes your existing eval results are tabular (CSV / JSON / DataFrame). It extends the schema with these columns; existing columns are preserved unchanged.
| Column | Type | Source | Notes |
|---|---|---|---|
model | string | required | Canonical model id (e.g., claude-sonnet-4-5) |
input_tokens | int | from runner | Count after any prompt caching credit |
output_tokens | int | from runner | Generated tokens only |
latency_ms | int | from runner | Wall-clock from request to last token |
pricing_source | string | from pricing.json | E.g., "pricing.json@2026-04-15" - required for reproducibility |
cost_usd | float | computed | (input_tokens × in_price + output_tokens × out_price) / 1e6 |
quality_score | float | from eval | Whatever your existing primary quality metric is (0-1 or 0-100) |
A reference pricing.json ships with the skill in pricing.example.json. Maintainers update this file when prices change; every eval run records which version of pricing was used so historical results stay reproducible. Pricing is read from a local file - the skill never makes external calls to fetch prices.
{
"_version": "2026-04-15",
"_note": "Per-million-token prices in USD. Replace with current vendor prices before relying on results.",
"models": {
"claude-sonnet-4-5": { "in_per_mtok": 3.00, "out_per_mtok": 15.00 },
"claude-opus-4-6": { "in_per_mtok": 15.00, "out_per_mtok": 75.00 },
"claude-haiku-4-5": { "in_per_mtok": 0.80, "out_per_mtok": 4.00 },
"gpt-5-mini": { "in_per_mtok": 0.25, "out_per_mtok": 2.00 },
"gpt-5": { "in_per_mtok": 2.50, "out_per_mtok": 10.00 }
}
}
Process
Step 1: Intake
I'll ask:
"Point me at your eval results (file or paste a sample). Tell me: which column is your primary quality score, and what's the desired direction (higher-is-better / lower-is-better)? What's your production latency budget at p95? What's your monthly cost ceiling, and at roughly how many eval-equivalent runs/month? Which
pricing.jsonversion should I use?"
Step 2: Augment the Schema
Add cost_usd and confirm latency / token columns are populated. Flag any rows missing these - they get excluded from frontier analysis with an explicit count in the report.
Step 3: Per-Model Aggregates
For each model:
- Mean quality with 95% CI (bootstrap, 1000 resamples)
- p50, p95, p99 latency
- Mean cost-per-run and projected cost at the user's stated runs/month
- Failure rate (eval rows with no completion / timeout / parse error)
Step 4: Build the Pareto Frontier
A model is on the frontier iff no other model is strictly better on all three of (higher quality, lower cost, lower p95 latency). Output two tables:
- Quality vs Cost frontier
- Quality vs Latency frontier
Dominated models stay in the report but are flagged "dominated by X" with the reason.
Step 5: Quality-per-Dollar Composite
Q$ = quality_score / cost_per_1k_runs. Report rank order and a bootstrapped 95% CI on the rank - if two models' CIs overlap, the report says so explicitly instead of pretending the ranking is precise.
Step 6: Decision Matrix
A small table of "if your constraint is X, pick Y" recommendations - typically:
| Constraint regime | Recommendation |
|---|---|
| No latency cap, no cost cap | Highest quality model |
| p95 < 2s, no cost cap | Best of the latency-feasible set |
| Cost < $X/1k runs, no latency cap | Highest quality within budget |
| p95 < 2s and cost < $X/1k runs | Best feasible point on the frontier |
Step 7: Sensitivity Pass
Re-run the ranking with pricing perturbed ±20% and quality perturbed ±2 points. If the top recommendation flips under any plausible perturbation, the report flags it as "tight" and recommends collecting more eval samples before committing.
Demo Output Snippet
Frontier - Quality vs Cost (per 1k eval runs):
| Model | Quality | Cost / 1k | p95 Latency | On Frontier? | Notes |
|---|---|---|---|---|---|
| claude-haiku-4-5 | 0.78 | $1.20 | 0.6s | ✅ | Cheapest viable point |
| gpt-5-mini | 0.81 | $1.85 | 0.9s | ✅ | Best Q$ in this run |
| claude-sonnet-4-5 | 0.88 | $6.40 | 1.3s | ✅ | Best quality under p95 < 2s |
| gpt-5 | 0.89 | $9.10 | 1.5s | - | Dominated by sonnet-4-5 (similar Q, higher $) |
| claude-opus-4-6 | 0.91 | $32.50 | 2.4s | ✅ | Best quality overall, breaks p95 budget |
Decision (latency budget p95 < 2s, cost ceiling $10/1k runs):
Pick claude-sonnet-4-5. It's the highest-quality model that satisfies both constraints. opus-4-6 has +0.03 quality but breaks the latency budget; gpt-5 is dominated.
Tips
- Record
pricing_sourceon every row. Without it, "this model used to be a great deal" becomes unanswerable when prices move. - Don't average latency - use p95. A model with great median and a long tail is unsafe in production.
- Treat the frontier as a working set, not a leaderboard. The "right" model depends on the deployment, not the eval.
- Collect failures separately. A model that's 5% cheaper but 5% more likely to fail entirely is usually a bad trade - track failure rate as its own dimension.
- Re-run on every model release. Frontiers shift quarterly; the model that won last quarter may be dominated this quarter.