스트리밍 응답
스트리밍을 사용하면 모델 응답이 생성될 때 이를 점진적으로 수신하여 대화형 기능이 강화된 사용자 경험을 제공할 수 있습니다. Converse API 및 Invoke API 모두 스트리밍을 지원합니다.
ConverseStream을 사용하는 스트리밍
ConverseStream을 사용하여 응답을 이벤트 스트림으로 수신합니다.
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)
InvokeModelWithResponseStream을 사용하는 스트리밍
Invoke API로 스트리밍하는 경우 InvokeModelWithResponseStream을 사용합니다.
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)
스트림 이벤트 유형
스트리밍 응답에는 다음과 같이 여러 이벤트 유형이 포함됩니다.
-
messageStart: 메시지의 시작을 나타냄 -
contentBlockStart: 콘텐츠 블록의 시작을 나타냄 -
contentBlockDelta: 증분 텍스트 또는 데이터를 포함함 -
contentBlockStop: 콘텐츠 블록의 끝을 나타냄 -
messageStop: 중지 이유를 포함하는 메시지의 끝을 나타냄 -
metadata: 사용량 정보(토큰 수)를 포함함