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.
This commit is contained in:
Folzo
2026-06-27 16:51:51 +02:00
parent 7a8dc34212
commit 1b4764e9fa
2 changed files with 45 additions and 27 deletions
+24 -11
View File
@@ -1,20 +1,33 @@
# ═══════════════════════════════════════════════════════════ # ═══════════════════════════════════════════════════════════
# OVERRIDE litellm — Ajoute LiteLLM + jean-proxy a la stack Effi # OVERRIDE litellm — Ajoute LiteLLM + jean-proxy a la stack Effi
# ‎ # + configure open-webui pour parler a LiteLLM en mode OpenAI API
# Usage : #
# docker compose -f docker-compose.yml -f docker-compose.litellm.yml up -d litellm jean-proxy # Usage (depuis /home/effi/effi sur serveur Effi) :
# ‎ # docker compose -f docker-compose.yml -f docker-compose.litellm.yml up -d --build
# IMPORTANT : n ajoute QUE les services litellm + jean-proxy. #
# Les services existants (open-webui, wol-proxy, hermes, qdrant, ...) # IMPORTANT : cet override modifie open-webui (ajoute OPENAI_API_BASE_URL +
# ne sont PAS modifies, donc PAS de redemarrage involontaire. # 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.
# Une fois LiteLLM valide (curl :4000/v1/models), on pourra repointer # LiteLLM expose l'API OpenAI (/v1/*), pas l'API Ollama (/api/*) — donc
# open-webui en passant OLLAMA_BASE_URL=http://litellm:4000 — mais c est # open-webui DOIT etre configure via la section "OpenAI API" (admin UI)
# une etape de validation utilisateur, pas automatique. # et non via la section "Ollama".
# ═══════════════════════════════════════════════════════════ # ═══════════════════════════════════════════════════════════
services: 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 # 1. jean-proxy — Reverse-proxy vers Jean (.11:8080) + WOL
# Clone du wol-proxy, meme MAC cible, port cible = 8080 # Clone du wol-proxy, meme MAC cible, port cible = 8080
+21 -16
View File
@@ -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}' -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) : L'override `docker-compose.litellm.yml` configure donc open-webui via la section **OpenAI API** :
```yaml - `OPENAI_API_BASE_URL=http://host.docker.internal:4000/v1`
OLLAMA_BASE_URL=http://host.docker.internal:4000 # LiteLLM au lieu de :3011 - `OPENAI_API_KEY=sk-effi-litellm-master`
``` - `ENABLE_OPENAI_API=True`
2. Ajouter la master key LiteLLM dans `/home/effi/effi/.env` : - `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)
```
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.
ℹ️ 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 ### En cas de rollback