Amazom Bedrockとは
AmazonやStable DiffusionなどAI企業が提供する基盤モデル(FM)をAPIを通じて利用できるようにする完全マネージド型サービスです。
先日(9/28)にようやくGAしたので検証アカウントで早速使ってみました!!
■公式ブログ
■ ドキュメント
■ 料金
Bedrockを有効化
スクショを取り忘れたので、以下を参考に有効化すると流れが分かると思います。
早速ローカルから動かしてみる
先ずは普通に
import boto3
import json
session = boto3.Session(profile_name='AWSプロファイル')
client = session.client(
'bedrock-runtime',
region_name='us-east-1',
)
prompt = '''
Human: AWSについて教えて
Assistant:
'''
body = {
'prompt': prompt,
'max_tokens_to_sample': 300,
}
response = client.invoke_model(
modelId="anthropic.claude-v2",
body=json.dumps(body)
)
body = response['body'].readlines()
completion = json.loads(body[0].decode('utf-8'))['completion']
print(completion)
Tokenを300にしてるせいもありますがレスポンスが返ってくるまで20数秒かかってますね。
OpenAIなどに慣れすぎたせいかストリーミングでないとややもたつきを感じる身体になってしまったので、ストリーミング応答で挙動を確認したいと思います。
ストリーミング応答
import boto3
import json
session = boto3.Session(profile_name='AWSプロファイル')
bedrock = session.client(
service_name='bedrock-runtime',
region_name='us-east-1',
endpoint_url='https://invoke-bedrock.us-east-1.amazonaws.com'
)
prompt = '''
Human: AWSについて教えて
Assistant:
'''
body = json.dumps({
"prompt": prompt,
"max_tokens_to_sample": 300,
})
response = bedrock.invoke_model_with_response_stream(
modelId='anthropic.claude-v2',
body=body
)
stream = response.get('body')
if stream:
for event in stream:
chunk = event.get('chunk')
if chunk:
print(json.loads(chunk.get('bytes').decode()))
無事ストリーミング応答が出来ましたね!
おわり
あっさりですが、先ずはともあれ軽く試してみました。
引き続き他のモデルを使ってみてたりアプリケーションに組み込んでの比較など随時検証していきたいと思います。