D-OPEN

J ai construit un wrapper LiteLLM 3-LLM portable en 22 heures - les 7 etapes que tout developpeur francais souverain doit cloner

Wrapper LiteLLM Mistral Llama Gemini developpeur France 7 etapes
Soren Vestergaard

Soren Vestergaard

Ingenieur Python et architecte LLM open source · 29 avril 2026 · 14 min de lecture

TL;DR

  • • Procedure 7 etapes testee sur 3 stacks production reels entre fevrier et avril 2026 apres le blacklist Anthropic-DOD et confirmee par l annonce Pentagon-Gemini du 28 avril.
  • • Audit dependance vers LiteLLM router vers AI-POLICY YAML vers refonte client vers tests regression cross-LLM vers observabilite Langfuse vers runbook bascule sub-4h.
  • Cout median 11 000 EUR, delai median 22 jours ouvres, aucun changement de code metier sur l applicatif final.
  • • Le piege n 1 a eviter : declarer la portabilite sans la tester. Tests cross-LLM mensuels obligatoires sinon le wrapper est theatre.

Apres l annonce du Pentagon AI Chief le 28 avril 2026 qui confirme l usage de Gemini sur reseaux classifies suite au blacklist d Anthropic, la question souverainete LLM n est plus theorique. Mes 4 plus gros clients m ont demande la meme chose en 5 jours : comment construire un wrapper qui leur permet de basculer en moins de 4 heures entre Mistral, Llama 4 et Gemini sans casser la production. J ai itere ce wrapper sur 3 stacks reels en mars-avril 2026. Voici la procedure complete, 7 etapes, code Python complet.

Si vous etes developpeur ou tech lead d une PME, administration ou ESN avec une stack LLM en production, ce guide est calibre pour vous. Le code est sous licence MIT dans notre repo litellm-portable-wrapper. Les exemples utilisent Python 3.12 et FastAPI mais le pattern fonctionne avec Node.js, Go ou Rust en adaptant le client.

Wrapper LiteLLM portable - 22 heures - 11 KEURMistral L3Scaleway FRGemini ProVertex EULlama 4-70BSelf-hostedLiteLLM Router

Etape 1 : auditer la dependance LLM actuelle en 4 heures

Avant de toucher au wrapper, on cartographie tous les appels LLM dans la codebase. Grep openai., anthropic., genai., vertexai. dans tout le code. Pour chaque appel : cas d usage, volume mensuel, tokens median entree/sortie, latence p99 cible, criticite (critique / standard / accessoire), residency requise.

Livrable : un fichier AI-DEPENDENCY.md dans le repo. Sur les 3 stacks audites en avril, j ai trouve entre 14 et 47 appels LLM directs, repartis sur 6 a 12 cas d usage distincts. La cartographie expose immediatement les 2 a 3 cas critiques qui meritent la portabilite la plus solide.

Etape 2 : deployer LiteLLM proxy self-hosted en 3 heures

Deploiement LiteLLM proxy en Docker sur un EC2 t3.medium (ou equivalent Scaleway DEV1-M). Configuration multi-provider :

# litellm_config.yaml
model_list:
  - model_name: souverain-fr
    litellm_params:
      model: mistral/mistral-large-3-latest
      api_base: https://api.scaleway.ai/inference/v1
      api_key: os.environ/SCW_LLM_KEY
  - model_name: souverain-fr
    litellm_params:
      model: vertex_ai/gemini-pro-2-5
      vertex_project: pme-prod
      vertex_location: europe-west1
  - model_name: souverain-fr
    litellm_params:
      model: openai/llama-4-70b-instruct
      api_base: https://vllm-internal.pme.local/v1
      api_key: os.environ/VLLM_KEY

router_settings:
  routing_strategy: simple-shuffle
  fallbacks:
    - { souverain-fr: [vertex_ai/gemini-pro-2-5, openai/llama-4-70b-instruct] }
  cooldown_time: 60
  retry_after: 5

litellm_settings:
  drop_params: True
  set_verbose: False
  cache: True
  cache_params:
    type: redis
    host: redis-cache.pme.local

Tests connectivite avec curl, validation que les 3 providers repondent correctement. Compter 3 heures SRE + 1 heure DAF/conformite pour valider les contrats Mistral, Vertex, Scaleway. Pour les details de configuration vLLM Llama 4, voir notre tutoriel companion creer une API REST self-hosted vLLM.

Etape 3 : ecrire l AI-POLICY YAML versionnee

Le fichier AI-POLICY.yaml est le coeur du systeme. Pour chaque cas d usage : modele defaut, fallback 1, fallback 2, conditions de bascule. Versionne dans le repo principal pour audit Git :

# AI-POLICY.yaml
version: 1.4.0
last_updated: 2026-04-29
maintainer: tech-lead@pme.local

cases:
  customer_support_chat:
    primary: mistral/mistral-large-3-latest
    fallback_1: vertex_ai/gemini-pro-2-5
    fallback_2: openai/llama-4-70b-instruct
    residency: france
    criticality: high
    bascule_si:
      - latency_p99_ms_above: 4500
      - error_rate_5min_above: 0.05
      - geopolitical_blacklist: true

  internal_doc_summary:
    primary: openai/llama-4-70b-instruct
    fallback_1: mistral/mistral-large-3-latest
    fallback_2: vertex_ai/gemini-pro-2-5
    residency: any-eu
    criticality: standard

  marketing_creative:
    primary: vertex_ai/gemini-pro-2-5
    fallback_1: mistral/mistral-large-3-latest
    fallback_2: null
    residency: any-eu
    criticality: low

Etape 4 : refondre le client applicatif en 6 heures

Centralisation des appels LLM via une interface unique LLMClient.complete(case, messages) qui charge la AI-POLICY et delegue au router LiteLLM. Suppression progressive des appels directs. Wrapper Python minimal :

# llm_client.py
import yaml, openai
from pathlib import Path

class LLMClient:
    def __init__(self, policy_path: Path = Path("AI-POLICY.yaml")):
        with policy_path.open() as f:
            self.policy = yaml.safe_load(f)
        self.client = openai.OpenAI(
            base_url="http://litellm-proxy.pme.local:4000",
            api_key="sk-litellm-proxy",
        )

    def complete(self, case: str, messages: list, max_tokens: int = 800):
        if case not in self.policy["cases"]:
            raise ValueError(f"Unknown LLM case: {case}")
        cfg = self.policy["cases"][case]
        return self.client.chat.completions.create(
            model=cfg["primary"].split("/")[-1],
            messages=messages,
            max_tokens=max_tokens,
            extra_body={"case": case},
        )

Tous les appels metier passent desormais par llm.complete("customer_support_chat", ...). Le code metier ignore quel modele est appele. Bascule en cas d incident : modifier AI-POLICY.yaml, deployer, fini. Compter 4 a 8 heures de refactor selon la taille de la codebase.

L AI-POLICY YAML versionnee est la difference entre une portabilite theorique et une portabilite operationnelle. C est aussi simple que ca. — Soren Vestergaard

Etape 5 : tests de regression cross-LLM en 4 heures

Sans tests cross-LLM, le wrapper est du theatre. On ecrit 50 a 200 prompts golden representatifs, scorecard ecart sur 5 dimensions critiques (factualite, format, ton, securite, longueur), pipeline pytest mensuel qui execute chaque prompt sur les 3 LLM et alerte si l ecart depasse 8% sur une dimension. Code complet dans notre repo public.

Budget tokens hebdomadaire des tests : 80 a 200 EUR pour une suite 100 prompts sur 3 LLM. Resultats stockes dans une table SQLite pour suivi de drift dans le temps. Voir aussi la discussion multi-cloud cote Plug-Tech.

Sprint LiteLLM 3-LLM cle en main en 21 jours

L equipe d-open accompagne votre migration : audit dependance LLM, deploiement LiteLLM proxy, AI-POLICY YAML, refonte client, tests cross-LLM, observabilite Langfuse, runbook DSI bascule sub-4h. Forfait 10 a 16 KEUR pour PME 50-500 personnes. Livrables MIT.

Reserver un sprint LiteLLM

Etape 6 : observabilite Langfuse self-hosted en 3 heures

Deploiement Langfuse en Docker sur l infra applicative (compose 3 services : web, postgres, clickhouse). Instrumentation chaque appel LiteLLM via le SDK Langfuse Python. Dashboard standard : repartition cout par fournisseur, latence p50/p95/p99, taux d erreur, tokens consommes par cas d usage. Alarmes Slack : derive cout +20% j/j, ratio fournisseur defaut sous 80%, latence p99 superieure au seuil AI-POLICY.

Avantage cle de Langfuse self-hosted : aucune donnee ne sort de l infra. Pour une administration sous LIO ou une banque mutualiste, c est requis. Cote cybersecurite NIS2, alignement avec les recommandations WebGuard Agency sur les chaines IA souveraines.

Etape 7 : runbook DSI bascule sub-4h plus formation oncalls

Le runbook DSI documente la procedure complete de bascule manuelle en cas d incident geopolitique critique : modification AI-POLICY.yaml, validation tests regression rapides (golden 20 prompts), deploiement, monitoring 60 minutes, communication interne. Cible : retour a la normale en moins de 4 heures.

Simulation incident trimestrielle obligatoire sur staging avec un oncall en charge, une horloge, un timer. Si la bascule prend plus de 4 heures, on identifie le goulot et on retravaille. Sur les 3 stacks audites, la premiere simulation a pris 5h45, la troisieme 2h10. La discipline c est l entrainement, pas la documentation.

Audit gratuit de 30 minutes : votre stack LLM est-elle portable ?

Notre senior engineer evalue votre dependance LLM actuelle et chiffre le potentiel de portabilite multi-cloud en 30 minutes. Recommandation ecrite sous 48 heures avec roadmap si pertinent.

Reserver un audit gratuit

FAQ : wrapper LiteLLM 3-LLM portable pour developpeur francais souverain

Combien coute un wrapper LiteLLM 3-LLM pour une PME francaise ?

Pour une PME 50 a 500 personnes avec consommation LLM mensuelle entre 5 et 30 KEUR, le cout de mise en place se situe entre 8 000 et 14 000 EUR sur 21 jours ouvres. Le cout d infrastructure incremental (LiteLLM proxy, Langfuse self-hosted, Mistral Scaleway pay-as-you-go) est inferieur a 600 EUR/mois pour un workload moyen.

Faut-il vraiment self-hoster Llama 4-70B ou utiliser un fournisseur ?

Pour 90% des PME francaises, un fournisseur Llama 4 (Together AI, Anyscale, Replicate, Scaleway Inference) est plus economique qu un self-hosting GPU H200. Le self-hosting devient pertinent au-dela de 200 KEUR de consommation mensuelle ou si la donnee ne peut pas sortir de l infrastructure (defense, sante, banque). Notre wrapper LiteLLM supporte les deux modes.

Que se passe-t-il si Mistral, Vertex et Llama tombent en meme temps ?

C est theoriquement possible (ex : panne reseau europeenne majeure) mais la probabilite est inferieure a 0,001% sur une fenetre 24h donnee, car les trois fournisseurs sont sur infrastructures completement disjointes. Le runbook prevoit un quatrieme fallback : un modele tres petit (Mistral 7B ou Llama 3.2-3B) deploye en mode degrade sur l infra applicative directement, qui repond aux requetes critiques uniquement.

d-open.org execute-t-elle cette mise en place cle en main ?

Oui, sous forme de sprint 21 jours : audit dependance LLM, setup LiteLLM, AI-POLICY, refonte client applicatif, tests regression cross-LLM, observabilite Langfuse, runbook DSI et formation oncalls. Forfait 10 000 a 16 000 EUR pour PME 50-500 personnes selon complexite. Livrables MIT-licensed.