LoginSignup
12
8

Claude 3がアツいですね

GPT-4を超えたと話題の生成AI、Claude 3シリーズ。
私の開発組織でも全力でキャッチアップに取り組んでいます。

AWSのBedrockでも利用可能になるや否や、ものすごい量のQiita記事が出ていますが意外とシンプルなストリーミング出力のサンプルコードがなかったので紹介しておきます。

シンプルなコード例

AWSの公式ドキュメントを参考にしています。

stream.py
# Python外部ライブラリのインポート
import json
import boto3

# Bedrockクライアントの作成
bedrock_runtime = boto3.client('bedrock-runtime')

# リクエストボディを定義
body = json.dumps({
   "anthropic_version": "bedrock-2023-05-31",
   "max_tokens": 1000,
   "messages": [
       {
           "role": "user",
           "content": [{"type": "text", "text": "いろは歌を教えて"}]
       }
   ]
})

# モデルを定義(Claude 3 Sonnet)
modelId="anthropic.claude-3-sonnet-20240229-v1:0"

# レスポンスを定義
response = bedrock_runtime.invoke_model_with_response_stream(body=body, modelId=modelId)

# ストリーミング出力
for event in response.get("body"):
   chunk = json.loads(event["chunk"]["bytes"])
   if chunk['type'] == 'content_block_delta' and chunk['delta']['type'] == 'text_delta':
       print(chunk['delta']['text'], end="")

# ストリーミング終了後に改行
print()

上記のコードは、以下のAWSドキュメントで提供されているサンプルコードをベースに改変したものです。

© Amazon.com, Inc. or its affiliates. All Rights Reserved.
https://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/model-parameters-anthropic-claude-messages.html

  • 改変箇所: コードの簡略化とリファクタリング、プロンプトの変更

オリジナルのサンプルコードは Apache License, Version 2.0( https://www.apache.org/licenses/LICENSE-2.0 )のもとで提供されています。

実行結果の例

ストリーミングで少しずつ出力されました!

$ python3 stream.py 
いろは歌は、古くから日本で使われている五十音の順序を示した歌です。

いろはにほへと
ちりぬるを
わかよたれそ
つねならむ
うゐのおくやま
けふこえて
あさきゆめみし
ゑひもせす

この歌は、あい(あいう)、かきくけこ、さしすせそ...と五十音の順番に並んでいます。
平安時代に作られたと言われており、当時の日本人が自然を愛でながら五十音を覚えるのに役立ったそうです。簡潔でリズミカルな歌詞は、
12
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
8