Lorsque vous appelez un LLM à partir d'une fonction Lambda et attendez la réponse complète avant de la renvoyer, l'utilisateur regarde une double flèche pendant 5 à 15 secondes. Le modèle génère des jetons tout le temps, mais le client ne reçoit rien jusqu'au tout dernier. Pour les réalisations courtes, cela est tolérable. Pour les sorties structurées (résumés, entités extraites, JSON multi-champs), le retard tue l'expérience.
Le correctif est le streaming de réponses : envoyez des jetons au client au fur et à mesure que le modèle les produit. L'utilisateur voit le contenu apparaître progressivement. Le temps d’accès au premier octet passe de quelques secondes à des centaines de millisecondes. La latence perçue s'améliore considérablement même si la durée totale de génération reste la même.
En novembre 2025, AWS a ajouté la prise en charge native du streaming de réponses aux API REST d'API Gateway. Avant cela, le streaming depuis Lambda nécessitait des URL de fonction (authentification limitée, pas de prise en charge VPC) ou des API WebSocket (plus d'infrastructure, plus de complexité). Nous bénéficions désormais du streaming via la même API REST que la plupart des équipes ont déjà en production.
Ceci est le premier article d'une série en quatre parties :
Chaque publication comporte une étape complémentaire dans le référentiel avec du code fonctionnel que vous pouvez déployer.
TL;DR : diffusez des réponses LLM structurées depuis Bedrock Claude via API Gateway REST et Lambda à l'aide de Middy's
streamifyRéponseet SDK IA v6fluxTexte()avecSortie.object(). La pile CDK utilise unMéthode Cfntrappe de secours pour permettreMode de transfert de réponse : FLUX. Le temps d’accès au premier octet passe de quelques secondes à des centaines de millisecondes. Code de travail complet inclus.
Nous allons câbler un pipeline de streaming complet : API Gateway REST reçoit une requête, invoque une fonction Lambda en mode streaming, la Lambda utilise Middy et le SDK Vercel AI pour appeler Bedrock Claude viafluxTexte, et le JSON structuré est renvoyé au client morceau par morceau.
À la fin, vous disposerez d'un point de terminaison déployé que vous pourrezboucleet regardez les jetons arriver en temps réel.
Voici le flux de données :
Client (boucle / navigateur) | | POST /stream v API Gateway REST (responseTransferMode : STREAM) | | réponse-streaming-invocations v Lambda (Middy, streamifyResponse : true) | | streamText() contre Bedrock Claude 3.5 SonnetLe client envoie une requête POST. API Gateway le transmet à Lambda à l'aide du point de terminaison d'appel de streaming. Lambda appelle Bedrock Claude via le SDK AIfluxTexte, qui renvoie unFlux lisible.
Middy détecte le flux dans le corps de la réponse et le transmet au flux de réponse de Lambda. API Gateway transmet chaque fragment au cl...
[Courte citation de 8% de l'article original]