(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【AWS/Bedrock】Pythonから日本語でチャットAPIを利用する

スポンサーリンク

やりたいこと

Cloud9からAmazon Bedrockを利用する。尚、サンプルとしては「こんにちは」と入力する。

環境情報
  • Python 3.7.16
  • Anthropic | Claude Instant

やり方

boto3をインストールした上で

$ pip install --upgrade boto3
Defaulting to user installation because normal site-packages is not writeable
Collecting boto3
  Downloading boto3-1.33.13-py3-none-any.whl (139 kB)
     |████████████████████
...

AWSの公式ページ(Use the API to invoke a model with a single prompt)記載のサンプルプログラムを利用する。尚、今回はAnthropicのClaude Instant(1.x)を利用するため、model id は「anthropic.claude-instant-v1」としており、実行結果は以下のようになった。

$ python test.py 
 こんにちは。日本語で挨拶ができてうれしいです。

以下、補足です。

補足

Amazon Bedrockの「Model access」にて利用したいモデルが「Access granted」であることを確認し、該当のモデルIDを指定すれば利用ができます。

モデルが利用可能な必要がある

他にもIAMの権限周りやAPIへのアクセスがポイントとしてありますが、既にAdmin権限を付与しているCloud9環境では問題なく利用できました。

参考までに実行したコードをメモしておきます。

import boto3
import json
brt = boto3.client(service_name='bedrock-runtime')
body = json.dumps({
    "prompt": "\n\nHuman: こんにちは\n\nAssistant:",
    "max_tokens_to_sample": 300,
    "temperature": 0.1,
    "top_p": 0.9,
})
modelId = 'anthropic.claude-instant-v1'
accept = 'application/json'
contentType = 'application/json'
response = brt.invoke_model(body=body, modelId=modelId, accept=accept, contentType=contentType)
response_body = json.loads(response.get('body').read())
print(response_body.get('completion'))

以上、ご参考ください。