Anthropic Claude Nachrichten API - Amazon Bedrock

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Anthropic Claude Nachrichten API

Dieser Abschnitt enthält Inferenzparameter und Codebeispiele für die Verwendung von Anthropic Claude NachrichtenAPI.

Anthropic Claude Nachrichten API im Überblick

Sie können die Nachrichten verwendenAPI, um Chat-Bots oder virtuelle Assistentenanwendungen zu erstellen. Der API verwaltet den Konversationsaustausch zwischen einem Benutzer und einem Anthropic Claude Modell (Assistent).

Tipp

In diesem Thema wird gezeigt, wie Sie Anthropic Claude Nachrichten API mit den grundlegenden Inferenzoperationen (InvokeModeloder InvokeModelWithResponseStream). Wir empfehlen jedoch, dass Sie Converse verwenden, API um Nachrichten in Ihrer Anwendung zu implementieren. Der Converse API bietet einen einheitlichen Satz von Parametern, die für alle Modelle funktionieren, die Nachrichten unterstützen. Weitere Informationen finden Sie unter Führen Sie ein Gespräch mit den Converse-Betrieben API.

Anthropic trainiert Claude-Modelle so, dass sie abwechselnd mit dem Benutzer und dem Assistenten kommunizieren. Wenn Sie eine neue Nachricht erstellen, geben Sie mit dem Parameter Nachrichten die vorherigen Gesprächsrunden an. Das Modell generiert dann die nächste Nachricht in der Konversation.

Jede Eingabenachricht muss ein Objekt mit einer Rolle und einem Inhalt sein. Sie können eine einzelne Benutzerrollennachricht angeben, oder Sie können mehrere Benutzer- und Assistentennachrichten einbeziehen. Die erste Nachricht muss immer die Benutzerrolle verwenden.

Wenn Sie die Technik verwenden, die Antwort vorab auszufüllen von Claude (Ausfüllen des Anfangs von Claudes Antwort mithilfe einer Nachricht in der Rolle des letzten Assistenten), Claude wird antworten, indem es dort weitermacht, wo Sie aufgehört haben. Mit dieser Technik Claude wird immer noch eine Antwort mit der Assistentenrolle zurückgeben.

Wenn für die endgültige Nachricht die Assistentenrolle verwendet wird, wird der Inhalt der Antwort sofort mit dem Inhalt dieser Nachricht fortgesetzt. Sie können dies verwenden, um einen Teil der Antwort des Modells einzuschränken.

Beispiel mit einer einzigen Benutzernachricht:

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

Beispiel mit mehreren Konversationswechseln:

[ {"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?"}, ]

Beispiel mit einer teilweise ausgefüllten Antwort von Claude:

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

Der Inhalt jeder Eingangsnachricht kann entweder eine einzelne Zeichenfolge oder ein Array von Inhaltsblöcken sein, wobei jeder Block einen bestimmten Typ hat. Die Verwendung einer Zeichenfolge ist eine Abkürzung für ein Array aus einem Inhaltsblock vom Typ „Text“. Die folgenden Eingabemeldungen sind gleichwertig:

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

Informationen zum Erstellen von Eingabeaufforderungen für Anthropic Claude Modelle finden Sie unter Einführung in die Eingabeaufforderung im Anthropic Claude -Dokumentation. Wenn Sie bereits Eingabeaufforderungen zur Textvervollständigung haben, die Sie in die Nachrichten migrieren möchtenAPI, finden Sie weitere Informationen unter Migration von Textvervollständigungen.

Systemaufforderungen

Sie können der Anfrage auch eine Systemaufforderung hinzufügen. Mit einer Systemaufforderung können Sie Kontext und Anweisungen angeben für Anthropic Claude, z. B. die Angabe eines bestimmten Ziels oder einer bestimmten Rolle. Geben Sie eine Systemaufforderung in das system Feld ein, wie im folgenden Beispiel gezeigt.

"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."

Weitere Informationen finden Sie unter Systemaufforderungen im Anthropic -Dokumentation.

Multimodale Eingabeaufforderungen

Eine multimodale Aufforderung kombiniert mehrere Modalitäten (Bilder und Text) in einer einzigen Aufforderung. Sie geben die Modalitäten im Eingabefeld ancontent. Das folgende Beispiel zeigt, wie Sie fragen könnten Anthropic Claude um den Inhalt eines bereitgestellten Bildes zu beschreiben. Beispielcode finden Sie unter Beispiele für multimodalen Code.

{ "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?" } ] } ] }
Anmerkung

Die folgenden Einschränkungen gelten für das content Feld:

  • Sie können bis zu 20 Bilder hinzufügen. Die Größe, Höhe und Breite jedes Bilds dürfen jeweils nicht mehr als 3,75 MB, 8.000 Pixel und 8.000 Pixel betragen.

  • Sie können bis zu fünf Dokumente hinzufügen. Die Größe jedes Dokuments darf nicht mehr als 4,5 MB betragen.

  • Sie können nur Bilder und Dokumente hinzufügen, wenn dies der Fall role istuser.

Jedes Bild, das Sie in eine Anfrage aufnehmen, wird auf Ihre Token-Nutzung angerechnet. Weitere Informationen finden Sie unter Kosten für Bilder in der Anthropic -Dokumentation.

Verwendung des Tools (Funktionsaufruf)

Mit Anthropic Claude Bei 3 Modellen können Sie ein Tool angeben, mit dem das Modell eine Nachricht beantworten kann. Sie könnten beispielsweise ein Tool angeben, mit dem der beliebteste Song eines Radiosenders abgerufen wird. Wenn der Benutzer die Nachricht „Welches ist das beliebteste LiedWZPZ?“ weiterleitet , stellt das Modell fest, dass das von Ihnen angegebene Tool bei der Beantwortung der Frage helfen kann. In seiner Antwort fordert das Modell Sie auf, das Werkzeug in seinem Namen auszuführen. Anschließend führen Sie das Werkzeug aus und übergeben das Werkzeugergebnis an das Modell, das dann eine Antwort für die ursprüngliche Meldung generiert. Weitere Informationen finden Sie unter Verwendung von Tools (Funktionsaufruf) in der Anthropic Claude -Dokumentation.

Tipp

Wir empfehlen Ihnen, Converse zu verwenden, API um die Verwendung von Tools in Ihre Anwendung zu integrieren. Weitere Informationen finden Sie unter Verwenden Sie ein Tool, um eine Antwort auf das Amazon Bedrock-Modell abzuschließen.

Sie geben die Werkzeuge an, die Sie einem Modell vor tools Ort zur Verfügung stellen möchten. Das folgende Beispiel bezieht sich auf ein Tool, das die beliebtesten Songs eines Radiosenders abruft.

[ { "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" ] } } ]

Wenn das Modell ein Werkzeug benötigt, um eine Antwort auf eine Nachricht zu generieren, gibt es Informationen über das angeforderte Werkzeug und die Eingabe für das Werkzeug im content Nachrichtenfeld zurück. Außerdem wird der Grund für den Stopp der Antwort auf festgelegttool_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" }

In Ihrem Code rufen Sie das Tool im Namen des Tools auf. Anschließend übergeben Sie das Tool result (tool_result) in einer Benutzermeldung an das Modell.

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

In seiner Antwort verwendet das Modell das Werkzeugergebnis, um eine Antwort für die ursprüngliche Nachricht zu generieren.

{ "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" }

Unterstützte Modelle

Sie können die Nachrichten API wie folgt verwenden Anthropic Claude Modelle.

  • 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

Anforderung und Antwort

Der Text der Anfrage wird im body Feld einer Anfrage an InvokeModeloder InvokeModelWithResponseStreamübergeben. Die maximale Größe der Nutzdaten, die Sie in einer Anfrage senden können, beträgt 20 MB.

Weitere Informationen finden Sie unter reference/messages_posthttps://docs.anthropic.com/claude/.

Request

Anthropic Claude hat die folgenden Inferenzparameter für einen Nachrichten-Inferenzaufruf.

{ "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] }

Die folgenden Parameter sind erforderlich.

  • anthropic_version — (Erforderlich) Die anthropische Version. Der Wert muss sein. bedrock-2023-05-31

  • max_tokens — (Erforderlich) Die maximale Anzahl von Token, die vor dem Stoppen generiert werden sollen.

    Beachten Sie, dass Anthropic Claude Modelle beenden möglicherweise die Generierung von Tokens, bevor sie den Wert von erreichenmax_tokens. Verschieden Anthropic Claude Modelle haben unterschiedliche Maximalwerte für diesen Parameter. Weitere Informationen finden Sie unter Modellvergleich.

  • messages — (Erforderlich) Die Eingabemeldungen.

    • Rolle — Die Rolle der Konversation. Gültige Werte sind user und assistant.

    • Inhalt — (erforderlich) Der Inhalt der Konversationsrunde.

      • type — (erforderlich) Der Typ des Inhalts. Gültige Werte sind image und text.

        Wenn Sie angebenimage, müssen Sie auch die Bildquelle im folgenden Format angeben

        source — (erforderlich) Der Inhalt der Konversation wird nacheinander angezeigt.

        • type — (erforderlich) Der Kodierungstyp für das Bild. Sie können angebenbase64.

        • media_type — (erforderlich) Der Typ des Bildes. Sie können die folgenden Bildformate angeben.

          • image/jpeg

          • image/png

          • image/webp

          • image/gif

        • data — (erforderlich) Die Base64-codierten Bildbytes für das Bild. Die maximale Bildgröße beträgt 3,75 MB. Die maximale Höhe und Breite eines Bildes beträgt 8000 Pixel.

        Wenn Sie angebentext, müssen Sie auch die Eingabeaufforderung in angebentext.

Die folgenden Parameter sind optional.

  • system — (Optional) Die Systemaufforderung für die Anforderung.

    Eine Systemaufforderung ist eine Möglichkeit, Kontext und Anweisungen bereitzustellen für Anthropic Claude, z. B. die Angabe eines bestimmten Ziels oder einer bestimmten Rolle. Weitere Informationen finden Sie unter Systemaufforderungen in der Anthropic -Dokumentation.

    Anmerkung

    Sie können Systemaufforderungen verwenden mit Anthropic Claude Version 2.1 oder höher.

  • stop_sequences — (Optional) Benutzerdefinierte Textsequenzen, die dazu führen, dass das Modell nicht mehr generiert wird. Anthropic Claude Modelle stoppen normalerweise, wenn sie ihren Zug auf natürliche Weise beendet haben. In diesem Fall ist der Wert des stop_reason Antwortfeldes. end_turn Wenn Sie möchten, dass das Modell nicht mehr generiert wird, wenn es auf benutzerdefinierte Textfolgen trifft, können Sie den stop_sequences Parameter verwenden. Wenn das Modell auf eine der benutzerdefinierten Textzeichenfolgen trifft, lautet der Wert des stop_reason Antwortfeldes stop_sequence und der Wert von stop_sequence enthält die übereinstimmende Stoppsequenz.

    Die maximale Anzahl von Einträgen beträgt 8191.

  • Temperatur — (optional) Die Menge an Zufälligkeit, die in die Antwortvariable injiziert wurde.

    Standard Minimum Maximum

    1

    0

    1

  • top_p — (Optional) Verwenden Sie die Nukleus-Sampling.

    Bei der Kernprobenentnahme Anthropic Claude berechnet die kumulative Verteilung über alle Optionen für jedes nachfolgende Token in absteigender Wahrscheinlichkeitsreihenfolge und schneidet sie ab, sobald eine bestimmte Wahrscheinlichkeit erreicht ist, die durch angegeben ist. top_p Sie sollten entweder temperature oder änderntop_p, aber nicht beide.

    Standard Minimum Maximum

    0,999

    0

    1

  • top_k — (Optional) Nur Stichproben aus den Top K-Optionen für jedes nachfolgende Token.

    Wird verwendettop_k, um Long-Tail-Antworten mit niedriger Wahrscheinlichkeit zu entfernen.

    Standard Minimum Maximum

    Standardmäßig deaktiviert

    0

    500

  • tools — (Optional) Definitionen von Tools, die das Modell verwenden kann.

    Anmerkung

    Erfordert ein Anthropic Claude Modell 3.

    Wenn Sie dies tools in Ihrer Anfrage angeben, gibt das Modell möglicherweise tool_use Inhaltsblöcke zurück, die die Verwendung dieser Tools durch das Modell darstellen. Sie können diese Werkzeuge dann mit der vom Modell generierten Werkzeugeingabe ausführen und anschließend optional die Ergebnisse mithilfe von tool_result Inhaltsblöcken an das Modell zurückgeben.

    • name — Der Name des Werkzeugs.

    • Beschreibung — (optional, aber dringend empfohlen) Die Beschreibung des Tools.

    • input_schema — Das JSON Schema für das Tool.

  • tool_choice — (Optional) Gibt an, wie das Modell die bereitgestellten Tools verwenden soll. Das Modell kann ein bestimmtes Werkzeug oder jedes verfügbare Werkzeug verwenden oder selbst entscheiden.

    Anmerkung

    Benötigt ein Anthropic Claude Modell 3.

    • Typ — Der Typ der Werkzeugauswahl. Mögliche Werte sind any (jedes verfügbare Werkzeug verwenden), auto (das Modell entscheidet) und tool (das angegebene Werkzeug verwenden).

    • name — (Optional) Der Name des zu verwendenden Tools. Erforderlich, wenn Sie dies tool in dem type Feld angeben.

Response

Das Tool Anthropic Claude model gibt die folgenden Felder für einen Nachrichten-Inferenzaufruf zurück.

{ "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 — Die eindeutige Kennung für die Antwort. Das Format und die Länge der ID können sich im Laufe der Zeit ändern.

  • Modell — Die ID für Anthropic Claude Modell, das die Anfrage gestellt hat.

  • stop_reason — Der Grund warum Anthropic Claude hat die Generierung der Antwort beendet.

    • end_turn — Das Modell hat einen natürlichen Haltepunkt erreicht

    • max_tokens — Der generierte Text hat den Wert des max_tokens Eingabefeldes oder die maximale Anzahl von Token überschritten, die das Modell unterstützt. '.

    • stop_sequence — Das Modell hat eine der Stoppsequenzen generiert, die Sie im Eingabefeld angegeben haben. stop_sequences

  • stop_sequence — Die Stoppsequenz, mit der die Generierung beendet wurde.

  • type — Die Art der Antwort. Dieser Wert ist immer message.

  • Rolle — Die Konversationsrolle der generierten Nachricht. Dieser Wert ist immer assistant.

  • Inhalt — Der vom Modell generierte Inhalt. Als Array zurückgegeben. Es gibt zwei Arten von Inhalten, text undtool_use.

    • Text — Eine Textantwort.

      • Typ — Dieser Wert isttext. Der Typ des Inhalts.

      • Text — Der Text des Inhalts.

    • tool_use — Eine Anfrage an das Modell, ein Werkzeug zu verwenden.

      • type — Dieser Wert ist text .Der Typ des Inhalts.

      • id — Die ID des Tools, dessen Verwendung das Modell anfordert.

      • input — Die Eingabeparameter, die an das Werkzeug übergeben werden sollen.

  • Verwendung — Container für die Anzahl der Token, die Sie in der Anfrage angegeben haben, und für die Anzahl der Token, die das Modell in der Antwort generiert hat.

    • input_tokens — Die Anzahl der Eingabe-Token in der Anfrage.

    • output_tokens — Die Anzahl der Tokens, die das Modell in der Antwort generiert hat.

    • stop_sequence — Das Modell hat eine der Stoppsequenzen generiert, die Sie im Eingabefeld angegeben haben. stop_sequences

Codebeispiele

Die folgenden Codebeispiele zeigen, wie die Nachrichten verwendet werden. API

Beispiel für einen Nachrichtencode

Dieses Beispiel zeigt, wie Sie eine Single-Turn-Benutzernachricht und eine Benutzerabfolge mit einer vorausgefüllten Assistentennachricht an einen senden Anthropic Claude 3 Sonnet Modell.

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

Beispiele für multimodalen Code

Die folgenden Beispiele zeigen, wie Sie ein Bild und einen Aufforderungstext in einer multimodalen Nachricht an einen übergeben Anthropic Claude 3 Sonnet Modell.

Multimodale Aufforderung mit InvokeModel

Das folgende Beispiel zeigt, wie eine multimodale Aufforderung gesendet wird an Anthropic Claude 3 Sonnet mit 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()

Multimodale Streaming-Eingabeaufforderung mit InvokeModelWithResponseStream

Das folgende Beispiel zeigt, wie die Antwort von einer multimodalen Aufforderung gestreamt wird, die an gesendet wurde Anthropic Claude 3 Sonnet mit 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()