Amazon Bedrockのclaude-v2をboto3から実行してみた
はじめに
ついにAmazon BedrockがGAになりましたね!
料金表は以下のようになっています。
(他のChatGPTとかでもそうですが)Token単位の従量課金なので安心ですね。
コンソールから試したり、SDKで試した記事もちらほらと上がってきています!
というわけで、boto3からモデルを実行してみます。公式のサンプルではai21.j2-ultra-v1
を、Classmethodさんの記事ではai21.j2-mid-v1
を使っていました。そこで、今回はanthropic.claude-v2
というモデルを実行してみます。
コンソールでの初期設定
まずは、モデルを使うために初期設定します。
コンソールから「Bedrock」などと検索して、バージニア北部リージョンを選択します。モデルの一覧ページで「Edit」ボタンを押下して利用可能にします。
claude-v2
を利用するためには、
Anthropic
隣にある「Request」ボタンからリクエストする必要があります。
リクエストフォームを適当に埋めます。
完了したら、1分も待たずに完了メールが飛んできました。
boto3からの呼び出し
boto3は現時点で最新の1.28.57
以上が必要です。
boto3でclientは以下のように作成します。
import boto3
import json
bedrock_runtime = boto3.client(
service_name='bedrock-runtime',
region_name='us-east-1'
)
claude-v2
のmodelIdとプロンプトなどの変数は以下の通りです。
modelId = 'anthropic.claude-v2'
accept = 'application/json'
contentType = 'application/json'
prompt = """
Human: こんにちわ。あなたが持っている背景情報について教えてください。
Assistant:
"""
body = json.dumps({"prompt": prompt, "max_tokens_to_sample": 200})
この状態で、invoke_model
を実行するとモデルから結果が返ってきます。
response = bedrock_runtime.invoke_model(
body=body,
modelId=modelId,
accept=accept,
contentType=contentType
)
response_body = json.loads(response.get('body').read())
結果は以下の通りです。
{'completion': ' はい、私はAnthropic社によって開発された人工知能チャットボットです。私には専門知識や個人的な経験はありません。会話を通じて学習できるように設計されています。',
'stop_reason': 'stop_sequence'}
プロンプトの指定方法
claude-v2
のプロンプトの例は次のようにする必要があります。
それ以外の例だとエラーになるので注意が必要です。
prompt = """
Human: こんにちわ。あなたが持っている背景情報について教えてください。
Assistant:
"""
body = json.dumps({"prompt": prompt, "max_tokens_to_sample": 200})
最初に、Classmethodの記事を参考に以下のようにしておりエラーが発生してしまいました。
prompt = "こんにちわ。あなたが持っている背景情報について教えてください。"
body = json.dumps({"prompt": prompt, "max_tokens_to_sample": 200})
ただパッとみても「ん?」ってなるメッセージだったのでChatGPT4に教えてもらいました。
(中略)
このprompt
を入れたら正常に動いたので、未知の内容でも解釈できるのすごいなって思いました。
おわりに
前から出るのが楽しみだったAmazon Bedrockを軽くですが触ってみました!
これを使ってAWS内で色々なことに使えるので便利ですね!
Discussion