Hoppa till innehållet
AI-grafen
E· Universitetai-produktutveckling· ca 60 min· utvecklande· verifierad 2026-09-20

Fallback och degradering i AI-tjänster

Kunna designa kill-switches och degraderade lägen så att tjänsten aldrig går helt ner.

Förkunskaper

Intuition

En AI-tjänst beror på saker du inte kontrollerar: LLM-leverantören, GPU:n, en vektordatabas, en budget. Alla kommer att fela. Frågan är vad användaren ser då.

Degradering = tjänsten gör mindre men går inte ner:

  • LLM nere → förskrivna förklaringar, regelbaserad rättning, «handledaren är tillfälligt avstängd».
  • Retrieval nere → svara utan källor men säg det.
  • Budget slut → stäng dyra funktioner, behåll billiga.

Kill-switch = en flagga en människa kan slå på på sekunder, utan deploy: LLM_OFF, SIGNUP_OFF, PANIC (bara statisk sida). Den behövs för incidenter du inte förutsett.

Regeln: fel i beroenden degraderar; fel i egen logik stoppar (hellre 503 än fel svar). Och degraderingen måste testas — en fallback som aldrig körts fungerar inte.

Kod

import time, httpx, logging
log = logging.getLogger("svc")

class LLMRouter:
    def __init__(self, flags, budget):
        self.flags, self.budget = flags, budget
        self.fail_until = 0.0                      # enkel circuit breaker

    async def complete(self, prompt, fallback_text):
        if self.flags.get("LLM_OFF"):
            return fallback_text, "degraded:flag"
        if self.budget.exhausted():
            return fallback_text, "degraded:budget"
        if time.time() < self.fail_until:
            return fallback_text, "degraded:breaker"
        try:
            async with httpx.AsyncClient(timeout=20) as c:
                r = await c.post(URL, json={"prompt": prompt}); r.raise_for_status()
            self.budget.charge(r.json()["usage"])
            return r.json()["text"], "ok"
        except (httpx.HTTPError, KeyError) as e:
            log.warning("llm_fail %s", type(e).__name__)
            self.fail_until = time.time() + 60        # öppna brytaren en minut
            return fallback_text, "degraded:error"

# test: patcha httpx så att anropet failar → förvänta fallback_text och status som börjar med "degraded"

AI-grafens egen LLMRouter gör exakt detta: ops.flag, dagsbudget och fallback till nodens förskrivna text.

Behärskning innebär

  • Designar kill-switches och degraderade lägen
  • Skiljer fel som ska stoppa tjänsten från fel som ska degradera
  • Testar degraderingen, inte bara lyckade vägen

Logga in för att göra övningarna och bygga upp din behärskning.

Källor

Alla källor och licenser