この記事は公開から1年以上経過しています。
PythonからAWS BedrockのClaude2の従量課金制APIを呼び出す方法。
本例は開発用途としてIAM Identify CenterではなくIAMのアクセスキーを使用する例です。
前提条件として、Amazon Bedrockの米国東部(バージニア北部)us-east-1
リージョンのModel accessでAnthropic/Claude
のモデルアクセスリクエストが承認済みとなっている必要があります。
※東京リージョンap-northeast-1
ではClaude Instantしか選択できなかったと思いますが、もしClaude
が選択できるようなら東京リージョンでもOKです。
Bedrock API呼び出し用のIAMユーザーを作成する場合は、以下の手順を参考にIAMユーザーとアクセスキーとシークレットキーを作成してください。
ここで作成するIAM設定は、開発環境からAPIを利用する目的以外では使用しないでください。
-
IAMの管理画面の
アクセス管理
→ユーザー
から、
許可のオプション
:ユーザーをグループに追加
コンソールパスワード
:None
で新規ユーザーを任意の名称で追加する。 -
作成したユーザーをIAMのユーザー一覧で開き、
概要
欄のアクセスキーを作成
を選択する。 -
主要なベストプラクティスと代替案にアクセスする
画面でローカルコード
を選択し確認にチェックを入れて次へ
を押下する。 -
アクセスキーを取得
画面に表示されるアクセスキーとシークレットキーをメモ、またはCSVでダウンロードする。 -
許可
タブの許可ポリシー
の許可を追加
からインラインポリシーを作成
を選択する。 -
アクセス許可を指定
画面のサービスを選択
のサービス
からBedrock
を選択する。 -
アクセス許可を設定
画面でBedrock
のアクション許可設定
からInvokeModel
を選択する。 -
同画面の
リソース
の特定
を選択し、foundation-model
の任意
にチェックを入れる。
確認して作成
画面で任意のポリシー名を入力してポリシーの作成
を押下する。
サンプルソースコード(Python)
コードは参考ウェブサイトのDevelopersIO(Classmethod)さんの記事のコードに、認証情報の追加などを行っただけです。
import json
import os
import boto3
bedrock = boto3.client(
'bedrock-runtime',
region_name='us-east-1',
aws_access_key_id=os.environ['BEDROCK_ACCESS_KEY_ID'],
aws_secret_access_key=os.environ['BEDROCK_SECRET_ACCESS_KEY']
)
prompt = '''
Human: 任意のプロンプト
Assistant:
'''
body = json.dumps(
{
'prompt': prompt,
'max_tokens_to_sample': 500
}
)
resp = bedrock.invoke_model(
modelId='anthropic.claude-v2',
body=body,
contentType='application/json',
accept='application/json'
)
answer = resp['body'].read().decode()
print(json.loads(answer)['completion'])
※実行前にOSのユーザー環境変数等へ以下の環境変数を予め設定しておいてください。
環境変数名 | 設定内容 |
---|---|
BEDROCK_ACCESS_KEY_ID | アクセスキー |
BEDROCK_SECRET_ACCESS_KEY | シークレットキー |
ちなみにIAMでBedrockのInvokeMethodへのアクセス許可を設定していない場合、
Exception has occurred: ClientError
An error occurred (UnrecognizedClientException) when calling the InvokeModel operation: The security token included in the request is invalid.
File "xxx.py", line xx, in <module>
resp = bedrock.invoke_model(
botocore.exceptions.ClientError: An error occurred (UnrecognizedClientException) when calling the InvokeModel operation: The security token included in the request is invalid.
のようなエラーが発生します。
参考ウェブサイトなど
-
DevelopersIO(Classmethod)
[初心者向け] Amazon Bedrockを使ってPythonでClaudeと遊ぶための最初の三歩くらい -
AWS
Boto3/Credentials/Passing credentials as parameters
以上です。