Amazon SageMaker ノートブックを使用して Amazon Bedrock API リクエストの例を実行する
このセクションでは、Amazon SageMaker ノートブックを使用して Amazon Bedrock の一般的なオペレーションの一部を試し、Amazon Bedrock ロールのアクセス許可が正しく設定されていることをテストする方法について説明します。次の例を実行する前に、次の前提条件が満たされていることを確認してください。
前提条件
-
AWS アカウント を持ち、Amazon Bedrock に必要なアクセス許可を持つロールにアクセスする権限がある。そうでない場合は、「AWS アカウント を既に持っています」の手順を実行します。
-
Amazon Titan Text G1 - Express モデルへのアクセスをリクエスト済みである。そうでない場合は、「Amazon Bedrock 基盤モデルへのアクセスをリクエストする」の手順を実行します。
-
次の手順を実行して SageMaker の IAM アクセス許可を設定し、ノートブックを作成します。
-
コンソール、CLI、または API を使用して「AWS アカウント を既に持っています」で設定した Amazon Bedrock ロールの信頼ポリシーを変更します。次の信頼ポリシーをロールにアタッチして、Amazon Bedrock と SageMaker の両方のサービスで Amazon Bedrock ロールを引き受けるのを許可します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "BedrockTrust", "Effect": "Allow", "Principal": { "Service": "bedrock.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Sid": "SagemakerTrust", "Effect": "Allow", "Principal": { "Service": "sagemaker.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
信頼ポリシーを変更した Amazon Bedrock ロールにサインインします。
-
「チュートリアル用 Amazon SageMaker ノートブックインスタンスを作成する」の手順に従って、SageMaker ノートブックインスタンスを作成するために作成した Amazon Bedrock ロールの ARN を指定します。
-
ノートブックインスタンスの [ステータス] が [InService] の場合、インスタンスを選択し、[JupyterLab を開く] を選択します。
-
SageMaker ノートブックを開くと、次の例を試すことができます。
Amazon Bedrock が提供する基盤モデルを一覧表示する
次の例では、Amazon Bedrock クライアントを使用して ListFoundationModels オペレーションを実行します。ListFoundationModels
は、ユーザーのリージョンの Amazon Bedrock で利用可能な基盤モデル (FM) を一覧表示します。次の SDK for Python スクリプトを実行して Amazon Bedrock クライアントを作成し、ListFoundationModels オペレーションをテストします。
# Use the ListFoundationModels API to show the models that are available in your region. import boto3 # Create an &BR; client in the ®ion-us-east-1; Region. bedrock = boto3.client( service_name="bedrock" ) bedrock.list_foundation_models()
スクリプトが成功すると、レスポンスは Amazon Bedrock で使用できる基盤モデルのリストを返します。
テキストプロンプトをモデルに送信し、レスポンスを生成する
次の例では、Amazon Bedrock クライアントを使用して Converse オペレーションを実行します。Converse
では、プロンプトを送信してモデルレスポンスを生成できます。次の SDK for Python スクリプトを実行して Amazon Bedrock のランタイムクライアントを作成し、Converse オペレーションをテストします。
# Use the Conversation API to send a text message to Amazon Titan Text G1 - Express. import boto3 from botocore.exceptions import ClientError # Create an Amazon Bedrock Runtime client. brt = boto3.client("bedrock-runtime") # Set the model ID, e.g., Amazon Titan Text G1 - Express. model_id = "amazon.titan-text-express-v1" # Start a conversation with the user message. user_message = "Describe the purpose of a 'hello world' program in one line." conversation = [ { "role": "user", "content": [{"text": user_message}], } ] try: # Send the message to the model, using a basic inference configuration. response = brt.converse( modelId=model_id, messages=conversation, inferenceConfig={"maxTokens": 512, "temperature": 0.5, "topP": 0.9}, ) # Extract and print the response text. response_text = response["output"]["message"]["content"][0]["text"] print(response_text) except (ClientError, Exception) as e: print(f"ERROR: Can't invoke '{model_id}'. Reason: {e}") exit(1)
コマンドが成功すると、レスポンスは、プロンプトに応答してモデルによって生成されたテキストを返します。