Une passerelle centralise le choix des modèles, les secrets, les quotas et l’observabilité. L’application appelle votre API ; LiteLLM adapte la requête au fournisseur choisi.
Installer
~~~bash python -m venv .venv source .venv/bin/activate pip install -U fastapi 'uvicorn[standard]' litellm pydantic-settings ~~~
Créer une route minimale
~~~python import os from fastapi import FastAPI, Depends from pydantic import BaseModel, Field from litellm import acompletion
app = FastAPI()
class ChatRequest(BaseModel): prompt: str = Field(min_length=1, max_length=20_000) model_alias: str = 'fast'
MODELS = { 'fast': os.environ['FAST_MODEL'], 'quality': os.environ['QUALITY_MODEL'], }
@app.post('/v1/chat') async def chat(request: ChatRequest, user=Depends(authenticate)): model = MODELS[request.model_alias] response = await acompletion( model=model, messages=[{'role': 'user', 'content': request.prompt}], max_tokens=500, timeout=30, ) return { 'text': response.choices[0].message.content, 'usage': response.usage, 'model_alias': request.model_alias, } ~~~
Le client choisit un alias, pas un identifiant fournisseur arbitraire. Vous gardez ainsi le contrôle des modèles autorisés.
Conteneuriser
~~~dockerfile FROM python:3.12-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY app.py . RUN useradd --create-home appuser USER appuser EXPOSE 8000 CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"] ~~~
Injectez les clés au démarrage via un gestionnaire de secrets. Ne les copiez jamais dans l’image.
Routage et repli
Un fallback est utile pour une indisponibilité temporaire, mais il peut changer qualité, coût ou résidence des données. Autorisez-le par politique et journalisez le modèle réellement utilisé. Ne relancez pas une requête non idempotente sans contrôle.
Quotas et observabilité
Authentifiez chaque appel, plafonnez requêtes, tokens et dépense par client. Journalisez identifiant de trace, alias, fournisseur, latence, tokens et statut, sans prompt brut par défaut. Ajoutez /health pour le processus et un contrôle séparé de disponibilité des fournisseurs.
Production
Placez la passerelle derrière TLS, configurez timeouts, taille maximale du corps et nombre de connexions. Pour le streaming, propagez l’annulation quand le client se déconnecte. Versionnez LiteLLM et testez les réponses normalisées avant chaque mise à jour.
FAQ
Pourquoi utiliser une passerelle ?
Elle évite de disperser clés, politiques et code fournisseur dans toutes les applications.
Faut-il retourner le nom réel du modèle ?
Conservez-le au minimum dans les traces. L’exposition au client dépend de votre contrat et de vos exigences d’audit.