View a markdown version of this page

流式响应 - Amazon Nova

流式响应

流式传输可让您在模型生成响应的同时逐步接收内容,带来更流畅的交互体验。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 进行流式响应

使用 InvokeModelWithResponseStream 实现 Invoke API 的流式传输:

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:包含用量信息(词元计数)