Files
nas-runbooks/common/redaction-pro-panne-connectivite-refonte-modeles-20260911.md

4.3 KiB

redaction-pro : panne générale de connectivité + refonte du catalogue de modèles (11/09/2026)

Symptôme signalé

Nabil : "presque rien ne fonctionne dans cette API" concernant les modèles gratuits de redaction-pro (llm.bolbol.tn).

Cause racine (pas un problème de modèles)

nginx.conf de redaction-pro pointait vers un hostname Docker (bifrost, port 8080) qui n'existe plus depuis la migration de Bifrost vers le VPS. Ce stub a été décommissionné (nettoyage prévu par le ticket infra-2026-09-030) sans que redaction-pro soit migré vers le relais actuel (bifrost-proxy, socat vers le VPS via Tailscale). Résultat : 100% des appels via /api/ échouaient (502), indépendamment du modèle choisi — les seuls modèles qui fonctionnaient encore étaient les 3 Cloudflare Workers AI, qui appellent Cloudflare directement sans passer par Bifrost.

Corrections apportées

1. nginx.confset $bifrost_upstream repointé de http://bifrost:8080 vers http://bifrost-proxy:80, header d'auth changé de x-bf-vk vers Authorization: Bearer <vk> (bifrost-proxy n'accepte pas x-bf-vk, piège déjà documenté). Nouveau bloc /api/ocfree/ ajouté : appel direct et keyless vers https://opencode.ai/zen/v1/ (tier gratuit OpenCode Zen, header x-opencode-session statique) — donne accès à mimo-v2.5-free, immunisé au quota du compte OpenCode Go payant.

Piège rencontré : nginx.conf était monté en bind-mount fichier unique dans le conteneur (pas un dossier). Un premier correctif fait via rm + recréation a laissé le conteneur sur l'ancien contenu (l'inode du bind-mount fichier reste épinglé à l'ancien fichier). nginx -s reload n'a rien changé non plus. Un docker restart complet a été nécessaire pour que le nouveau bind-mount prenne. À l'inverse, html/ est monté en dossier — rm+recréation d'un fichier à l'intérieur fonctionne sans problème, pas de restart requis pour du contenu statique.

2. index.html — audit complet des 18 modèles listés, chacun testé en direct via le vrai chemin /api/ de l'app (pas une supposition) :

  • Cloudflare (3), Groq (2), Google AI Studio (2) : tous confirmés fonctionnels, inchangés dans leur logique, juste reclassés en tête.
  • Nouveau : ocfree/mimo-v2.5-free ajouté (voir ci-dessus), avec la logique de routing JS étendue (isOCFree, prefixe ocfree/) symétrique à celle déjà en place pour cf/.
  • Les 5 modèles OpenCode Go (hy3, deepseek-v4-flash, glm-5.2, kimi-k2.6, mimo-v2.5) sont retombés en 429 "Monthly usage limit reached" pendant l'audit (le forfait signalé à 99,6% la veille a fini par s'épuiser complètement) -- laissés dans la liste (pas disabled, ils redeviendront utilisables tout seuls au renouvellement sous ~1 jour) mais reclassés après les options garanties disponibles, avec description à jour.
  • Les entrées déjà marquées indisponibles ont été revérifiées : google/gemma-4-12b-it toujours 404 (mort), les 3 modèles OpenRouter payants toujours 403 (bloqués VK). Les 2 modèles OpenRouter "gratuits" (Nemotron Nano/Super via NIM-label mais réellement routés OpenRouter) échouent en 502 à cause du bug Bifrost→OpenRouter documenté le 11/09/2026 (voir runbook urgence-llm-gratuits-fallback-20260911.md) -- désormais marqués disabled avec la raison exacte (panne infra, pas le modèle).
  • Modèle par défaut du mode "memo" changé de opencode/deepseek-v4-flash (bloqué par le quota épuisé) vers groq/openai/gpt-oss-120b (rapide, fiable, confirmé). ocfree/mimo-v2.5-free envisagé comme défaut mais écarté : rate-limit réel observé en direct (429 "FreeUsageLimitError") sur un tier gratuit destiné à un usage ponctuel, pas comme modèle par défaut d'un mode à fort trafic -- laissé disponible dans la liste comme option manuelle.

Backups : nginx.conf.bak-20260911-urgence, nginx.conf.bak-20260911-ocfree, html/index.html.bak-20260911-urgence.

Reste à faire

  • Revoir demain (une fois le quota OpenCode Go renouvelé) que les 5 modèles opencode/* refonctionnent normalement, retirer les mentions "quota épuisé" de leur description.
  • Le bug Bifrost→OpenRouter (routage cassé, cf. runbook du 11/09) reste la cause des 2 entrées Nemotron désactivées -- se résoudra automatiquement une fois ce bug traité, à revérifier à ce moment-là.