Anthropic Claude メッセージ API - Amazon Bedrock

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

Anthropic Claude メッセージ API

このセクションでは、 を使用するための推論パラメータとコード例を示します。Anthropic Claude メッセージ API。

Anthropic Claude メッセージAPIの概要

メッセージを使用してAPI、チャットボットまたは仮想アシスタントアプリケーションを作成できます。は、ユーザーと 間の会話交換APIを管理します。Anthropic Claude モデル (アシスタント)。

ヒント

このトピックでは、Anthropic Claude ベース推論オペレーション (InvokeModel または InvokeModelWithResponseStream) APIを含むメッセージ。ただし、Converse API を使用してアプリケーションにメッセージを実装することをお勧めします。Converse APIは、メッセージをサポートするすべてのモデルで動作する統合されたパラメータセットを提供します。詳細については、「Converse APIオペレーションとの会話を実行する」を参照してください。

Anthropic は Claude モデルをトレーニングして、ユーザーとアシスタントの会話ターンを交互に操作します。新しいメッセージを作成するときは、メッセージパラメータを使用して以前の会話ターンを指定します。その後、モデルは会話で次のメッセージを生成します。

各入力メッセージは、ロールとコンテンツを含むオブジェクトである必要があります。1 つのユーザーロールメッセージを指定するか、複数のユーザーメッセージとアシスタントメッセージを含めることができます。最初のメッセージは常にユーザーロールを使用する必要があります。

からのレスポンスを事前入力する手法を使用している場合 Claude (最終アシスタントロール Message を使用して Claude のレスポンスの先頭に入力する) Claude は、中断した場所から をピックアップして応答します。この手法では、Claude は、アシスタントロールのレスポンスを返します。

最終メッセージがアシスタントロールを使用する場合、レスポンスコンテンツはメッセージのコンテンツからすぐに続行されます。これを使用して、モデルのレスポンスの一部を制限できます。

単一のユーザーメッセージの例:

[{"role": "user", "content": "Hello, Claude"}]

複数の会話ターンの例:

[ {"role": "user", "content": "Hello there."}, {"role": "assistant", "content": "Hi, I'm Claude. How can I help you?"}, {"role": "user", "content": "Can you explain LLMs in plain English?"}, ]

Claude から部分的に入力されたレスポンスの例:

[ {"role": "user", "content": "Please describe yourself using only JSON"}, {"role": "assistant", "content": "Here is my JSON description:\n{"}, ]

各入力メッセージコンテンツは、単一の文字列またはコンテンツブロックの配列のいずれかで、各ブロックには特定のタイプがあります。文字列の使用は、「text」タイプの 1 つのコンテンツブロックの配列に短縮されます。次の入力メッセージは同等です。

{"role": "user", "content": "Hello, Claude"}
{"role": "user", "content": [{"type": "text", "text": "Hello, Claude"}]}

のプロンプトの作成の詳細については、Anthropic Claude モデルについては、「」の「プロンプトの概要」を参照してください。Anthropic Claude ドキュメント内) を参照してください。メッセージ に移行する既存のテキスト完了プロンプトがある場合はAPI、「テキスト完了 からの移行」を参照してください。

システムプロンプト

リクエストにシステムプロンプトを含めることもできます。システムプロンプトでは、コンテキストと手順を提供できます。Anthropic Claude例えば、特定の目標やロールの指定など。次の例に示すように、 system フィールドにシステムプロンプトを指定します。

"system": "You are Claude, an AI assistant created by Anthropic to be helpful, harmless, and honest. Your goal is to provide informative and substantive responses to queries while avoiding potential harms."

詳細については、「」の「システムプロンプト」を参照してください。Anthropic ドキュメント内) を参照してください。

マルチモーダルプロンプト

マルチモーダルプロンプトは、複数のモダリティ (画像とテキスト) を 1 つのプロンプトにまとめます。content 入力フィールドにモダリティを指定します。次の例は、Anthropic Claude は、提供されたイメージの内容を記述します。サンプルコードについては、「マルチモーダルコードの例」を参照してください。

{ "anthropic_version": "bedrock-2023-05-31", "max_tokens": 1024, "messages": [ { "role": "user", "content": [ { "type": "image", "source": { "type": "base64", "media_type": "image/jpeg", "data": "iVBORw..." } }, { "type": "text", "text": "What's in these images?" } ] } ] }
注記

以下の制限は、 contentフィールドに関連しています。

  • 最大 20 個のイメージを含めることができます。各イメージのサイズ、高さ、幅は、それぞれ 3.75 MB、8,000 px、8,000 px 以下にする必要があります。

  • 最大 5 つのドキュメントを含めることができます。各ドキュメントのサイズは 4.5 MB 以下にする必要があります。

  • イメージとドキュメントを含めることができるroleのは、 が の場合のみですuser

リクエストに含める各イメージは、トークンの使用にカウントされます。詳細については、「」の「イメージコスト」を参照してください。Anthropic ドキュメント内) を参照してください。

ツールの使用 (関数呼び出し)

で Anthropic Claude 3 つのモデルで、モデルがメッセージの応答に使用できるツールを指定できます。例えば、ラジオステーションで最も人気のある曲を取得するツールを指定できます。ユーザーがメッセージに合格した場合 で一番人気のある曲は何ですかWZPZ? では、指定したツールが質問に答えるのに役立つことがモデルによって判断されます。応答では、モデルがユーザーに代わってツールを実行することをリクエストします。次に、ツールを実行し、ツール結果をモデルに渡します。これにより、元のメッセージのレスポンスが生成されます。詳細については、「」の「ツールの使用 (関数呼び出し)」を参照してください。Anthropic Claude ドキュメント内) を参照してください。

ヒント

ツールの使用をアプリケーションAPIに統合するには、Converse を使用することをお勧めします。詳細については、「ツールを使用して Amazon Bedrock モデルのレスポンスを完了する」を参照してください。

tools フィールドでモデルで使用できるようにしたいツールを指定します。次の例は、ラジオステーションで最も人気のある曲を取得するツールの場合です。

[ { "name": "top_song", "description": "Get the most popular song played on a radio station.", "input_schema": { "type": "object", "properties": { "sign": { "type": "string", "description": "The call sign for the radio station for which you want the most popular song. Example calls signs are WZPZ and WKRP." } }, "required": [ "sign" ] } } ]

モデルがメッセージへの応答を生成するツールを必要とする場合、リクエストされたツールに関する情報と、ツールへの入力がメッセージcontentフィールドに返されます。また、 への応答の停止理由も設定されますtool_use

{ "id": "msg_bdrk_01USsY5m3XRUF4FCppHP8KBx", "type": "message", "role": "assistant", "model": "claude-3-sonnet-20240229", "stop_sequence": null, "usage": { "input_tokens": 375, "output_tokens": 36 }, "content": [ { "type": "tool_use", "id": "toolu_bdrk_01SnXQc6YVWD8Dom5jz7KhHy", "name": "top_song", "input": { "sign": "WZPZ" } } ], "stop_reason": "tool_use" }

コードでは、ツールの代わりにツールを呼び出します。次に、ユーザーメッセージのツール結果 (tool_result) をモデルに渡します。

{ "role": "user", "content": [ { "type": "tool_result", "tool_use_id": "toolu_bdrk_01SnXQc6YVWD8Dom5jz7KhHy", "content": "Elemental Hotel" } ] }

応答では、モデルはツール結果を使用して元のメッセージの応答を生成します。

{ "id": "msg_bdrk_012AaqvTiKuUSc6WadhUkDLP", "type": "message", "role": "assistant", "model": "claude-3-sonnet-20240229", "content": [ { "type": "text", "text": "According to the tool, the most popular song played on radio station WZPZ is \"Elemental Hotel\"." } ], "stop_reason": "end_turn" }

サポートされているモデル

次のメッセージを使用できますAPI。Anthropic Claude モデル。

  • Anthropic Claude Instant v1.2

  • Anthropic Claude 2 v2

  • Anthropic Claude 2 v2.1

  • Anthropic Claude 3 Sonnet

  • Anthropic Claude 3.5 Sonnet

  • Anthropic Claude 3 Haiku

  • Anthropic Claude 3 Opus

リクエストとレスポンス

リクエスト本文は、リクエストの body フィールドで InvokeModelまたは に渡されますInvokeModelWithResponseStream。リクエストで送信できるペイロードの最大サイズは 20MBです。

詳細については、https://docs.anthropic.com/claude/「 reference/messages_post」を参照してください。

Request

Anthropic Claude には、メッセージ推論呼び出しの次の推論パラメータがあります。

{ "anthropic_version": "bedrock-2023-05-31", "max_tokens": int, "system": string, "messages": [ { "role": string, "content": [ { "type": "image", "source": { "type": "base64", "media_type": "image/jpeg", "data": "content image bytes" } }, { "type": "text", "text": "content text" } ] } ], "temperature": float, "top_p": float, "top_k": int, "tools": [ { "name": string, "description": string, "input_schema": json } ], "tool_choice": { "type" : string, "name" : string, }, "stop_sequences": [string] }

必須パラメータを以下に示します。

  • anthropic_version – (必須) anthropic バージョン。値は bedrock-2023-05-31 にする必要があります。

  • max_tokens – (必須) 停止する前に生成するトークンの最大数。

    注:Anthropic Claude モデルは、 の値に達する前にトークンの生成を停止する場合がありますmax_tokens。異なる Anthropic Claude モデルには、このパラメータの最大値が異なります。詳細については、「モデル比較」を参照してください。

  • メッセージ – (必須) 入力メッセージ。

    • role – 会話ターンのロール。有効な値は、user および assistant です。

    • content – (必須) 会話ターンの内容。

      • type – (必須) コンテンツのタイプ。有効な値は、image および text です。

        を指定する場合はimage、次の形式でイメージソースも指定する必要があります。

        source – (必須) 会話ターンの内容。

        • type – (必須) イメージのエンコードタイプ。を指定できますbase64

        • media_type – (必須) イメージのタイプ。次のイメージ形式を指定できます。

          • image/jpeg

          • image/png

          • image/webp

          • image/gif

        • data – (必須) イメージの base64 エンコードされたイメージバイト。最大イメージサイズは 3.75 MB です。イメージの最大高さと幅は 8,000 ピクセルです。

        を指定する場合はtext、 でプロンプトも指定する必要がありますtext

オプションのパラメータを以下に示します。

  • system – (オプション) リクエストのシステムプロンプト。

    システムプロンプトは、コンテキストと手順を提供する方法です。Anthropic Claude例えば、特定の目標やロールの指定など。詳細については、「」の「システムプロンプト」を参照してください。Anthropic ドキュメント内) を参照してください。

    注記

    システムプロンプトは、 で使用できます。Anthropic Claude バージョン 2.1 以降。

  • stop_sequences – (オプション) モデルの生成を停止させるカスタムテキストシーケンス。Anthropic Claude モデルは通常、ターンを自然に完了すると停止します。この場合、stop_reasonレスポンスフィールドの値は ですend_turn。カスタム文字列のテキストが発生したときにモデルの生成を停止する場合は、 stop_sequencesパラメータを使用できます。モデルがカスタムテキスト文字列のいずれかに遭遇した場合、stop_reasonレスポンスフィールドの値は stop_sequenceで、 の値は一致する停止シーケンスstop_sequenceを含みます。

    エントリの最大数は 8191 です。

  • temperature – (オプション) レスポンスに注入されるランダム性の量。

    デフォルト 最小値 最大値

    1

    0

    1

  • top_p – (オプション) nucleus サンプリングを使用します。

    核サンプリングでは、Anthropic Claude は、後続の各トークンのすべてのオプションに対する累積分布を、確率の降順で計算し、 で指定された特定の確率に達すると切り捨てますtop_ptemperature または のいずれかを変更する必要がありますがtop_p、両方を変更することはできません。

    デフォルト 最小値 最大値

    0.999

    0

    1

  • top_k – (オプション) 後続の各トークンの上位 K オプションのサンプルのみ。

    top_k を使用して、ロングテールの低確率レスポンスを削除します。

    デフォルト 最小値 最大値

    デフォルトでは無効になっています

    0

    500

  • ツール – (オプション) モデルが使用できるツールの定義。

    注記

    が必要です Anthropic Claude 3 モデル。

    リクエストtoolsに を含めると、モデルがこれらのツールの使用を表すtool_useコンテンツブロックを返すことがあります。その後、モデルによって生成されたツール入力を使用してこれらのツールを実行し、必要に応じてtool_resultコンテンツブロックを使用して結果をモデルに返すことができます。

    • name – ツールの名前。

    • description – (オプションですが、強く推奨) ツールの説明。

    • input_schema – ツールのJSONスキーマ。

  • tool_choice – (オプション) モデルが提供されたツールを使用する方法を指定します。モデルは、特定のツール、使用可能な任意のツールを使用するか、単独で決定できます。

    注記

    が必要です Anthropic Claude 3 モデル。

    • type – ツール選択のタイプ。可能な値は、 any (使用可能な任意のツールを使用)、 auto (モデルが決定)、 tool (指定されたツールを使用) です。

    • name – (オプション) 使用するツールの名前。type フィールドtoolで を指定する場合に必要です。

Response

- Anthropic Claude モデルは、メッセージ推論呼び出しに対して次のフィールドを返します。

{ "id": string, "model": string, "type" : "message", "role" : "assistant", "content": [ { "type": string, "text": string } ], "stop_reason": string, "stop_sequence": string, "tool_use" : { "type": string, "id" : string, "input" : json }, "usage": { "input_tokens": integer, "output_tokens": integer } }
  • id – レスポンスの一意の識別子。ID の形式と長さは、時間の経過とともに変わる可能性があります。

  • モデル – の ID Anthropic Claude リクエストを行ったモデル。

  • stop_reason – その理由 Anthropic Claude はレスポンスの生成を停止しました。

    • end_turn – モデルが自然な停止ポイントに達した

    • max_tokens – 生成されたテキストがmax_tokens入力フィールドの値を超えたか、モデルがサポートするトークンの最大数を超えました。' 。

    • stop_sequence – モデルは、stop_sequences入力フィールドで指定した停止シーケンスのいずれかを生成しました。

  • stop_sequence – 生成を終了した停止シーケンス。

  • type – レスポンスのタイプ。値は常に message です。

  • role – 生成されたメッセージの会話ロール。値は常に assistant です。

  • content – モデルによって生成されたコンテンツ。配列として返されます。コンテンツには、 textの 2 種類がありますtool_use

    • text – テキストレスポンス。

      • type – この値は ですtext。コンテンツのタイプ。

      • text – コンテンツのテキスト。

    • tool_use – ツールを使用するためのモデルからの へのリクエスト。

      • type – この値は ですtext。コンテンツのタイプ。

      • id – モデルが使用をリクエストしているツールの ID。

      • input – ツールに渡す入力パラメータ。

  • usage – リクエストで指定したトークンの数と、レスポンスで生成されたモデルの数トークンのコンテナ。

    • input_tokens – リクエスト内の入力トークンの数。

    • output_tokens – レスポンスでモデルが生成したトークンの数。

    • stop_sequence – モデルは、stop_sequences入力フィールドで指定した停止シーケンスのいずれかを生成しました。

コードの例

次のコード例は、メッセージ の使用方法を示していますAPI。

メッセージコードの例

この例では、1 回のターンのユーザーメッセージと、事前入力済みのアシスタントメッセージを使用したユーザーのターンを に送信する方法を示しています。Anthropic Claude 3 Sonnet モデル。

# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 """ Shows how to generate a message with Anthropic Claude (on demand). """ import boto3 import json import logging from botocore.exceptions import ClientError logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) def generate_message(bedrock_runtime, model_id, system_prompt, messages, max_tokens): body=json.dumps( { "anthropic_version": "bedrock-2023-05-31", "max_tokens": max_tokens, "system": system_prompt, "messages": messages } ) response = bedrock_runtime.invoke_model(body=body, modelId=model_id) response_body = json.loads(response.get('body').read()) return response_body def main(): """ Entrypoint for Anthropic Claude message example. """ try: bedrock_runtime = boto3.client(service_name='bedrock-runtime') model_id = 'anthropic.claude-3-sonnet-20240229-v1:0' system_prompt = "Please respond only with emoji." max_tokens = 1000 # Prompt with user turn only. user_message = {"role": "user", "content": "Hello World"} messages = [user_message] response = generate_message (bedrock_runtime, model_id, system_prompt, messages, max_tokens) print("User turn only.") print(json.dumps(response, indent=4)) # Prompt with both user turn and prefilled assistant response. #Anthropic Claude continues by using the prefilled assistant text. assistant_message = {"role": "assistant", "content": "<emoji>"} messages = [user_message, assistant_message] response = generate_message(bedrock_runtime, model_id,system_prompt, messages, max_tokens) print("User turn and prefilled assistant response.") print(json.dumps(response, indent=4)) except ClientError as err: message=err.response["Error"]["Message"] logger.error("A client error occurred: %s", message) print("A client error occured: " + format(message)) if __name__ == "__main__": main()

マルチモーダルコードの例

次の例は、マルチモーダルメッセージのイメージとプロンプトテキストを に渡す方法を示しています。Anthropic Claude 3 Sonnet モデル。

を使用したマルチモーダルプロンプト InvokeModel

次の例は、マルチモーダルプロンプトを に送信する方法を示しています。Anthropic Claude 3 Sonnet と InvokeModel

# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 """ Shows how to run a multimodal prompt with Anthropic Claude (on demand) and InvokeModel. """ import json import logging import base64 import boto3 from botocore.exceptions import ClientError logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) def run_multi_modal_prompt(bedrock_runtime, model_id, messages, max_tokens): """ Invokes a model with a multimodal prompt. Args: bedrock_runtime: The Amazon Bedrock boto3 client. model_id (str): The model ID to use. messages (JSON) : The messages to send to the model. max_tokens (int) : The maximum number of tokens to generate. Returns: None. """ body = json.dumps( { "anthropic_version": "bedrock-2023-05-31", "max_tokens": max_tokens, "messages": messages } ) response = bedrock_runtime.invoke_model( body=body, modelId=model_id) response_body = json.loads(response.get('body').read()) return response_body def main(): """ Entrypoint for Anthropic Claude multimodal prompt example. """ try: bedrock_runtime = boto3.client(service_name='bedrock-runtime') model_id = 'anthropic.claude-3-sonnet-20240229-v1:0' max_tokens = 1000 input_image = "/path/to/image" input_text = "What's in this image?" # Read reference image from file and encode as base64 strings. with open(input_image, "rb") as image_file: content_image = base64.b64encode(image_file.read()).decode('utf8') message = {"role": "user", "content": [ {"type": "image", "source": {"type": "base64", "media_type": "image/jpeg", "data": content_image}}, {"type": "text", "text": input_text} ]} messages = [message] response = run_multi_modal_prompt( bedrock_runtime, model_id, messages, max_tokens) print(json.dumps(response, indent=4)) except ClientError as err: message = err.response["Error"]["Message"] logger.error("A client error occurred: %s", message) print("A client error occured: " + format(message)) if __name__ == "__main__": main()

を使用したマルチモーダルプロンプトのストリーミング InvokeModelWithResponseStream

次の例は、 に送信されたマルチモーダルプロンプトからレスポンスをストリーミングする方法を示しています。Anthropic Claude 3 Sonnet と InvokeModelWithResponseStream

# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 """ Shows how to stream the response from Anthropic Claude Sonnet (on demand) for a multimodal request. """ import json import base64 import logging import boto3 from botocore.exceptions import ClientError logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) def stream_multi_modal_prompt(bedrock_runtime, model_id, input_text, image, max_tokens): """ Streams the response from a multimodal prompt. Args: bedrock_runtime: The Amazon Bedrock boto3 client. model_id (str): The model ID to use. input_text (str) : The prompt text image (str) : The path to an image that you want in the prompt. max_tokens (int) : The maximum number of tokens to generate. Returns: None. """ with open(image, "rb") as image_file: encoded_string = base64.b64encode(image_file.read()) body = json.dumps({ "anthropic_version": "bedrock-2023-05-31", "max_tokens": max_tokens, "messages": [ { "role": "user", "content": [ {"type": "text", "text": input_text}, {"type": "image", "source": {"type": "base64", "media_type": "image/jpeg", "data": encoded_string.decode('utf-8')}} ] } ] }) response = bedrock_runtime.invoke_model_with_response_stream( body=body, modelId=model_id) for event in response.get("body"): chunk = json.loads(event["chunk"]["bytes"]) if chunk['type'] == 'message_delta': print(f"\nStop reason: {chunk['delta']['stop_reason']}") print(f"Stop sequence: {chunk['delta']['stop_sequence']}") print(f"Output tokens: {chunk['usage']['output_tokens']}") if chunk['type'] == 'content_block_delta': if chunk['delta']['type'] == 'text_delta': print(chunk['delta']['text'], end="") def main(): """ Entrypoint for Anthropic Claude Sonnet multimodal prompt example. """ model_id = "anthropic.claude-3-sonnet-20240229-v1:0" input_text = "What can you tell me about this image?" image = "/path/to/image" max_tokens = 100 try: bedrock_runtime = boto3.client('bedrock-runtime') stream_multi_modal_prompt( bedrock_runtime, model_id, input_text, image, max_tokens) except ClientError as err: message = err.response["Error"]["Message"] logger.error("A client error occurred: %s", message) print("A client error occured: " + format(message)) if __name__ == "__main__": main()