Skip to content

Commit afa2fdc

Browse files
Add missing CascadeRouter code example in model selection chapter
Co-authored-by: Ona <no-reply@ona.com>
1 parent 42547c9 commit afa2fdc

1 file changed

Lines changed: 17 additions & 1 deletion

File tree

src/content/chapters/31-model-selection.mdx

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,23 @@ rejecting output that’s acceptable but not perfect.
100100

101101
```python
102102
class CascadeRouter:
103-
103+
def __init__(self, models: list[str], evaluate_fn):
104+
# models ordered cheapest to most expensive
105+
self.models = models
106+
self.evaluate = evaluate_fn
107+
108+
def route(self, task: str) -> dict:
109+
for model in self.models:
110+
result = call_model(model, task)
111+
if self.evaluate(result):
112+
return {"model": model, "result": result, "escalated": False}
113+
# final model's output returned regardless
114+
return {"model": self.models[-1], "result": result, "escalated": True}
115+
116+
cascade = CascadeRouter(
117+
models=["gpt-5.2-mini", "claude-sonnet-4.6", "claude-opus-4.6"],
118+
evaluate_fn=lambda r: r.passes_tests and r.matches_schema,
119+
)
104120
```
105121

106122
Research from ETH Zurich (CASTER, 2026) shows cascade routing reduces

0 commit comments

Comments
 (0)