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

各入力メッセージは、ロールとコンテンツを含むオブジェクトである必要があります。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 以下にする必要があります。

  • roleuser の場合、画像とドキュメントのみを含めることができます。

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

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

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

ヒント

を使用することをお勧めします。Converse API ツールの使用をアプリケーションに統合するための 。詳細については、「ツールを使用して 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" }

Computer Use (ベータ版)

コンピュータの使用は新しい Anthropic Claude Claude 3.5 Sonnet v2 でのみ利用可能なモデル機能 (ベータ版)。コンピュータを使用する場合、Claude は、基本的なGUIアクションを通じてタスクを自動化するのに役立ちます。

警告

コンピュータ使用機能は、「 サービス条件」で定義されている「ベータAWSサービス」として利用できます。本ライセンス条項は、 AWSおよび AWS サービス条件、および該当するモデル との契約の対象となりますEULA。コンピュータの使用には、標準API機能やチャットインターフェイスとは異なる固有のリスクAPIがあることに注意してください。これらのリスクは、コンピュータを使用してインターネットとAPIやり取りするときに高まります。リスクを最小限に抑えるには、次のような予防策を検討します。

  • Computer Use 機能は、システムへの直接攻撃や事故を防ぐために、最小限の権限で専用の仮想マシンまたはコンテナで使用します。

  • 情報の盗難を防ぐため、コンピュータの使用に機密アカウントまたはデータAPIへのアクセスを許可しないでください。

  • コンピュータを制限すると、 APIのインターネットアクセスを必要なドメインに制限し、悪意のあるコンテンツへの露出を減らします。

  • 適切な監視を行うには、機密タスク (現実の世界に重大な結果を与える意思決定など) や、肯定的合意が必要なもの (Cookie の承諾、金融取引の実行または利用規約への同意など) のループに人間を関与させます。

有効にしたコンテンツ Claude または アクセスが指示を上書きしたり、Claude は、間違いを犯したり、意図しないアクションを実行したりします。分離などの適切な予防策を講じる Claude は、プロンプトインジェクションに関連するリスクを回避するためなど、機密性の高い表面からの が不可欠です。独自の製品で Computer Use 機能に必要なアクセス許可を有効化またはリクエストする前に、エンドユーザーに関連するリスクを通知したり、必要に応じて、エンドユーザーから合意を得ます。

コンピュータの使用にはAPI、いくつかの事前定義されたコンピュータ使用ツール (computer_20241022bash_20241022text_editor_20241022) が用意されています。その後、「前回の会議メモを含む E メールを Ben に送信する」やスクリーンショット (必要な場合) などのリクエストを含むプロンプトを作成できます。レスポンスには、 JSON形式のtool_useアクションのリストが含まれます (例: scroll_down、left_button_press、スクリーンショット)。コードはコンピュータアクションを実行し、Claude 出力を示すスクリーンショット付き (リクエストした場合)。

多相ツール型を承認するようにツールパラメータが更新されました。これらを区別するために新しい tool.type プロパティが追加されました。type は、オプションですが、省略された場合、ツールは、カスタムツールとしてみなされます (以前唯一サポートされていたツールタイプ)。さらに、対応する列挙値 computer-use-2024-10-22 を持つ新しいパラメータ anthropic_beta が追加されました。このパラメータと列挙で行われたリクエストのみが、新しい Computer Use ツールを使用できます。"anthropic_beta": ["computer-use-2024-10-22"] のように指定できます。

詳細については、「」の「コンピュータの使用 (ベータ)」を参照してください。Anthropic ドキュメント内) を参照してください。

以下は、リクエストにデスクトップのスクリーンショットと Firefox アイコンが含まれていると仮定するレスポンスの例です。

{ "id": "msg_123", "type": "message", "role": "assistant", "model": "anthropic.claude-3-5-sonnet-20241022-v2:0", "content": [ { "type": "text", "text": "I see the Firefox icon. Let me click on it and then navigate to a weather website." }, { "type": "tool_use", "id": "toolu_123", "name": "computer", "input": { "action": "mouse_move", "coordinate": [ 708, 736 ] } }, { "type": "tool_use", "id": "toolu_234", "name": "computer", "input": { "action": "left_click" } } ], "stop_reason": "tool_use", "stop_sequence": null, "usage": { "input_tokens": 3391, "output_tokens": 132 } }

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

メッセージは、次の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.5 Sonnet v2

  • Anthropic Claude 3 Haiku

  • Anthropic Claude 3 Opus

リクエストとレスポンス

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

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

Request

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

{ "anthropic_version": "bedrock-2023-05-31", "anthropic_beta": ["computer-use-2024-10-22"] "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": [ { "type": "custom", "name": string, "description": string, "input_schema": json }, { "type": "computer_20241022", "name": "computer", "display_height_px": int, "display_width_px": int, "display_number": 0 int }, { "type": "bash_20241022", "name": "bash" }, { "type": "text_editor_20241022", "name": "str_replace_editor" } ], "tool_choice": { "type" : string, "name" : string, }, "stop_sequences": [string] }

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

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

  • anthropic_beta – (コンピュータを使用している場合は必須API) 使用する anthropic ベータ。コンピュータで を使用するにはAPI、値が である必要がありますcomputer-use-2024-10-22

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

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

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

    • 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 サンプリングを使用します。

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

    デフォルト値 最小値 最大値

    0.999

    0

    1

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

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

    デフォルト値 最小値 最大値

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

    0

    500

  • tools – (オプション) モデルが使用する可能性があるツールの定義です。

    注記

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

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

    次のツールタイプを渡すことができます。

    カスタム

    カスタムツールの定義。

    • (オプション) type – ツールのタイプ。定義されている場合は、値 custom を使用します。

    • name – ツール名。

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

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

    [コンピュータ]

    コンピュータで使用するコンピュータツールの定義は、 を使用しますAPI。

    • type – 値は computer_20241022 である必要があります。

    • name – 値は computer である必要があります。

    • (必須) display_height_px – モデルが制御するディスプレイのピクセル単位の高さ。

      デフォルト値 最小値 最大値

      [なし]

      1

      最大解像度なし

    • (必須) display_width_px – モデルが制御するディスプレイのピクセル単位の幅。

      デフォルト値 最小値 最大値

      [なし]

      1

      最大解像度なし

    • (オプション) display_number – 制御する表示番号 (X11 環境にのみ関連)。指定した場合、ツールは、ツール定義で表示番号を指定します。

      デフォルト値 最小値 最大値

      [なし]

      0

      N

    bash

    コンピュータで使用する bash ツールの定義は、 を使用しますAPI。

    • (オプション) type – 値は bash_20241022 である必要があります。

    • name – 値は bash である必要があります。

    テキストエディタ

    コンピュータで使用するテキストエディタツールの定義は、 を使用しますAPI。

    • (オプション) type – 値は text_editor_20241022 である必要があります。

    • name – 値は str_replace_editor である必要があります。

  • 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 – モデルが生成したコンテンツ。配列として返されます。コンテンツには、texttool_use の 2 種類あります。

    • 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()