翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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例えば、特定の目標やロールの指定など。次の例に示すように、 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."
詳細については、「」の「システムプロンプト
マルチモーダルプロンプト
マルチモーダルプロンプトは、複数のモダリティ (画像とテキスト) を 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 Claude 3 つのモデルで、モデルがメッセージの応答に使用できるツールを指定できます。例えば、ラジオステーションで最も人気のある曲を取得するツールを指定できます。ユーザーがメッセージに合格した場合 で一番人気のある曲は何ですかWZPZ? では、指定したツールが質問に答えるのに役立つことがモデルによって判断されます。応答では、モデルがユーザーに代わってツールを実行することをリクエストします。次に、ツールを実行し、ツール結果をモデルに渡します。これにより、元のメッセージのレスポンスが生成されます。詳細については、「」の「ツールの使用 (関数呼び出し)
ヒント
ツールの使用をアプリケーション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
コードの例
次のコード例は、メッセージ の使用方法を示しています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()