View a markdown version of this page

Respostas de streaming - Amazon Nova

Respostas de streaming

O streaming permite que você receba respostas do modelo de forma incremental à medida que elas são geradas, proporcionando uma experiência de usuário mais interativa. Tanto a API Converse quanto a API Invoke são compatíveis com o streaming.

Streaming com ConverseStream

Use ConverseStream para receber respostas como um fluxo de eventos:

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 com InvokeModelWithResponseStream

Use InvokeModelWithResponseStream para streaming com a 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)

Tipos de evento de streaming

As respostas de streaming incluem vários tipos de eventos:

  • messageStart: indica o início de uma mensagem

  • contentBlockStart: indica o início de um bloco de conteúdo

  • contentBlockDelta: contém texto ou dados incrementais

  • contentBlockStop: indica o fim de um bloco de conteúdo

  • messageStop: indica o final da mensagem com o motivo da interrupção

  • metadata: contém informações de uso (contagens de tokens)