From 1b4764e9faf3b29255804d2cc881cef6e6624375 Mon Sep 17 00:00:00 2001 From: Folzo Date: Sat, 27 Jun 2026 16:51:51 +0200 Subject: [PATCH] fix(litellm): open-webui via OpenAI API (pas Ollama) + 3 profils Qwen3.6 LiteLLM expose l'API OpenAI /v1/* pas l'API Ollama /api/*. open-webui doit etre branche via la section 'OpenAI API' (env OPENAI_API_BASE_URL + OPENAI_API_KEY), pas via 'Ollama'. L'override ajoute ces vars a open-webui, force-recreate pour propager. Confirme en prod: HTTP 200 sur :4000/v1/models depuis le conteneur open-webui. Les 4 modeles Qwen3.6 remontent dans le chat. --- docker-compose.litellm.yml | 35 +++++++++++++++++++++++----------- docs/ARCHITECTURE-LITELLM.md | 37 ++++++++++++++++++++---------------- 2 files changed, 45 insertions(+), 27 deletions(-) diff --git a/docker-compose.litellm.yml b/docker-compose.litellm.yml index 5eef6b5..b6e55e3 100644 --- a/docker-compose.litellm.yml +++ b/docker-compose.litellm.yml @@ -1,20 +1,33 @@ # ═══════════════════════════════════════════════════════════ # OVERRIDE litellm — Ajoute LiteLLM + jean-proxy a la stack Effi -# ‎ -# Usage : -# docker compose -f docker-compose.yml -f docker-compose.litellm.yml up -d litellm jean-proxy -# ‎ -# IMPORTANT : n ajoute QUE les services litellm + jean-proxy. -# Les services existants (open-webui, wol-proxy, hermes, qdrant, ...) -# ne sont PAS modifies, donc PAS de redemarrage involontaire. -# ‎ -# Une fois LiteLLM valide (curl :4000/v1/models), on pourra repointer -# open-webui en passant OLLAMA_BASE_URL=http://litellm:4000 — mais c est -# une etape de validation utilisateur, pas automatique. +# + configure open-webui pour parler a LiteLLM en mode OpenAI API +# +# Usage (depuis /home/effi/effi sur serveur Effi) : +# docker compose -f docker-compose.yml -f docker-compose.litellm.yml up -d --build +# +# IMPORTANT : cet override modifie open-webui (ajoute OPENAI_API_BASE_URL + +# OPENAI_API_KEY + remet OLLAMA_BASE_URL sur le wol-proxy originel :3011). +# open-webui sera recree a la prochaine 'up --force-recreate' pour propager. +# LiteLLM expose l'API OpenAI (/v1/*), pas l'API Ollama (/api/*) — donc +# open-webui DOIT etre configure via la section "OpenAI API" (admin UI) +# et non via la section "Ollama". # ═══════════════════════════════════════════════════════════ services: + # ───────────────────────────────────────────────────────── + # open-webui — repointe vers LiteLLM via connexion OpenAI API + # L'ancien backend Ollama (wol-proxy :3011) reste configuré pour + # retrocomparabilité mais le LLM Jhon/Ollama n'est plus accessible + # la nuit (contention VRAM). Le routing par modele se fait cote LiteLLM. + # ───────────────────────────────────────────────────────── + open-webui: + environment: + - OLLAMA_BASE_URL=http://host.docker.internal:3011 + - OPENAI_API_BASE_URL=http://host.docker.internal:4000/v1 + - OPENAI_API_KEY=sk-effi-litellm-master + - ENABLE_OPENAI_API=True + # ───────────────────────────────────────────────────────── # 1. jean-proxy — Reverse-proxy vers Jean (.11:8080) + WOL # Clone du wol-proxy, meme MAC cible, port cible = 8080 diff --git a/docs/ARCHITECTURE-LITELLM.md b/docs/ARCHITECTURE-LITELLM.md index 28447e7..78c76cf 100644 --- a/docs/ARCHITECTURE-LITELLM.md +++ b/docs/ARCHITECTURE-LITELLM.md @@ -107,25 +107,30 @@ curl -s -X POST http://localhost:4000/v1/chat/completions \ -d '{"model":"llama3.1","messages":[{"role":"user","content":"Bonjour"}],"max_tokens":30}' ``` -### Commutation de open-webui vers LiteLLM (étape utilisateur) +### Commutation de open-webui vers LiteLLM — réalisée -Une fois les tests validés : +⚠️ LiteLLM expose l'**API OpenAI** (`/v1/*`), **pas** l'API Ollama (`/api/*`). +open-webui ne peut donc pas brancher LiteLLM sur sa section "Ollama" (≠ protocole). -1. Éditer `/home/effi/effi/docker-compose.yml` (seulement cette ligne) : - ```yaml - OLLAMA_BASE_URL=http://host.docker.internal:4000 # LiteLLM au lieu de :3011 - ``` -2. Ajouter la master key LiteLLM dans `/home/effi/effi/.env` : - ``` - LITELLM_MASTER_KEY=sk-effi-litellm-master - ``` -3. Redémarrer open-webui uniquement : - ```bash - docker compose -f docker-compose.yml -f docker-compose.litellm.yml up -d open-webui - ``` -4. Dans open-webui : Admin → Settings → Connections → l'URL est déjà `http://host.docker.internal:4000`. Vérifier que les deux modèles apparaissent dans le dropdown. +L'override `docker-compose.litellm.yml` configure donc open-webui via la section **OpenAI API** : +- `OPENAI_API_BASE_URL=http://host.docker.internal:4000/v1` +- `OPENAI_API_KEY=sk-effi-litellm-master` +- `ENABLE_OPENAI_API=True` +- `OLLAMA_BASE_URL=http://host.docker.internal:3011` (conservé pour rétrocompat — mais le PC gaming OOM si Jean tourne, donc ce backend ne remonte pas de modèles) -ℹ️ Cette étape est volontairement laissée manuelle — c'est l'unique impact sur le service en prod (1 redémarrage open-webui). Hermes, wol-proxy, qdrant etc. ne sont pas touchés. +Appliqué via : +```bash +docker compose -f docker-compose.yml -f docker-compose.litellm.yml up -d --force-recreate open-webui +``` + +Dans l'UI open-webui : **Admin → Settings → Connections → "OpenAI API"**. L'URL est pré-remplie (`http://host.docker.internal:4000/v1`) et la clé `sk-effi-litellm-master`. Les 4 modèles Qwen3.6 (`qwen3.6-reason`, `qwen3.6-27b`, `qwen3.6-fast`, `qwen3.6`) apparaissent dans le dropdown du chat. + +### Modèles exposés (profil Qwen3.6 — vramp oblige) + +| Modèle dans open-webui | Raisonnement | Quand l'utiliser | Latence TTFT | +|---|---|---|---| +| `qwen3.6-fast` / `qwen3.6` | OFF | Chat, mail, extraction simple | ~0.4-1 s | +| `qwen3.6-reason` / `qwen3.6-27b` | ON | Code, analyse, rapports, RAG, tâches complexes | 10-40 s | ### En cas de rollback