-
Notifications
You must be signed in to change notification settings - Fork 0
feat: default case config (shared evaluators across cases) #225
Copy link
Copy link
Closed
Labels
enhancementNew feature or requestNew feature or request
Description
Problem
When writing EVAL.yaml with many cases, common evaluators (latency, safety, format) must be repeated on every case.
Proposal
Add a defaults block that applies to all cases unless overridden:
name: customer-support-eval
version: "1.0"
defaults:
evaluators:
- name: latency_check
type: latency
max_ms: 5000
- name: safety
type: llm_judge
prompt: evaluators/no-ai-disclosure.md
cases:
- id: refund-request
input: "I want a refund"
evaluators:
- name: helpful
type: llm_judge
prompt: evaluators/helpful.md
# Also gets the two default evaluators
- id: greeting
input: "Hello"
# Only gets default evaluatorsMerge Behavior
- Default evaluators are appended to case-specific evaluators
- To skip defaults for a case:
skip_defaults: true
Why Not $ref or Templates?
YAML already has anchors (&anchor / *anchor) for reuse. Adding $ref or a custom template system introduces new concepts without adding capability. Keep the config surface minimal.
Design Principles Alignment
- ✅ Non-Breaking Extension —
defaultsis optional; existing configs unchanged - ✅ Lightweight Core — minimal parser change, no new concepts
- ✅ AI-First — less repetition = fewer tokens for AI to reason about
Acceptance Criteria
-
defaults.evaluatorsparsed and appended to all cases -
skip_defaults: trueper case to opt out - Backward compatible
- Unit tests
- Documentation
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request