LiteLLM en UE : Claude via Bedrock
Hébergez LiteLLM dans l'UE comme passerelle Claude sur Bedrock : port 4000, budgets Postgres inopérants sans base, profil eu.anthropic.claude-sonnet-5.
TL;DR
LiteLLM est une passerelle que vous exploitez devant Claude. Lancez la version v1.103.0 dans votre réseau UE sur le port 4000, avec Postgres, et appelez Bedrock en bedrock/eu.anthropic.claude-sonnet-5. Ce profil garde les données Sonnet 5 dans les régions UE. OpenRouter peut envoyer des données personnelles vers des serveurs aux États-Unis. Un budget sans base ne stoppe pas la dépense.
Que change une passerelle LiteLLM pour une équipe européenne ?
Le proxy LiteLLM est une passerelle compatible OpenAI que vous faites tourner vous-même. Les applications envoient une requête de chat à votre hôte. Le proxy contrôle une clé virtuelle, enregistre la dépense et transmet l’appel à Bedrock, Vertex, Anthropic ou un autre fournisseur. Le guide CLI décrit une interface unique pour plus de 100 LLM, le suivi des coûts, des clés virtuelles et la répartition de charge. Les tests de charge dépassent 1 500 requêtes par seconde.
La question européenne est l’endroit où ce processus tourne. Une passerelle sur un portable, ou chez un routeur SaaS américain, stocke les prompts et les journaux de dépense hors de votre contrôle. Une passerelle sur une VM à Francfort ou en Irlande, qui n’appelle qu’un profil Bedrock UE, garde le journal et l’appel modèle en Europe. Nous recommandons cette coupure : LiteLLM pour les clés et les budgets, Bedrock pour le modèle. Quels modèles ont vraiment un profil UE, c’est dans notre guide Amazon Bedrock. Le prix des tokens derrière la passerelle est dans notre comparatif des prix de l’API Claude.
Le code hors du répertoire enterprise/ est sous licence MIT, copyright 2023 Berri AI. La LICENSE place tout ce qui est sous enterprise/ sur une licence séparée. Exploitez le proxy open source. Ne supposez pas que les fonctions entreprise sont gratuites parce que le dépôt GitHub est public.
Version actuelle : v1.103.0, publiée le 28 septembre 2026. LiteLLM 1.84.0 et les suivantes exigent Python 3.10 ou plus. Un pip install nu sur un interpréteur plus ancien ne plante pas. Il se résout en silence vers 1.83.9, la dernière version qui acceptait encore ce Python. Vérifiez python --version avant d’installer, ou utilisez uv tool install 'litellm[proxy]', qui provisionne un interpréteur compatible.
Comment démarrer LiteLLM avec une base ?
Le guide Docker est l’installation que nous ferions tourner. Un fichier Compose lance la passerelle sur le port 4000 et une base Postgres 16 pour les modèles, les clés virtuelles et les journaux de dépense. L’image de ce fichier est docker.litellm.ai/berriai/litellm:main-stable. La même page dit qu’au-delà d’un essai local il faut épingler un tag de version. main-stable bouge. Épinglez v1.103.0 une fois le test fait.
Sans deux secrets, le proxy refuse de démarrer :
- Générez
LITELLM_MASTER_KEYetLITELLM_SALT_KEY. La doc utiliseopenssl rand -hex 32et un préfixesk-. Le préfixe est une convention, pas une obligation. - Lancez Compose. La passerelle est sur
http://localhost:4000. L’interface d’admin est sur/ui, identifiantadmin, mot de passe égal à la clé maître. - Ajoutez le modèle Bedrock dans l’interface ou dans
config.yaml, avec les clés AWS enos.environ/...pour ne pas coller la valeur brute dans la base. - Émettez une clé virtuelle par application. Le trafic part vers
/chat/completionsou/v1/chat/completions. - Gardez le fichier
.env. RégénérerLITELLM_SALT_KEYrend illisibles les secrets déjà stockés. Il n’y a pas de rotation sur place.
LITELLM_MASTER_KEY est un mot de passe racine. Elle autorise chaque appel d’administration et, par défaut, sert de mot de passe à l’interface. Quiconque la détient peut créer des clés et lire les dépenses. Traitez-la comme un secret de production, pas comme une ligne du fichier Compose que vous commitez.
Postgres du guide rapide utilise l’utilisateur, le mot de passe et le nom de base litellm. Cela suffit pour un premier démarrage sur un portable. Cela ne suffit pas sur un hôte joignable. Changez le mot de passe, ne publiez pas le port 5432, et placez la passerelle derrière vos contrôles réseau existants. L’URL dans le fichier Compose est postgresql://litellm:litellm@db:5432/litellm, avec STORE_MODEL_IN_DB à true.
Quel identifiant Bedrock garde Claude dans l’UE ?
La page Bedrock de LiteLLM montre l’exemple bedrock/us.anthropic.claude-sonnet-5, et vous laisse remplir AWS_REGION_NAME. Copier cette chaîne envoie Sonnet 5 sur le profil géo US. La fiche Sonnet 5 dit ce que fait chaque profil.
| Identifiant | Ce qu’AWS dit des données |
|---|---|
eu.anthropic.claude-sonnet-5 |
Géo UE : données gardées dans les régions UE |
us.anthropic.claude-sonnet-5 |
Géo US : données gardées aux États-Unis et au Canada |
global.anthropic.claude-sonnet-5 |
Global : routage mondial, sans contrainte de résidence |
anthropic.claude-sonnet-5 |
Identifiant nu, seulement sur bedrock-mantle, pas en on-demand sur bedrock-runtime |
Sur bedrock-runtime, l’identifiant nu est refusé. AWS écrit que les profils géo et globaux peuvent router hors de la région source et ne fournissent pas une résidence dans une seule région. Le géo UE est le contrôle de résidence pour un appel runtime normal. Le mono-région pour Sonnet 5 passe par bedrock-mantle et l’identifiant nu. La liste mantle de cette fiche comprend eu-north-1 (Stockholm) et eu-west-1 (Irlande). Francfort (eu-central-1) figure dans la liste des régions runtime : c’est de là que vous envoyez l’appel géo UE, pas une promesse de traitement dans une seule région.
La page Bedrock d’Anthropic indique que les points de terminaison régionaux coûtent 10 % de plus que les points globaux, pour Sonnet 4.5 et les modèles suivants. Cette prime est le prix du profil UE. Les mêmes 10 % sur Bedrock et Google Cloud sont dans l’article de prix. Claude Code branché directement sur Bedrock, sans cette passerelle, est un autre montage : Claude Code sur Bedrock.
model_list:
- model_name: claude-eu
litellm_params:
model: bedrock/eu.anthropic.claude-sonnet-5
aws_region_name: eu-central-1
aws_access_key_id: os.environ/AWS_ACCESS_KEY_ID
aws_secret_access_key: os.environ/AWS_SECRET_ACCESS_KEY
model_name est le nom que vos applications envoient (claude-eu). model est ce que LiteLLM envoie à Bedrock. Utilisez un rôle IAM sur l’instance quand vous le pouvez. Les clés statiques dans l’environnement sont ce que la doc LiteLLM montre, et c’est précisément ce que LITELLM_SALT_KEY chiffre si vous les enregistrez via l’interface.
Vertex est l’autre voie UE. Le guide CLI documente VERTEX_PROJECT et VERTEX_LOCATION. L’exemple donné est us-west. Réglez le lieu sur la multi-région UE ou la région UE où vous faites déjà tourner Claude, puis utilisez une chaîne vertex_ai/. Ne laissez pas us-west dans une configuration européenne.
Comment les budgets arrêtent une clé qui dérive ?
Chaque budget de la page des budgets est contrôlé contre la dépense lue dans la base. Aucun ne plafonne quoi que ce soit sans base. litellm_settings.max_budget ne bloque pas : la dépense globale n’est chargée que si un client de base existe. Sans total à comparer, le contrôle est sauté et les requêtes continuent au-delà du plafond. Un avertissement est journalisé une fois au démarrage. Les budgets de clé, d’équipe et d’utilisateur sont indisponibles pour la même raison. Le texte d’erreur est No connected db.
C’est le mode d’échec qui compte. Une équipe pose max_budget: 100, se croit protégée, lance le proxy sans Postgres, et le plafond ne se déclenche jamais. Le guide Docker évite cela parce que Postgres est dans le fichier Compose. Une ligne litellm --model ... du guide CLI ne le fait pas.
Avec une base, les budgets fournisseur vivent sous router_settings.provider_budget_config. La page de routage par budget montre des plafonds en USD et des périodes comme 1d, 30d et 1mo. Les exemples documentés comprennent anthropic à 100 USD sur 10 jours et vertex_ai à 100 USD sur 12 jours. Quand un fournisseur dépasse son budget, le proxy le saute. Si tous le dépassent, l’appelant reçoit un HTTP 429 et un message de la forme No deployments available - crossed budget for provider. Redis n’est requis que si plusieurs instances doivent partager un compteur. Une seule instance UE peut suivre la dépense dans Postgres seul.
Deux règles de plus, sur la même page, en l’état de v1.95.0. Pour une clé qui appartient à une équipe, le budget personnel de l’utilisateur n’est pas appliqué. C’est le budget d’équipe qui compte. La v1.94.0 appliquait brièvement les deux, derrière un drapeau nommé skip_user_budget_on_team_key. La v1.95.0 a retiré le drapeau et le contrôle supplémentaire. Un budget de modèle correspond au nom configuré et à la forme préfixée par le fournisseur. Un seul plafond peut donc couvrir claude-sonnet et bedrock/eu.anthropic.claude-sonnet-5 si vous le posez sur le nom de famille que vous routez vraiment.
Nous poserions trois limites, pas une : un budget fournisseur pour bedrock ou anthropic, un budget d’équipe par produit, et un plafond bas sur toute clé utilisée depuis un portable. Le reste se lit sur GET /provider/budgets avec une clé autorisée à le faire.
LiteLLM ou OpenRouter pour des données d’entreprise ?
OpenRouter est un routeur hébergé. LiteLLM est un processus que vous exploitez. La politique de confidentialité d’OpenRouter dit que, lorsque vous utilisez le service, des données personnelles peuvent être transférées vers des serveurs d’OpenRouter aux États-Unis, ou vers d’autres pays hors de l’EEE et du Royaume-Uni. Tout texte saisi qui contient des données personnelles est collecté par OpenRouter. Cela peut passer pour des prompts publics. C’est un transfert pour un texte sur un salarié ou un client.
| LiteLLM sur votre hôte UE | OpenRouter | |
|---|---|---|
| Qui exploite la passerelle | Vous | OpenRouter |
| Où sont les journaux | Votre Postgres | Leur service |
| Données personnelles, leurs mots | Vous choisissez la région de la VM | Peuvent aller vers les États-Unis ou hors EEE et Royaume-Uni |
| Licence du proxy | MIT hors enterprise/ |
Produit hébergé |
| Plafond de dépense | Réel seulement avec une base | Leurs limites de compte |
Nous n’enverrions pas de données personnelles UE via OpenRouter quand la même application peut appeler une instance LiteLLM dans votre VPC. OpenRouter pour des essais sans donnée personnelle. LiteLLM plus le profil géo UE dès que le prompt peut nommer une personne, un client ou un salarié. La comparaison juridique des fournisseurs Claude, sans passerelle au milieu, est notre comparatif RGPD.
FAQ
Un budget LiteLLM fonctionne-t-il sans Postgres ?
Non. Les budgets sont contrôlés contre la dépense dans la base. Sans base, le plafond global ne bloque rien, et les budgets de clé, d’équipe et d’utilisateur n’existent pas. Le guide Docker inclut Postgres 16 pour cette raison.
L’exemple Bedrock de LiteLLM est-il acceptable pour des données UE ?
Non. Le modèle documenté est bedrock/us.anthropic.claude-sonnet-5. AWS dit que ce profil garde les données aux États-Unis et au Canada. Utilisez bedrock/eu.anthropic.claude-sonnet-5 quand l’appel doit rester dans les régions UE.
Quelle différence entre le géo UE et le mono-région pour Sonnet 5 ?
Le géo UE (eu.anthropic.claude-sonnet-5) garde les données dans les régions UE mais peut router entre ces régions. Il ne promet pas une seule région. Le mono-région utilise le point bedrock-mantle et l’identifiant nu. Les régions UE mantle sur la fiche Sonnet 5 sont Stockholm et l’Irlande.
La voie UE sur Bedrock coûte-t-elle plus cher que le global ?
Oui. Anthropic indique que les points régionaux incluent une prime de 10 % par rapport aux points globaux, pour Sonnet 4.5 et les modèles suivants. Le routage global n’a pas de prime et n’a pas de contrainte de résidence.
LiteLLM ou OpenRouter : où peuvent aller les données personnelles ?
Avec LiteLLM, dans la région où vous faites tourner le proxy et dans le profil de modèle que vous choisissez. Avec OpenRouter, la politique permet un transfert vers des serveurs aux États-Unis ou vers des pays hors EEE et Royaume-Uni, et les saisies qui contiennent des données personnelles sont collectées par OpenRouter.
Quelle version de LiteLLM une entreprise doit-elle épingler ?
v1.103.0, publiée le 28 septembre 2026, tant qu’une version plus récente n’a pas été testée. L’image du guide Docker s’appelle main-stable et elle bouge. Python doit être en 3.10 ou plus, sinon pip installe 1.83.9 en silence.
Sources
- Docs LiteLLM : démarrage CLI (29 septembre 2026)
- Docs LiteLLM : démarrage Docker (29 septembre 2026)
- Docs LiteLLM : budgets et limites (29 septembre 2026)
- Docs LiteLLM : budget par fournisseur (29 septembre 2026)
- Docs LiteLLM : AWS Bedrock (29 septembre 2026)
- Licence BerriAI/litellm (29 septembre 2026)
- Version LiteLLM v1.103.0 (29 septembre 2026)
- AWS : fiche Claude Sonnet 5 (29 septembre 2026)
- Anthropic : Claude sur Amazon Bedrock (29 septembre 2026)
- Politique de confidentialité OpenRouter (29 septembre 2026)