Lesson 103 — Advanced
Model Routing & Gateways
Production app mein sabse badi galti hoti hai — provider SDK seedha code mein thok dena. Gateway layer ek abstraction deti hai: ek jagah auth, limits aur usage tracking, plus har request ke liye model chunne ka rule — task, cost, risk aur context length dekh kar.
Gateway kya hai
WHAT
Model gateway app code aur model providers ke beech ki layer hai. App sirf gateway ko call karta hai; gateway model chunta hai, keys sambhalta hai, retries/limits lagata hai aur usage log karta hai.
WHEN
Jaise hi do providers, do models ya koi bhi routing/cost control chahiye — ya jab "model badalna hai" ek release na ban kar ek config change ho.
WHERE
Ek service/library jo har LLM call guzarti hai: app se aayi, provider tak gayi. Auth, rate limits, retries, budgets aur tracking sab yahin centralise.
Funda ek line mein: business logic kabhi provider SDK ko directly na chhue. Tumhara code "answer do", gateway decide karega kaun, kaise aur kitne mein.
Routing signals — task, cost, risk, context
- Task type: extraction/classification → chhota fast model; synthesis/complex reasoning → strong model.
- Context length: request bada hai toh us limit wala model hi chalega — gateway khud check kare.
- Latency class: interactive path chhota model, batch path badi freedom.
- Cost budget: feature-wise ceilings — free tier default par chhota model.
- Risk/modality: high-risk actions strong model + approval path; image/audio → vision/audio capable model.
def route(req):
if req.modality == "image": return MODELS["vision"]
if req.task == "extract": return MODELS["small"] # structured, chhota kaam
if req.context_len > req.ctx: return MODELS["long"] # window limit
if req.risk == "high": return MODELS["strong"] # approval ke saath
if is_simple(req): return MODELS["fast"]
return MODELS["default"]
Model cascades — sasta pehle, strong baad mein
Cascade ka matlab: cheapest option pehle try karo, mushkil request strong model par chadho. Easy queries ka bada chunk chhota model handle karta hai, hard queries hi strong tak pahunchti hain.
def cascade(req):
for m in [MODELS["cheap"], MODELS["strong"]]:
out = call(m, req)
if validator(out) is None and confidence(out) >= THRESH:
return out # kaam ban gaya — ruk jao
return escalate_to_human(req) # dono fail — degrade (L9.6)
Provider fallbacks aur unka quality risk
- Outage/429: doosra provider try karo, par per-attempt timeout budget rakho — ek provider ka intezaar doosre ka time nahi kha sakta (L9.6 policies).
- Quality risk: fallback model ka style, format aur nuance alag hota hai. Blind fallback = silent quality drop.
- Format drift: ek model JSON deta hai, doosra markdown — output contract boundary par enforce karo, model pe trust nahi.
- Evals per model: har model apne eval set par (L7) — kabhi bhi "same toh hoga" assume mat karo.
- Rollback flag: naya model default banaya toh ek config flip se wapas — version pin (L9.8).
Auth, limits aur tracking — sab ek jagah
- Keys: gateway config/env mein, app code mein kabhi nahi — rotate karna aasaan.
- Rate limits: per provider per key central counter; client-side guessing se burst handled nahi hote.
- Retries: ek hi policy (budget, backoff, jitter) — har service apna retry laga degi toh storm ban jaayegi.
- Usage tracking: har call par model, task type, tokens, latency, outcome — yahi data L10 ke dashboards ka fuel hai.
- Budgets: per-team/per-feature ceilings — soft limit par alert, hard limit par block.
Exercise
Question: App code aur providers ke beech ki abstraction layer — ek shabd, English?
Question: Sasta model pehle, zaroorat par bada model — ek shabd, English?
Question: Provider down ho toh doosre provider par chal jaana — ek shabd, English?
Question: Har call ka token/latency record karne ka kaam gateway ka kya hai? (ek shabd, English)
Common mistakes
- Hardcoded model calls: Har function mein direct provider call — model badalna release ban jaata hai. Route() + config layer daalo, app code model ka naam kabhi na dekhe.
- Fallback ko quality-free samajhna: Doosre provider ka output style alag hota hai — schema validation aur per-model evals ke bina silent quality drop chala jaata hai. Contract boundary par check karo.
- Har request ko bada model dena: Simple query par strong model = cost aur latency dono bekaar. Cascade + validator se easy traffic chhote par jaati hai — par escalate ka signal measurable rakho.
Har gaadi ko sahi lane mein bhejna police ka kaam hai — chhoti gali chhoti gaadi, highway truck. Gateway wahi traffic police: request dekh ke sahi model lane chunta hai:
simple query -> fast lane (chhota model)
long context -> wide lane (bada window wala)
image input -> separate road (vision model)
provider down-> diversions ON (fallback)- Q: Gateway kya karta hai jo direct SDK call nahi karti? (abstraction, keys, limits, retries, usage tracking, routing)
- Q: Routing ke signals kya honge? (task, context length, latency class, cost budget, risk, modality)
- Q: Cascade kab trigger hota hai aur signal kya hona chahiye? (validator/confidence — mood se nahi, measurable signal se)
- Q: Fallback ke quality risks aur unka fix? (style/format drift — schema contract + per-model evals + rollback flag)
Routing ready. Agla lesson — Latency & Inference Optimization: system dheema kyun hai aur kahan se shuru karein.