Skip to content

← Producció

Fallbacks i resiliència

A producció un model o proveïdor fallarà; munta una cadena de fallbacks, posa timeouts i degrada amb elegància.

6 slides 5 min de lectura
  1. OpenRouter · Producció

    Fallbacks i resiliència

    Quan un model cau, l'app ha de seguir responent.

    OpenRouter · Producció arlaf.dev
  2. Tot fallarà, és qüestió de quan

    Un sol model o proveïdor patirà caigudes, latència alta o rate-limits. No és pessimisme — és planificació. Si la teva app depèn d'un únic slug, depèn de la sort.

    OpenRouter · Producció arlaf.dev
  3. La cadena de fallbacks

    OpenRouter et deixa enviar un array de models: prova el primer i, si falla, salta al següent. Combina-ho amb les preferències de proveïdor per encadenar alternatives.

    • Posa el model preferit primer i alternatives equivalents després.
    • Deixa un model més petit i barat com a últim recurs.
    • Permet que OpenRouter provi altres proveïdors del mateix model.
    OpenRouter · Producció arlaf.dev
  4. Un body de petició resilient

    {
      "models": [
        "openai/gpt-4o",
        "anthropic/claude-3.5-sonnet",
        "meta-llama/llama-3.1-8b-instruct"
      ],
      "provider": {
        "allow_fallbacks": true,
        "sort": "throughput"
      },
      "messages": [
        { "role": "user", "content": "Resumeix aquest text..." }
      ]
    }
    
    OpenRouter · Producció arlaf.dev
  5. La teva banda també compta

    Els fallbacks del gateway no et salven de tot. Posa un timeout raonable a la teva crida, fes algun reintent amb backoff i decideix què mostres a l'usuari si tot falla — mai una pantalla en blanc.

    OpenRouter · Producció arlaf.dev
  6. No acoblis l'app a un sol slug. Acobla-la a una capacitat, amb diversos models que la cobreixin.
    OpenRouter · Producció arlaf.dev
Llegir la nota completa

A producció les coses fallen, i has d’estar-hi preparat. Un proveïdor té una caiguda, un model et retorna un rate-limit en hora punta, la latència es dispara sense avís. Si tota la teva app penja d’un únic model, qualsevol d’aquests incidents la tomba sencera.

La cadena de fallbacks

OpenRouter resol bona part del problema deixant-te enviar un array de models en comptes d’un de sol. Prova el primer; si no respon, salta automàticament al següent, i així successivament. La idea és ordenar-los de millor a pitjor:

  • El model preferit primer — el que dóna la qualitat que vols.
  • Una o dues alternatives equivalents d’altres proveïdors.
  • Un model petit i barat com a últim recurs: pitjor resposta, però resposta.

A més, l’objecte provider controla com es trien proveïdors per a un mateix model. Amb allow_fallbacks actiu, si el proveïdor preferit no està disponible OpenRouter en prova un altre que serveixi el mateix model.

Nota: els noms exactes dels camps (models, provider, allow_fallbacks) i les opcions disponibles poden canviar. Contrasta’ls amb la documentació d’OpenRouter abans de fixar-los al codi.

El que has de fer tu

Els fallbacks del gateway són la meitat de la història; l’altra meitat és la teva. A la teva banda:

  • Posa un timeout raonable a cada crida perquè una petició penjada no bloquegi tot el flux.
  • Fes reintents amb backoff per als errors transitoris, però amb un sostre — reintentar infinitament només multiplica el cost.
  • Degrada amb elegància: si res respon, mostra un missatge clar o un resultat parcial, mai una pantalla en blanc ni una excepció crua.

La conclusió: no acoblis l’app a un slug concret. Acobla-la a una capacitat —“un model que sàpiga resumir”— i deixa diversos models darrere que la puguin cobrir. Així, quan un caigui, l’usuari ni se n’assabenta.