

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Streaming delle risposte
<a name="streaming-responses"></a>

Lo streaming consente di ricevere le risposte dei modelli in modo incrementale man mano che vengono generate, offrendo un'esperienza utente più interattiva. Sia l'API Converse che l'API Invoke supportano lo streaming.

## Streaming con ConverseStream
<a name="streaming-converse"></a>

Utilizza `ConverseStream` per ricevere risposte sotto forma di flusso di eventi:

```
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 con InvokeModelWithResponseStream
<a name="streaming-invoke"></a>

Utilizzalo `InvokeModelWithResponseStream` per lo streaming con 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)
```

## Tipi di eventi in streaming
<a name="streaming-events"></a>

Le risposte in streaming includono diversi tipi di eventi:
+ `messageStart`: indica l'inizio di un messaggio
+ `contentBlockStart`: indica l'inizio di un blocco di contenuto
+ `contentBlockDelta`: contiene testo o dati incrementali
+ `contentBlockStop`: indica la fine di un blocco di contenuto
+ `messageStop`: Indica la fine del messaggio con il motivo dell'interruzione
+ `metadata`: contiene informazioni sull'utilizzo (numero di token)