feat: jean-router — routing dynamique Jean + Ollama

- jean-router interroge /api/presets pour lister dynamiquement les presets Jean
- Support Ollama via /api/tags pour les modèles vision
- Switch automatique de preset quand nécessaire
- Expose /v1/models avec tous les modèles disponibles
- Route les requêtes vers Jean ou Ollama selon le modèle demandé
- Nouveaux presets Jean automatiquement visibles dans OpenWebUI

Architecture:
  open-webui → LiteLLM:4000 → jean-router:3014
                                ├→ jean-proxy:3012 → Jean (.11:8080)
                                └→ wol-proxy:3011 → Ollama (.11:11434)
This commit is contained in:
Folzo
2026-07-20 10:10:18 +02:00
parent d566adbf93
commit fcad41521e
5 changed files with 370 additions and 101 deletions
+13 -99
View File
@@ -1,112 +1,26 @@
# ═══════════════════════════════════════════════════════════
# LiteLLM Proxy — Routing pour Effi
# LiteLLM Proxy — Routing pour Effi via jean-router
# Endpoint OpenAI-compatible sur :4000 (host network)
# ‎
# Backend unique : JeanOrchestrator (port 8080 sur PC gaming .11)
# via jean-proxy :3012 + WOL auto si PC eteint.
# ‎
# L'orchestrateur gere automatiquement le switch entre :
# - Qwen3.6-35B MoE I-Nano (defaut, 11.7 Go, 100k ctx, ~70 tok/s)
# - Qwen3.6-27B IQ4_XS (code/analyse, 14.6 Go, 55k ctx, ~60 tok/s)
# ‎
# Tous les modeles passent par le meme proxy :3012.
# L'orchestrateur detecte le modele demande et charge le bon LLM.
# Retour automatique au MoE apres 15 min sans 27B.
#
# jean-router (:3014) gère dynamiquement :
# - Liste des presets Jean (avec switch automatique)
# - Liste des modèles Ollama
# - Routing vers le bon backend
#
# LiteLLM sert uniquement de proxy OpenAI unifié pour OpenWebUI.
# ═══════════════════════════════════════════════════════════
model_list:
# ═════════════════════════════════════════════════════════
# Profil 1 — Raisonnement ON (défaut, pour tâches complexes)
# Le modele reflechit (jusqu'a 2048 tokens de reasoning_content)
# avant de produire sa reponse. Bon pour code, analyse, RAG, rapports.
# ═════════════════════════════════════════════════════════
- model_name: qwen3.6-reason
- model_name: jean
litellm_params:
model: openai/qwen3.6-reason
api_base: http://localhost:3012/v1
model: openai/*
api_base: http://localhost:3014/v1
api_key: "null"
timeout: 600
extra_body:
chat_template_kwargs:
enable_thinking: true
- model_name: qwen3.6-27b
litellm_params:
model: openai/qwen3.6-27b
api_base: http://localhost:3012/v1
api_key: "null"
timeout: 600
extra_body:
chat_template_kwargs:
enable_thinking: true
# ═════════════════════════════════════════════════════════
# Profil 2 — Raisonnement OFF (chat rapide, ~5x moins de latence)
# Reponse immediate (TTFT <1s) sans phase de reflexion.
# Ideal pour : chat interactif, redaction de mail, extraction
# structuree simple, Q/R directes.
# ═════════════════════════════════════════════════════════
- model_name: qwen3.6-fast
litellm_params:
model: openai/qwen3.6-fast
api_base: http://localhost:3012/v1
api_key: "null"
timeout: 600
extra_body:
chat_template_kwargs:
enable_thinking: false
# Alias court "qwen3.6" = fast par defaut (usage chat le plus courant)
- model_name: qwen3.6
litellm_params:
model: openai/qwen3.6
api_base: http://localhost:3012/v1
api_key: "null"
timeout: 600
extra_body:
chat_template_kwargs:
enable_thinking: false
# ═════════════════════════════════════════════════════════
# Profil 3 — Qwen3.6-35B MoE APEX I-Nano (chat Hermes, usage quotidien)
# Modele MoE : 35B total / 3B actifs, 11.7 Go, cache KV 5x plus petit
# que le 27B -> contexte 100k possible. Cohabite avec ComfyUI.
# Route via le meme proxy :3012 que le 27B (orchestrateur fait le switch).
# ═════════════════════════════════════════════════════════
- model_name: qwen3.6-moe
litellm_params:
model: openai/qwen3.6-moe
api_base: http://localhost:3012/v1
api_key: "null"
timeout: 600
extra_body:
chat_template_kwargs:
enable_thinking: false
- model_name: qwen3.6-moe-reason
litellm_params:
model: openai/qwen3.6-moe-reason
api_base: http://localhost:3012/v1
api_key: "null"
timeout: 600
extra_body:
chat_template_kwargs:
enable_thinking: true
# ═════════════════════════════════════════════════════════
# Backend Ollama — COMMENTE (contention VRAM, voir entete)
# Pour reactiver si dispo (autre machine / GPU dedie), decommenter
# et s'assurer que le GPU peut charger les deux modeles.
# ═════════════════════════════════════════════════════════
# - model_name: llama3.1-8b
# litellm_params:
# model: ollama/llama3.1:8b
# api_base: http://localhost:3011
# timeout: 600
litellm_settings:
drop_params: false # ne pas dropper: on veut passer chat_template_kwargs a Jean
drop_params: false
telemetry: false
general_settings:
master_key: sk-effi-litellm-master
master_key: sk-effi-litellm-master