SDK for Python (Boto3) を使用する Amazon Bedrock ランタイムの例 - AWS SDK コード例

Doc AWS SDK Examples リポジトリには、他にも SDK の例があります。 AWS GitHub

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

SDK for Python (Boto3) を使用する Amazon Bedrock ランタイムの例

次のコード例は、Amazon Bedrock ランタイム AWS SDK for Python (Boto3) で を使用してアクションを実行し、一般的なシナリオを実装する方法を示しています。

アクションはより大きなプログラムからのコードの抜粋であり、コンテキスト内で実行する必要があります。アクションは個々のサービス機能を呼び出す方法を示していますが、関連するシナリオやサービス間の例ではアクションのコンテキストが確認できます。

「シナリオ」は、同じサービス内で複数の関数を呼び出して、特定のタスクを実行する方法を示すコード例です。

各例には、 へのリンクが含まれています。このリンクには GitHub、コンテキスト内でコードをセットアップして実行する方法の手順が記載されています。

モデルを呼び出す例

次のコード例は、テキスト生成のために Amazon Bedrock で AI21 Labs Jurassic-2 モデルを呼び出す方法を示しています。

SDK for Python (Boto3)
注記

には他にもがあります GitHub。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

AI21 Labs Jurassic-2 基盤モデルを呼び出して、テキストを生成します。

def invoke_jurassic2(self, prompt): """ Invokes the AI21 Labs Jurassic-2 large-language model to run an inference using the input provided in the request body. :param prompt: The prompt that you want Jurassic-2 to complete. :return: Inference response from the model. """ try: # The different model providers have individual request and response formats. # For the format, ranges, and default values for AI21 Labs Jurassic-2, refer to: # https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-jurassic2.html body = { "prompt": prompt, "temperature": 0.5, "maxTokens": 200, } response = self.bedrock_runtime_client.invoke_model( modelId="ai21.j2-mid-v1", body=json.dumps(body) ) response_body = json.loads(response["body"].read()) completion = response_body["completions"][0]["data"]["text"] return completion except ClientError: logger.error("Couldn't invoke Jurassic-2") raise
  • API の詳細については、 InvokeModel AWS SDK for Python (Boto3) API リファレンスの「」を参照してください。

次のコードサンプルは、以下の操作方法を示しています。

  • 最初の埋め込みの作成を開始します。

  • 埋め込みを作成し、すべてのレスポンスフィールドを処理します。

SDK for Python (Boto3)
注記

には他にもがあります GitHub。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

Amazon Titan Text Embeddings G1 を使用して最初の埋め込みを作成します。

# Generate and print an embedding with Amazon Titan Text Embeddings G1 import boto3 import json # Create a Bedrock Runtime client in the AWS Region of your choice. client = boto3.client("bedrock-runtime", region_name="us-west-2") # Set the model ID, e.g., Titan Text Embeddings G1. model_id = "amazon.titan-embed-text-v1" # The text to convert to an embedding. input_text = "Please recommend books with a theme similar to the movie 'Inception'." # Create the request for the model. request = {"inputText": input_text} # Encode and send the request. response = client.invoke_model(body=json.dumps(request), modelId=model_id) # Decode the model's native response body. model_response = json.loads(response["body"].read()) # Extract and print the generated embedding. embedding = model_response["embedding"] print(embedding)

Amazon Titan Text Embeddings G1 を呼び出し、すべてのレスポンスフィールドを処理します。

def invoke_model(input_text, client=None): """ Invoke Amazon Titan Text Embeddings G1 and print the response. :param input_text: The text to convert to an embedding. :param client: An optional Bedrock Runtime client instance. Defaults to None if not provided. :return: The model's response object. """ # Create a Bedrock Runtime client if not provided. client = client or boto3.client("bedrock-runtime", region_name="us-west-2") # Set the model ID, e.g., Titan Text Embeddings G1. model_id = "amazon.titan-embed-text-v1" # Create the request for the model. request = {"inputText": input_text} # Encode and send the request. response = client.invoke_model( body=json.dumps(request), modelId=model_id, ) # Decode the response model_response = json.loads(response["body"].read()) # Extract and print the generated embedding and the input text token count. embedding = model_response["embedding"] input_token_count = model_response["inputTextTokenCount"] print(f"Embedding: {embedding}\n") print(f"Input token count: {input_token_count}") return model_response
  • API の詳細については、InvokeModelAWS 「 SDK for Python (Boto3) API リファレンス」の「」を参照してください。

次のコードサンプルは、以下の操作方法を示しています。

  • 最初の埋め込みの作成を開始します。

  • ディメンションの数と正規化を設定する埋め込みを作成します。

SDK for Python (Boto3)
注記

には他にもがあります GitHub。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

Titan Text Embeddings V2 で最初の埋め込みを作成します。

# Generate and print an embedding with Amazon Titan Text Embeddings G1 import boto3 import json # Create a Bedrock Runtime client in the AWS Region of your choice. client = boto3.client("bedrock-runtime", region_name="us-west-2") # Set the model ID, e.g., Titan Text Embeddings G1. model_id = "amazon.titan-embed-text-v1" # The text to convert to an embedding. input_text = "Please recommend books with a theme similar to the movie 'Inception'." # Create the request for the model. request = {"inputText": input_text} # Encode and send the request. response = client.invoke_model(body=json.dumps(request), modelId=model_id) # Decode the model's native response body. model_response = json.loads(response["body"].read()) # Extract and print the generated embedding. embedding = model_response["embedding"] print(embedding)

ディメンションの数と正規化を設定する Titan Text Embeddings V2 を呼び出します。

def invoke_model(input_text, client=None): """ Invoke Amazon Titan Text Embeddings G1 and print the response. :param input_text: The text to convert to an embedding. :param client: An optional Bedrock Runtime client instance. Defaults to None if not provided. :return: The model's response object. """ # Create a Bedrock Runtime client if not provided. client = client or boto3.client("bedrock-runtime", region_name="us-west-2") # Set the model ID, e.g., Titan Text Embeddings G1. model_id = "amazon.titan-embed-text-v1" # Create the request for the model. request = {"inputText": input_text} # Encode and send the request. response = client.invoke_model( body=json.dumps(request), modelId=model_id, ) # Decode the response model_response = json.loads(response["body"].read()) # Extract and print the generated embedding and the input text token count. embedding = model_response["embedding"] input_token_count = model_response["inputTextTokenCount"] print(f"Embedding: {embedding}\n") print(f"Input token count: {input_token_count}") return model_response
  • API の詳細については、InvokeModelAWS 「 SDK for Python (Boto3) API リファレンス」の「」を参照してください。

次のコード例は、Amazon Bedrock で Amazon Titan Image G1 を呼び出してイメージを生成する方法を示しています。

SDK for Python (Boto3)
注記

には他にもがあります GitHub。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

Amazon Titan Image Generator G1 モデルを呼び出して画像を生成します。

def invoke_titan_image(self, prompt, seed): """ Invokes the Titan Image model to create an image using the input provided in the request body. :param prompt: The prompt that you want Amazon Titan to use for image generation. :param seed: Random noise seed (range: 0 to 2147483647) :return: Base64-encoded inference response from the model. """ try: # The different model providers have individual request and response formats. # For the format, ranges, and default values for Titan Image models refer to: # https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-titan-image.html request = json.dumps( { "taskType": "TEXT_IMAGE", "textToImageParams": {"text": prompt}, "imageGenerationConfig": { "numberOfImages": 1, "quality": "standard", "cfgScale": 8.0, "height": 512, "width": 512, "seed": seed, }, } ) response = self.bedrock_runtime_client.invoke_model( modelId="amazon.titan-image-generator-v1", body=request ) response_body = json.loads(response["body"].read()) base64_image_data = response_body["images"][0] return base64_image_data except ClientError: logger.error("Couldn't invoke Titan Image generator") raise
  • API の詳細については、InvokeModelAWS 「 SDK for Python (Boto3) API リファレンス」の「」を参照してください。

次のコード例は、Amazon Bedrock で Anthropic Claude 2.x を呼び出し、レスポンスストリームをリアルタイムで処理する方法を示しています。

SDK for Python (Boto3)
注記

には他にもがあります GitHub。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

Anthropic Claude を呼び出し、レスポンスストリームを処理します。

async def invoke_model_with_response_stream(self, prompt): """ Invokes the Anthropic Claude 2 model to run an inference and process the response stream. :param prompt: The prompt that you want Claude to complete. :return: Inference response from the model. """ try: # The different model providers have individual request and response formats. # For the format, ranges, and default values for Anthropic Claude, refer to: # https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-claude.html # Claude requires you to enclose the prompt as follows: enclosed_prompt = "Human: " + prompt + "\n\nAssistant:" body = { "prompt": enclosed_prompt, "max_tokens_to_sample": 1024, "temperature": 0.5, "stop_sequences": ["\n\nHuman:"], } response = self.bedrock_runtime_client.invoke_model_with_response_stream( modelId="anthropic.claude-v2", body=json.dumps(body) ) for event in response.get("body"): chunk = json.loads(event["chunk"]["bytes"])["completion"] yield chunk except ClientError: logger.error("Couldn't invoke Anthropic Claude v2") raise
  • API の詳細については、InvokeModelWithResponseStreamAWS 「 SDK for Python (Boto3) API リファレンス」の「」を参照してください。

次のコード例は、Amazon Bedrock で Anthropic Claude 2.x を呼び出してテキストを生成する方法を示しています。

SDK for Python (Boto3)
注記

には他にもがあります GitHub。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

Anthropic Claude 2 基盤モデルを呼び出して、テキストを生成します。

def invoke_claude(self, prompt): """ Invokes the Anthropic Claude 2 model to run an inference using the input provided in the request body. :param prompt: The prompt that you want Claude to complete. :return: Inference response from the model. """ try: # The different model providers have individual request and response formats. # For the format, ranges, and default values for Anthropic Claude, refer to: # https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-claude.html # Claude requires you to enclose the prompt as follows: enclosed_prompt = "Human: " + prompt + "\n\nAssistant:" body = { "prompt": enclosed_prompt, "max_tokens_to_sample": 200, "temperature": 0.5, "stop_sequences": ["\n\nHuman:"], } response = self.bedrock_runtime_client.invoke_model( modelId="anthropic.claude-v2", body=json.dumps(body) ) response_body = json.loads(response["body"].read()) completion = response_body["completion"] return completion except ClientError: logger.error("Couldn't invoke Anthropic Claude") raise
  • API の詳細については、InvokeModelAWS 「 SDK for Python (Boto3) API リファレンス」の「」を参照してください。

次のコード例は、マルチモーダルプロンプトを使用して Amazon Bedrock で Anthropic Claude 3 を呼び出す方法を示しています。

SDK for Python (Boto3)
注記

には他にもがあります GitHub。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

マルチモーダルプロンプトを使用して Anthropic Claude 3 を呼び出し、イメージを分析します。

def invoke_claude_3_multimodal(self, prompt, base64_image_data): """ Invokes Anthropic Claude 3 Sonnet to run a multimodal inference using the input provided in the request body. :param prompt: The prompt that you want Claude 3 to use. :param base64_image_data: The base64-encoded image that you want to add to the request. :return: Inference response from the model. """ # Initialize the Amazon Bedrock runtime client client = self.client or boto3.client( service_name="bedrock-runtime", region_name="us-east-1" ) # Invoke the model with the prompt and the encoded image model_id = "anthropic.claude-3-sonnet-20240229-v1:0" request_body = { "anthropic_version": "bedrock-2023-05-31", "max_tokens": 2048, "messages": [ { "role": "user", "content": [ { "type": "text", "text": prompt, }, { "type": "image", "source": { "type": "base64", "media_type": "image/png", "data": base64_image_data, }, }, ], } ], } try: response = client.invoke_model( modelId=model_id, body=json.dumps(request_body), ) # Process and print the response result = json.loads(response.get("body").read()) input_tokens = result["usage"]["input_tokens"] output_tokens = result["usage"]["output_tokens"] output_list = result.get("content", []) print("Invocation details:") print(f"- The input length is {input_tokens} tokens.") print(f"- The output length is {output_tokens} tokens.") print(f"- The model returned {len(output_list)} response(s):") for output in output_list: print(output["text"]) return result except ClientError as err: logger.error( "Couldn't invoke Claude 3 Sonnet. Here's why: %s: %s", err.response["Error"]["Code"], err.response["Error"]["Message"], ) raise
  • API の詳細については、InvokeModelAWS 「 SDK for Python (Boto3) API リファレンス」の「」を参照してください。

次のコード例は、Amazon Bedrock で Anthropic Claude 3 を呼び出してテキストを生成する方法を示しています。

SDK for Python (Boto3)
注記

には他にもがあります GitHub。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

Anthropic Claude 3 を呼び出してテキストを生成します。

def invoke_claude_3_with_text(self, prompt): """ Invokes Anthropic Claude 3 Sonnet to run an inference using the input provided in the request body. :param prompt: The prompt that you want Claude 3 to complete. :return: Inference response from the model. """ # Initialize the Amazon Bedrock runtime client client = self.client or boto3.client( service_name="bedrock-runtime", region_name="us-east-1" ) # Invoke Claude 3 with the text prompt model_id = "anthropic.claude-3-sonnet-20240229-v1:0" try: response = client.invoke_model( modelId=model_id, body=json.dumps( { "anthropic_version": "bedrock-2023-05-31", "max_tokens": 1024, "messages": [ { "role": "user", "content": [{"type": "text", "text": prompt}], } ], } ), ) # Process and print the response result = json.loads(response.get("body").read()) input_tokens = result["usage"]["input_tokens"] output_tokens = result["usage"]["output_tokens"] output_list = result.get("content", []) print("Invocation details:") print(f"- The input length is {input_tokens} tokens.") print(f"- The output length is {output_tokens} tokens.") print(f"- The model returned {len(output_list)} response(s):") for output in output_list: print(output["text"]) return result except ClientError as err: logger.error( "Couldn't invoke Claude 3 Sonnet. Here's why: %s: %s", err.response["Error"]["Code"], err.response["Error"]["Message"], ) raise
  • API の詳細については、InvokeModelAWS 「 SDK for Python (Boto3) API リファレンス」の「」を参照してください。

次のコード例は、Meta Llama 2 へのプロンプトの送信とレスポンスの出力を開始する方法を示しています。

SDK for Python (Boto3)
注記

には他にもがあります GitHub。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

最初のプロンプトを Meta Llama 2 に送信します。

# Send a prompt to Meta Llama 2 and print the response. import boto3 import json # Create a Bedrock Runtime client in the AWS Region of your choice. client = boto3.client("bedrock-runtime", region_name="us-west-2") # Set the model ID, e.g., Llama 2 Chat 13B. model_id = "meta.llama2-13b-chat-v1" # Define the user message to send. user_message = "Describe the purpose of a 'hello world' program in one line." # Embed the message in Llama 2's prompt format. prompt = f"<s>[INST] {user_message} [/INST]" # Format the request payload using the model's native structure. request = { "prompt": prompt, # Optional inference parameters: "max_gen_len": 512, "temperature": 0.5, "top_p": 0.9, } # Encode and send the request. response = client.invoke_model(body=json.dumps(request), modelId=model_id) # Decode the native response body. model_response = json.loads(response["body"].read()) # Extract and print the generated text. response_text = model_response["generation"] print(response_text) # Learn more about the Llama 2 prompt format at: # https://llama.meta.com/docs/model-cards-and-prompt-formats/meta-llama-2
  • API の詳細については、InvokeModelAWS 「 SDK for Python (Boto3) API リファレンス」の「」を参照してください。

次のコード例は、Meta Llama 2 にプロンプトを送信し、レスポンスストリームをリアルタイムで出力する方法を示しています。

SDK for Python (Boto3)
注記

には他にもがあります GitHub。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

最初のプロンプトを Meta Llama 3 に送信します。

# Send a prompt to Meta Llama 2 and print the response stream in real-time. import boto3 import json # Create a Bedrock Runtime client in the AWS Region of your choice. client = boto3.client("bedrock-runtime", region_name="us-west-2") # Set the model ID, e.g., Llama 2 Chat 13B. model_id = "meta.llama2-13b-chat-v1" # Define the user message to send. user_message = "Describe the purpose of a 'hello world' program in one line." # Embed the message in Llama 2's prompt format. prompt = f"<s>[INST] {user_message} [/INST]" # Format the request payload using the model's native structure. request = { "prompt": prompt, # Optional inference parameters: "max_gen_len": 512, "temperature": 0.5, "top_p": 0.9, } # Encode and send the request. response_stream = client.invoke_model_with_response_stream( body=json.dumps(request), modelId=model_id, ) # Extract and print the response text in real-time. for event in response_stream["body"]: chunk = json.loads(event["chunk"]["bytes"]) if "generation" in chunk: print(chunk["generation"], end="") # Learn more about the Llama 2 prompt format at: # https://llama.meta.com/docs/model-cards-and-prompt-formats/meta-llama-2
  • API の詳細については、InvokeModelWithResponseStreamAWS 「 SDK for Python (Boto3) API リファレンス」の「」を参照してください。

次のコード例は、Meta Llama 3 へのプロンプトの送信とレスポンスの出力を開始する方法を示しています。

SDK for Python (Boto3)
注記

には他にもがあります GitHub。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

最初のプロンプトを Meta Llama 3 に送信します。

# Send a prompt to Meta Llama 3 and print the response. import boto3 import json # Create a Bedrock Runtime client in the AWS Region of your choice. client = boto3.client("bedrock-runtime", region_name="us-west-2") # Set the model ID, e.g., Llama 3 8B Instruct. model_id = "meta.llama3-8b-instruct-v1:0" # Define the user message to send. user_message = "Describe the purpose of a 'hello world' program in one line." # Embed the message in Llama 3's prompt format. prompt = f""" <|begin_of_text|> <|start_header_id|>user<|end_header_id|> {user_message} <|eot_id|> <|start_header_id|>assistant<|end_header_id|> """ # Format the request payload using the model's native structure. request = { "prompt": prompt, # Optional inference parameters: "max_gen_len": 512, "temperature": 0.5, "top_p": 0.9, } # Encode and send the request. response = client.invoke_model(body=json.dumps(request), modelId=model_id) # Decode the native response body. model_response = json.loads(response["body"].read()) # Extract and print the generated text. response_text = model_response["generation"] print(response_text) # Learn more about the Llama 3 prompt format in the documentation: # https://llama.meta.com/docs/model-cards-and-prompt-formats/meta-llama-3/#special-tokens-used-with-meta-llama-3
  • API の詳細については、InvokeModelAWS 「 SDK for Python (Boto3) API リファレンス」の「」を参照してください。

次のコード例は、Meta Llama 3 にプロンプトを送信し、レスポンスストリームをリアルタイムで出力する方法を示しています。

SDK for Python (Boto3)
注記

には他にもがあります GitHub。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

最初のプロンプトを Meta Llama 3 に送信します。

# Send a prompt to Meta Llama 3 and print the response stream in real-time. import boto3 import json # Create a Bedrock Runtime client in the AWS Region of your choice. client = boto3.client("bedrock-runtime", region_name="us-west-2") # Set the model ID, e.g., Llama 3 8B Instruct. model_id = "meta.llama3-8b-instruct-v1:0" # Define the user message to send. user_message = "Describe the purpose of a 'hello world' program in one line." # Embed the message in Llama 3's prompt format. prompt = f""" <|begin_of_text|> <|start_header_id|>user<|end_header_id|> {user_message} <|eot_id|> <|start_header_id|>assistant<|end_header_id|> """ # Format the request payload using the model's native structure. request = { "prompt": prompt, # Optional inference parameters: "max_gen_len": 512, "temperature": 0.5, "top_p": 0.9, } # Encode and send the request. response_stream = client.invoke_model_with_response_stream( body=json.dumps(request), modelId=model_id, ) # Extract and print the response text in real-time. for event in response_stream["body"]: chunk = json.loads(event["chunk"]["bytes"]) if "generation" in chunk: print(chunk["generation"], end="") # Learn more about the Llama 3 prompt format at: # https://llama.meta.com/docs/model-cards-and-prompt-formats/meta-llama-3/#special-tokens-used-with-meta-llama-3
  • API の詳細については、InvokeModelWithResponseStreamAWS 「 SDK for Python (Boto3) API リファレンス」の「」を参照してください。

次のコード例は、Amazon Bedrock で Mistral 7B モデルを呼び出してテキストを生成する方法を示しています。

SDK for Python (Boto3)
注記

には他にもがあります GitHub。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

Mistral 7B 基盤モデルを呼び出してテキストを生成します。

def invoke_mistral_7b(self, prompt): """ Invokes the Mistral 7B model to run an inference using the input provided in the request body. :param prompt: The prompt that you want Mistral to complete. :return: List of inference responses from the model. """ try: # Mistral instruct models provide optimal results when # embedding the prompt into the following template: instruction = f"<s>[INST] {prompt} [/INST]" model_id = "mistral.mistral-7b-instruct-v0:2" body = { "prompt": instruction, "max_tokens": 200, "temperature": 0.5, } response = self.bedrock_runtime_client.invoke_model( modelId=model_id, body=json.dumps(body) ) response_body = json.loads(response["body"].read()) outputs = response_body.get("outputs") completions = [output["text"] for output in outputs] return completions except ClientError: logger.error("Couldn't invoke Mistral 7B") raise
  • API の詳細については、InvokeModelAWS 「 SDK for Python (Boto3) API リファレンス」の「」を参照してください。

次のコード例は、テキスト生成のために Amazon Bedrock で Mixtral 8x7B モデルを呼び出す方法を示しています。

SDK for Python (Boto3)
注記

には他にもがあります GitHub。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

Mixtral 8x7B 基盤モデルを呼び出してテキストを生成します。

def invoke_mixtral_8x7b(self, prompt): """ Invokes the Mixtral 8c7B model to run an inference using the input provided in the request body. :param prompt: The prompt that you want Mixtral to complete. :return: List of inference responses from the model. """ try: # Mistral instruct models provide optimal results when # embedding the prompt into the following template: instruction = f"<s>[INST] {prompt} [/INST]" model_id = "mistral.mixtral-8x7b-instruct-v0:1" body = { "prompt": instruction, "max_tokens": 200, "temperature": 0.5, } response = self.bedrock_runtime_client.invoke_model( modelId=model_id, body=json.dumps(body) ) response_body = json.loads(response["body"].read()) outputs = response_body.get("outputs") completions = [output["text"] for output in outputs] return completions except ClientError: logger.error("Couldn't invoke Mixtral 8x7B") raise
  • API の詳細については、InvokeModelAWS 「 SDK for Python (Boto3) API リファレンス」の「」を参照してください。

次のコード例は、Amazon Bedrock で Stability.ai Stable Diffusion XL を呼び出してイメージを生成する方法を示しています。

SDK for Python (Boto3)
注記

には他にもがあります GitHub。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

Stability.ai Stable Diffusion XL 基盤モデルを呼び出して画像を生成します。

def invoke_stable_diffusion(self, prompt, seed, style_preset=None): """ Invokes the Stability.ai Stable Diffusion XL model to create an image using the input provided in the request body. :param prompt: The prompt that you want Stable Diffusion to use for image generation. :param seed: Random noise seed (omit this option or use 0 for a random seed) :param style_preset: Pass in a style preset to guide the image model towards a particular style. :return: Base64-encoded inference response from the model. """ try: # The different model providers have individual request and response formats. # For the format, ranges, and available style_presets of Stable Diffusion models refer to: # https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-stability-diffusion.html body = { "text_prompts": [{"text": prompt}], "seed": seed, "cfg_scale": 10, "steps": 30, } if style_preset: body["style_preset"] = style_preset response = self.bedrock_runtime_client.invoke_model( modelId="stability.stable-diffusion-xl", body=json.dumps(body) ) response_body = json.loads(response["body"].read()) base64_image_data = response_body["artifacts"][0]["base64"] return base64_image_data except ClientError: logger.error("Couldn't invoke Stable Diffusion XL") raise
  • API の詳細については、InvokeModelAWS 「 SDK for Python (Boto3) API リファレンス」の「」を参照してください。

シナリオ

次のコード例は、さまざまな方法で Amazon Bedrock 基盤モデルと相互作用するプレイグラウンドを作成する方法を示しています。

SDK for Python (Boto3)

Python 基盤モデル (FM) プレイグラウンドは Python/FastAPI のサンプルアプリケーションで、Python で Amazon Bedrock を使用する方法を紹介しています。この例は、Python 開発者が Amazon Bedrock を使用して生成 AI 対応アプリケーションを構築する方法を示しています。次の 3 つのプレイグラウンドを使用して Amazon Bedrock 基盤モデルをテストしたり操作したりできます。

  • テキストプレイグラウンド。

  • チャットプレイグラウンド。

  • イメージプレイグラウンド。

この例には、アクセスできる基盤モデルとその特性が一覧表示されています。ソースコードとデプロイ手順については、「」のプロジェクトを参照してくださいGitHub

この例で使用されているサービス
  • Amazon Bedrock ランタイム

次のコード例は、Amazon Bedrock と Step Functions を使用して生成 AI アプリケーションを構築およびオーケストレーションする方法を示しています。

SDK for Python (Boto3)

Amazon Bedrock Serverless Prompt Chaining シナリオではAWS Step Functions、、Amazon Bedrockエージェントを使用して、複雑でサーバーレス、かつ高度にスケーラブルな生成 AI アプリケーションを構築およびオーケストレーションする方法を示します。これには、次の実例が含まれています。

  • 写真ブログの特定の新機能の分析を記述します。この例は、プロンプトのシンプルなシーケンシャルチェーンを示しています。

  • 特定のトピックに関する短いストーリーを生成します。この例は、AI が以前に生成したアイテムのリストを繰り返し処理する方法を示しています。

  • 特定の目的地への週末の休暇用の宿泊施設を作成します。この例では、複数の異なるプロンプトを並列化する方法を示します。

  • 映画プロデューサーとして動作している人間のユーザーに映画のアイデアを公開します。この例では、同じプロンプトを異なる推論パラメータで並列化する方法、チェーン内の前のステップにバックトラックする方法、ワークフローの一部として人間の入力を含める方法を示します。

  • ユーザーが手持ちの薬剤に基づいて薬剤を計画します。この例では、プロンプトチェーンに 2 つの AI の会話を組み込む方法を示し、2 つの AI ペルソナが相互に議論して最終成果を向上させます。

  • 今日の最もトレンドの GitHub リポジトリを見つけて要約します。この例は、外部 APIs とやり取りする複数の AI エージェントを連鎖させる方法を示しています。

完全なソースコードとセットアップと実行の手順については、「」の「 プロジェクト全体」を参照してくださいGitHub

この例で使用されているサービス
  • Amazon Bedrock

  • Amazon Bedrock ランタイム

  • Agents for Amazon Bedrock

  • Agents for Amazon Bedrock ランタイム

  • Step Functions