Problem
Instradare richieste a modelli diversi (fast/cheap vs accurate/slow) senza introdurre dipendenze pesanti o agent pipeline complesse.
Code
// router.ts
export type Route = {
test: (input: string) => boolean;
model: 'fast' | 'accurate';
};
export const routes: Route[] = [
{ test: (s) => /summary|riassunto/i.test(s), model: 'fast' },
{ test: (s) => /contract|legal|clin(ico|ical)/i.test(s), model: 'accurate' },
];
export function pickModel(input: string): Route['model'] {
for (const r of routes) if (r.test(input)) return r.model;
return 'fast';
}
Why it works
- Semplice euristica, trasparente, testabile.
- Fallback deterministico.
- Estendibile senza side-effect.
When NOT to use it
- Dataset o domini con alto tasso di falsi positivi/negativi.
- Requisiti hard-SLA di accuratezza; serve un classifier addestrato.
- Contesti regolati dove serve tracciabilità formale del routing.