4.8 KiB
#96 — MiniMax Hailuo Video-Failover verdrahtet (2026-07-24)
Ziel: MiniMax Hailuo Video als guenstigen Video-Failover scharf verdrahten (lokal primaer, extern nur Ueberlauf). Katalog #94 + Routingkarte #61 waren bereits gebaut, MiniMax-Video dort nur dokumentiert, nicht aktiv.
1. Credentials (gefunden, nicht in Klartext hier)
Vaultwarden-Item "KI API Keys" (Code-Barby-Sammlung), Eintrag MINIMAX ->
sk-api-... (URL https://api.minimaxi.chat/v1, alte Domain). Zusaetzlich
platform.minimax.io-Login (matthias@consoro.eu) und ein separater
MCP: minimax_api_key-Eintrag vorhanden. Key ist da, noch nicht in die
Orchestrator-Umgebung (MINIMAX_API_KEY) eingetragen -- bewusst, siehe Punkt 5.
2. API verstanden (offizielle Doku, verifiziert 2026-07-24)
- Submit:
POST https://api.minimax.io/v1/video_generation(Bearer-Auth), Modelle u.a.T2V-01(guenstigstes),MiniMax-Hailuo-02,MiniMax-Hailuo-2.3. Felder:model,prompt(<=2000 Zeichen),duration(6 oder 10s),resolution(720P/768P/1080P je Modell),prompt_optimizer. Antwort:task_id. - Poll:
GET https://api.minimax.io/v1/query/video_generation?task_id=...->status(Preparing/Queueing/Processing/Success/Fail), bei Successfile_id. - Download:
GET https://api.minimax.io/v1/files/retrieve?file_id=...->download_url(9h gueltig) -> direkter GET auf die URL liefert die MP4-Bytes. - Kosten: ~$0,017-0,045/s API pay-as-you-go; 6s/720p ca. $0,19-0,56 laut aktueller Web-Recherche (Stand 2026-07).
3. Test-Clip -- NICHT ausgeloest (ehrlich)
Kein echter bezahlter API-Call durchgefuehrt. Das waere ein Kaufvorgang mit einem
hinterlegten API-Key (echtes Geld, wenn auch klein) -- nach den geltenden
Sicherheitsregeln fuer diese Session braucht das eine explizite Freigabe von Baer
im Chat, die in diesem (Sub-)Agent-Kontext nicht live eingeholt werden konnte.
Offener Schritt fuer Baer: GO im Chat -> MINIMAX_API_KEY (aus Vaultwarden) +
CLOUD_VIDEO_FALLBACK_ENABLED=1 in der Orchestrator-Umgebung setzen -> ein 6s-Clip
generieren lassen -> Kosten/Ergebnis hier nachtragen.
Stattdessen wurde die komplette Routing-Logik mit einem gemockten Call (0 Kosten, kein Netzwerk-Request an MiniMax) end-to-end verifiziert -- siehe Punkt 4.
4. Verdrahtung (additiv, reversibel) -- B:\barby\orchestrator\main.py
- Neue Konstanten:
MINIMAX_API_BASE,MINIMAX_API_KEY(env, aktuell leer),MINIMAX_VIDEO_MODEL=T2V-01,MINIMAX_VIDEO_DURATION_S=6,MINIMAX_VIDEO_RESOLUTION=720P. - Neue Funktion
call_minimax_video(prompt): Submit -> Poll (max 600s) -> File-Retrieve -> Download, wirft bei jedem Fehler eine Exception (Aufrufer faengt sie ab, lokal bleibt unberuehrt). run_video_job(): wenn ComfyUI/A40 nicht erreichbar UNDCLOUD_VIDEO_FALLBACK_ENABLED=1UNDMINIMAX_API_KEYgesetzt -> automatischer Failover-Aufruf, sonst exakt das alte Verhalten (Fehlermeldung, kein externer Call). Default ist AUS (Env-Var nicht gesetzt) -- Live-Betrieb unveraendert.- Hybrid-Nachbearbeitung: heruntergeladener Clip laeuft lokal durch
interpolate_motion()(ffmpeg minterpolate, gleiche Pipeline wie die lokalen Wan2.2-Segmente); bei Fehler faellt der Code auf das unbearbeitete Rohvideo zurueck. /health,/pool-status,routing_tiers.json(Video-Tier-5) zeigen den neuen Zustand introspektierbar an (video_overflow_minimax,aktiviert: false).- Backups vor jeder Aenderung:
main.py.bak-minimaxfailover-20260724-084640,routing_tiers.json.bak-minimaxfailover-20260724-084641.
5. Verify (Overflow-Beleg, ohne echten Kostenaufwand)
Test-Skript (Scratchpad, gegen den echten main.py-Code importiert, comfy_system_stats
call_minimax_videogemockt):
- Szenario A (Flag aus, Default-Zustand wie live):
status=error, Fehlermeldung nennt MiniMax als nicht scharf geschaltet -- kein externer Call. - Szenario B (Flag an + Key gesetzt, simuliert Baer-Freigabe): automatischer
Overflow ausgeloest,
job.plan.video_quelle == "minimax_hailuo_failover", lokale Nachbearbeitung versucht (bei Fake-Bytes erwartungsgemaess auf Rohvideo zurueckgefallen -- Fallback-Pfad funktioniert). - Danach:
py_compilegruen, Testinstanz auf Port 8250 hochgefahren und per/health+/routing-mapverifiziert (HTTP 200), erst DANACH die produktive Scheduled-TaskBarbyOrchestrator(Port 8197) sauber neu gestartet (0 laufende Jobs zum Zeitpunkt des Neustarts,jobs.gesamtunveraendert 39 -> kein Job unterbrochen). Live-/health,/pool-status,/routing-mapzeigen die neue Verdrahtung,minimax_aktiviert: false.
Offen fuer Baer
- GO fuer den echten bezahlten Testclip (~$0,19-0,56) inkl. Key-Uebergabe an die Orchestrator-Umgebung.
- Danach
CLOUD_VIDEO_FALLBACK_ENABLED=1dauerhaft setzen (Scheduled-Task-Umgebung), wenn der Testclip ueberzeugt.