Tutoriel

Statut éditorial : En attente de relecture

Intégrer LangChain à une API FastAPI

Exposer une chaîne ou un agent LangChain derrière une route FastAPI avec validation, injection de dépendances et gestion des délais.

Classification du contenu

Types

  • Modèles et API
  • Développement back-end

Technologies

Niveau
Intermédiaire
Publié le
10 août 2026
Dernière relecture
Relecture en attente
Prochaine vérification
10 novembre 2026

L’API HTTP doit contrôler authentification, taille des entrées et erreurs. La chaîne LangChain reste une dépendance interne, testable indépendamment de FastAPI.

Installer

~~~bash pip install -U fastapi 'uvicorn[standard]' langchain langchain-openai pydantic-settings ~~~

Créer la chaîne une seule fois

~~~python from langchain_openai import ChatOpenAI from langchain_core.prompts import ChatPromptTemplate from langchain_core.output_parsers import StrOutputParser

prompt = ChatPromptTemplate.from_messages([ ('system', 'Réponds clairement en français.'), ('user', '{question}'), ]) chain = prompt | ChatOpenAI(model='votre-modele-actif', temperature=0) | StrOutputParser() ~~~

Initialisez clients et chaînes au démarrage, pas à chaque requête.

Exposer la route

~~~python from fastapi import FastAPI, Depends, HTTPException from pydantic import BaseModel, Field

app = FastAPI()

class AskRequest(BaseModel): question: str = Field(min_length=1, max_length=10_000)

class AskResponse(BaseModel): answer: str

@app.post('/ask', response_model=AskResponse) async def ask(body: AskRequest, user=Depends(authenticate)): try: answer = await chain.ainvoke({'question': body.question}) return AskResponse(answer=answer) except TimeoutError as error: raise HTTPException(504, 'Le modèle ne répond pas') from error ~~~

Ne retournez pas l’exception brute du fournisseur au client.

Ajouter le streaming

Utilisez StreamingResponse et chain.astream. Arrêtez l’appel en aval lorsque le client se déconnecte. Définissez un type de média adapté et envoyez des événements structurés si le client doit distinguer tokens, sources et erreurs.

Tester

Remplacez la chaîne par un faux dans les tests de route. Vérifiez 200, entrée vide, entrée trop longue, utilisateur absent, timeout et erreur fournisseur. Testez séparément le prompt sur un dataset métier.

Production

Ajoutez quota par identité, limitation de concurrence, budget de tokens, traces et métriques. Placez la clé modèle côté serveur. Pour les agents, limitez le nombre d’étapes et sécurisez chaque outil.

FAQ

async rend-il l’appel plus rapide ?

Non, mais il permet au serveur de traiter d’autres requêtes pendant l’attente réseau.

Faut-il un worker par utilisateur ?

Non. Dimensionnez selon concurrence, limites fournisseur et charge CPU ; les tâches longues vont dans une file.

Sources utilisées