🧠

Amazon Bedrock Knowledge Basesがストリーミングレスポンスに対応しました

2024/12/08に公開

Amazon Bedrock Knowledge Basesがストリーミングレスポンスに対応したので、試してみました。

https://aws.amazon.com/about-aws/whats-new/2024/12/amazon-bedrock-knowledge-bases-streaming-retrieveandgeneratestream-api/

何ができるのか

今まででAmazon Bedrock Knowledge Basesでストリーミングレスポンスに対応する場合、retrieve apiでKBから結果を取得しプロンプトを生成し、そのプロンプトをinvoke_model_with_response_stream apiを使ってストリーミングレスポンスを実現していました。

しかし、今回のアップデートでわざわざinvoke_model_with_response_stream apiを挟まなくとも、KBだけでストリーミングレスポンスを実現できるようになりました。

事前準備

  • boto3の最新化
  • KBの作成

実際に触ってみた

実際に使用するコードは以下の通りです。弊社の公開事例RAGにAWS事例を聞いてみました。

import boto3

client = boto3.client('bedrock-agent-runtime')
question = 'AWS事例を教えてください。'
modelArn = 'arn:aws:bedrock:us-west-2::foundation-model/anthropic.claude-3-5-haiku-20241022-v1:0'
knowledgeBaseId = 'knowledgeBaseId'

response = client.retrieve_and_generate_stream(
  input={
      'text': question
  },
  retrieveAndGenerateConfiguration={
    'knowledgeBaseConfiguration': {
      'modelArn': modelArn,
      'knowledgeBaseId': knowledgeBaseId,
    },
    'type': 'KNOWLEDGE_BASE',
  },
)

for event in response["stream"]:
  if "output" in event:
    print(event["output"]["text"])

実行結果は以下の通りです。

retrieve_and_generate_stream apiを使用するだけで、ストリーミングレスポンスが可能になりました。

まとめ

今までinvoke_model_with_response_stream apiを使用しないとKBのストリーミングレスポンスができなかったのですが、retrieve_and_generate_stream apiでKBのストリーミングレスポンスが可能になりました。最近のKBはなんでもできるようになってきているので、これを機にKBに移行するのも良いのかもしれません。

Fusic 技術ブログ

Discussion