View a markdown version of this page

Réponses en streaming - Amazon Nova

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Réponses en streaming

Le streaming vous permet de recevoir les réponses des modèles de manière incrémentielle au fur et à mesure qu'elles sont générées, offrant ainsi une expérience utilisateur plus interactive. L'API Converse et l'API Invoke prennent toutes deux en charge le streaming.

Streaming avec ConverseStream

ConverseStreamÀ utiliser pour recevoir des réponses sous forme de flux d'événements :

import boto3 bedrock = boto3.client('bedrock-runtime', region_name='us-east-1') response = bedrock.converse_stream( modelId='us.amazon.nova-2-lite-v1:0', messages=[ { 'role': 'user', 'content': [{'text': 'Write a short story about AI.'}] } ] ) for event in response['stream']: if 'contentBlockDelta' in event: delta = event['contentBlockDelta']['delta'] if 'text' in delta: print(delta['text'], end='', flush=True)

Streaming avec InvokeModelWithResponseStream

InvokeModelWithResponseStreamÀ utiliser pour le streaming avec l'API Invoke :

import boto3 import json bedrock = boto3.client('bedrock-runtime', region_name='us-east-1') request_body = { 'messages': [ { 'role': 'user', 'content': [{'text': 'Explain quantum computing.'}] } ] } response = bedrock.invoke_model_with_response_stream( modelId='us.amazon.nova-2-lite-v1:0', body=json.dumps(request_body) ) for event in response['body']: chunk = json.loads(event['chunk']['bytes']) if 'contentBlockDelta' in chunk: delta = chunk['contentBlockDelta']['delta'] if 'text' in delta: print(delta['text'], end='', flush=True)

Types d'événements en streaming

Les réponses de streaming incluent plusieurs types d'événements :

  • messageStart: indique le début d'un message

  • contentBlockStart: indique le début d'un bloc de contenu

  • contentBlockDelta: contient du texte ou des données incrémentiels

  • contentBlockStop: indique la fin d'un bloc de contenu

  • messageStop: indique la fin du message avec la raison de l'arrêt

  • metadata: contient des informations d'utilisation (nombre de jetons)