Anthropic Claude Messages API - Amazon Bedrock

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Anthropic Claude Messages API

Cette section fournit des paramètres d'inférence et des exemples de code pour l'utilisation du Anthropic Claude Des messagesAPI.

Anthropic Claude APIVue d'ensemble des messages

Vous pouvez utiliser les messages API pour créer des robots de discussion ou des applications d'assistant virtuel. Il API gère les échanges conversationnels entre un utilisateur et un Anthropic Claude modèle (assistant).

Astuce

Cette rubrique explique comment utiliser le Anthropic Claude messages API avec les opérations d'inférence de base (InvokeModelou InvokeModelWithResponseStream). Toutefois, nous vous recommandons d'utiliser Converse APIpour implémenter des messages dans votre application. Le Converse APIfournit un ensemble unifié de paramètres qui fonctionnent sur tous les modèles prenant en charge les messages. Pour de plus amples informations, veuillez consulter Menez une conversation avec le Converse Opérations API.

Anthropic entraîne les modèles Claude à opérer en alternant les virages de conversation entre l'utilisateur et l'assistant. Lorsque vous créez un nouveau message, vous spécifiez les tournants de conversation précédents à l'aide du paramètre messages. Le modèle génère ensuite le message suivant de la conversation.

Chaque message d'entrée doit être un objet doté d'un rôle et d'un contenu. Vous pouvez spécifier un seul message de rôle d'utilisateur ou inclure plusieurs messages d'utilisateur et d'assistant. Le premier message doit toujours utiliser le rôle utilisateur.

Si vous utilisez la technique de préremplissage de la réponse de Claude (en remplissant le début de la réponse de Claude en utilisant un dernier rôle d'assistant Message), Claude répondra en reprenant là où vous vous êtes arrêté. Avec cette technique, Claude renverra toujours une réponse avec le rôle d'assistant.

Si le message final utilise le rôle d'assistant, le contenu de la réponse se poursuivra immédiatement à partir du contenu de ce message. Vous pouvez l'utiliser pour limiter une partie de la réponse du modèle.

Exemple avec un message destiné à un seul utilisateur :

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

Exemple avec plusieurs tournants de conversation :

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

Exemple avec une réponse partiellement remplie de Claude :

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

Le contenu de chaque message d'entrée peut être une chaîne unique ou un tableau de blocs de contenu, chaque bloc ayant un type spécifique. L'utilisation d'une chaîne est un raccourci pour désigner un tableau d'un bloc de contenu de type « texte ». Les messages d'entrée suivants sont équivalents :

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

Pour plus d'informations sur la création d'invites pour Anthropic Claude modèles, voir Présentation des instructions dans le Anthropic Claude . Si vous avez déjà reçu des instructions de saisie de texte que vous souhaitez migrer vers les messagesAPI, consultez la section Migration depuis la saisie de texte.

Invitations du système

Vous pouvez également inclure une invite du système dans la demande. Une invite du système vous permet de fournir le contexte et les instructions pour Anthropic Claude, par exemple en spécifiant un objectif ou un rôle en particulier. Spécifiez une invite système dans le system champ, comme indiqué dans l'exemple suivant.

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

Pour plus d'informations, consultez la section Instructions système dans le Anthropic .

Guides multimodales

Une invite multimodale combine plusieurs modalités (images et texte) dans une seule invite. Vous spécifiez les modalités dans le champ de content saisie. L'exemple suivant montre comment vous pouvez demander Anthropic Claude pour décrire le contenu d'une image fournie. Pour obtenir un exemple de code, consultez Exemples de codes multimodaux.

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

Les restrictions suivantes s'appliquent à ce content champ :

  • Vous pouvez inclure jusqu'à 20 images. La taille, la hauteur et la largeur de chaque image ne doivent pas dépasser 3,75 Mo, 8 000 pixels et 8 000 pixels, respectivement.

  • Vous pouvez inclure jusqu'à cinq documents. La taille de chaque document ne doit pas dépasser 4,5 Mo.

  • Vous ne pouvez inclure des images et des documents que si role c'est le casuser.

Chaque image que vous incluez dans une demande est prise en compte dans l'utilisation de votre jeton. Pour plus d'informations, consultez la section Coûts des images dans le Anthropic .

Utilisation de l'outil (appel de fonctions)

Avec Anthropic Claude 3 modèles, vous pouvez spécifier un outil que le modèle peut utiliser pour répondre à un message. Par exemple, vous pouvez spécifier un outil qui capte la chanson la plus populaire d'une station de radio. Si l'utilisateur transmet le message Quelle est la chanson la plus populaire WZPZ ? , le modèle détermine que l'outil que vous avez spécifié peut aider à répondre à la question. Dans sa réponse, le modèle vous demande d'exécuter l'outil en son nom. Vous exécutez ensuite l'outil et transmettez le résultat de l'outil au modèle, qui génère ensuite une réponse pour le message d'origine. Pour plus d'informations, voir Utilisation de l'outil (appel de fonctions) dans le Anthropic Claude .

Astuce

Nous vous recommandons d'utiliser Converse APIpour intégrer l'utilisation d'outils dans votre application. Pour de plus amples informations, veuillez consulter Utiliser un outil pour compléter une réponse du modèle Amazon Bedrock.

Vous spécifiez les outils que vous souhaitez mettre à la disposition d'un modèle tools sur le terrain. L'exemple suivant concerne un outil qui permet d'obtenir les chansons les plus populaires d'une station de radio.

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

Lorsque le modèle a besoin d'un outil pour générer une réponse à un message, il renvoie des informations sur l'outil demandé, ainsi que l'entrée de l'outil, dans le content champ du message. Il définit également le motif d'arrêt de la réponse à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" }

Dans votre code, vous appelez l'outil au nom de l'outil. Vous transmettez ensuite le résultat de l'outil (tool_result) dans un message utilisateur au modèle.

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

Dans sa réponse, le modèle utilise le résultat de l'outil pour générer une réponse pour le message d'origine.

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

Utilisation de l'ordinateur (version bêta)

L'utilisation de l'ordinateur est une nouveauté Anthropic Claude capacité du modèle (en version bêta) disponible avec Claude 3.5 Sonnet v2 uniquement. Avec l'utilisation d'un ordinateur, Claude peut vous aider à automatiser les tâches par le biais d'GUIactions de base.

Avertissement

La fonctionnalité d'utilisation de l'ordinateur est mise à votre disposition sous la forme d'un « service bêta » tel que défini dans les conditions de AWS service. Il est soumis à votre accord AWS et aux conditions de AWS service, ainsi qu'au modèle applicableEULA. Sachez que l'utilisation de l'ordinateur API présente des risques uniques qui sont distincts des API fonctionnalités standard ou des interfaces de chat. Ces risques sont accrus lors de l'utilisation API de l'ordinateur pour interagir avec Internet. Pour minimiser les risques, pensez à prendre des précautions telles que :

  • Exploitez les fonctionnalités d'utilisation de l'ordinateur dans une machine virtuelle ou un conteneur dédié avec des privilèges minimaux afin de prévenir les attaques directes ou les accidents du système.

  • Pour éviter le vol d'informations, évitez de donner à l'utilisateur de l'ordinateur API l'accès à des comptes ou à des données sensibles.

  • Limiter l'accès Internet API de l'utilisateur de l'ordinateur aux domaines requis afin de réduire l'exposition au contenu malveillant.

  • Pour garantir une supervision adéquate, tenez un humain au courant des tâches sensibles (telles que la prise de décisions susceptibles d'avoir des conséquences importantes dans le monde réel) et de tout ce qui nécessite un consentement affirmatif (comme l'acceptation de cookies, l'exécution de transactions financières ou l'acceptation des conditions d'utilisation).

Tout contenu que vous activez Claude le fait de voir ou d'accéder peut potentiellement annuler les instructions ou provoquer Claude pour commettre des erreurs ou effectuer des actions involontaires. Prendre les précautions appropriées, telles que l'isolation Claude sur des surfaces sensibles, est essentiel, notamment pour éviter les risques liés à une injection rapide. Avant d'activer ou de demander les autorisations nécessaires pour activer les fonctionnalités d'utilisation de l'ordinateur dans vos propres produits, veuillez informer les utilisateurs finaux de tout risque pertinent et obtenir leur consentement le cas échéant.

L'utilisation de l'ordinateur API propose plusieurs outils informatiques prédéfinis (computer_20241022, bash_20241022 et text_editor_20241022) que vous pouvez utiliser. Vous pouvez ensuite créer une invite avec votre demande, telle que « envoyer un e-mail à Ben avec les notes de ma dernière réunion » et une capture d'écran (si nécessaire). La réponse contient une liste d'tool_useactions au JSON format (par exemple, scroll_down, left_button_press, capture d'écran). Votre code exécute les actions de l'ordinateur et fournit Claude avec capture d'écran présentant les sorties (sur demande).

Le paramètre tools a été mis à jour pour accepter les types d'outils polymorphes ; une nouvelle tool.type propriété est ajoutée pour les distinguer. typeest facultatif ; s'il est omis, l'outil est supposé être un outil personnalisé (auparavant le seul type d'outil pris en charge). De plus, un nouveau paramètreanthropic_beta, a été ajouté, avec une valeur d'énumération correspondante :computer-use-2024-10-22. Seules les requêtes effectuées avec ce paramètre et enum peuvent utiliser les nouveaux outils d'utilisation de l'ordinateur. Il peut être spécifié comme suit :"anthropic_beta": ["computer-use-2024-10-22"].

Pour plus d'informations, voir Utilisation de l'ordinateur (version bêta) dans le Anthropic .

Voici un exemple de réponse qui suppose que la demande contient une capture d'écran de votre bureau avec une icône 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 } }

Modèles pris en charge

Vous pouvez utiliser les messages API avec les éléments suivants Anthropic Claude modèles.

  • Anthropic Claude Instant v1.2

  • Anthropic Claude 2 contre 2

  • 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

Demande et réponse

Le corps de la demande est transmis dans le body champ d'une demande à InvokeModelou InvokeModelWithResponseStream. La taille maximale de la charge utile que vous pouvez envoyer dans une demande est de 20 Mo.

Pour plus d'informations, consultez https://docs.anthropic.com/claude/reference/messages_post.

Request

Anthropic Claude possède les paramètres d'inférence suivants pour un appel d'inférence de messages.

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

Les paramètres suivants sont obligatoires.

  • anthropic_version — (Obligatoire) La version anthropique. La valeur doit êtrebedrock-2023-05-31.

  • anthropic_beta — (Obligatoire, si vous utilisez l'ordinateurAPI) La version bêta anthropique à utiliser. Pour utiliser l'ordinateurAPI, la valeur doit êtrecomputer-use-2024-10-22.

  • max_tokens — (Obligatoire) Le nombre maximum de jetons à générer avant l'arrêt.

    Notez que Anthropic Claude les modèles peuvent arrêter de générer des jetons avant d'atteindre la valeur demax_tokens. Différent Anthropic Claude les modèles ont des valeurs maximales différentes pour ce paramètre. Pour plus d'informations, consultez la section Comparaison des modèles.

  • messages — (Obligatoire) Les messages d'entrée.

    • rôle — Le rôle du tour de conversation. Les valeurs valides sont user et assistant.

    • contenu — (obligatoire) Le contenu de la conversation change.

      • type — (obligatoire) Type de contenu. Les valeurs valides sont image et text.

        Si vous le spécifiezimage, vous devez également spécifier la source de l'image au format suivant

        source — (obligatoire) Le contenu de la conversation change.

        • type — (obligatoire) Type de codage de l'image. Vous pouvez le spécifierbase64.

        • media_type — (obligatoire) Le type de l'image. Vous pouvez définir les formats d'image suivants.

          • image/jpeg

          • image/png

          • image/webp

          • image/gif

        • data — (obligatoire) Les octets de l'image codés en base64 pour l'image. La taille maximale de l'image est de 3,75 Mo. La hauteur et la largeur maximales d'une image sont de 8 000 pixels.

        Si vous le spécifieztext, vous devez également spécifier l'invite danstext.

Les paramètres suivants sont facultatifs.

  • system — (Facultatif) L'invite du système à saisir la demande.

    Une invite du système est un moyen de fournir du contexte et des instructions à Anthropic Claude, par exemple en spécifiant un objectif ou un rôle en particulier. Pour plus d'informations, consultez la section Instructions système dans le Anthropic .

    Note

    Vous pouvez utiliser les instructions du système avec Anthropic Claude version 2.1 ou supérieure.

  • stop_sequences — (Facultatif) Séquences de texte personnalisées qui empêchent la génération du modèle. Anthropic Claude les modèles s'arrêtent normalement lorsqu'ils ont naturellement terminé leur tour, dans ce cas, la valeur du champ de stop_reason réponse estend_turn. Si vous souhaitez que le modèle cesse de générer lorsqu'il rencontre des chaînes de texte personnalisées, vous pouvez utiliser le stop_sequences paramètre. Si le modèle rencontre l'une des chaînes de texte personnalisées, la valeur du champ de stop_reason réponse est stop_sequence et la valeur de stop_sequence contient la séquence d'arrêt correspondante.

    Le nombre maximum d'entrées est de 8191.

  • température — (Facultatif) La quantité de caractère aléatoire injectée dans la réponse.

    Par défaut Minimum Maximum

    1

    0

    1

  • top_p — (Facultatif) Utilisez l'échantillonnage du noyau.

    Lors de l'échantillonnage du noyau, Anthropic Claude calcule la distribution cumulée de toutes les options pour chaque jeton suivant par ordre de probabilité décroissant et la coupe une fois qu'il atteint une probabilité particulière spécifiée partop_p. Vous devez modifier l'un temperature ou l'autretop_p, mais pas les deux.

    Par défaut Minimum Maximum

    0,999

    0

    1

  • top_k — (Facultatif) Échantillonnez uniquement les K meilleures options pour chaque jeton suivant.

    top_kÀ utiliser pour supprimer les réponses à faible probabilité à longue queue.

    Par défaut Minimum Maximum

    Désactivé par défaut

    0

    500

  • outils — (Facultatif) Définitions des outils que le modèle peut utiliser.

    Note

    Nécessite un Anthropic Claude Modèle 3.

    Si vous l'incluez tools dans votre demande, le modèle peut renvoyer des blocs de tool_use contenu représentant l'utilisation de ces outils par le modèle. Vous pouvez ensuite exécuter ces outils à l'aide de l'entrée d'outil générée par le modèle, puis éventuellement renvoyer les résultats au modèle à l'aide de blocs de tool_result contenu.

    Vous pouvez transmettre les types d'outils suivants :

    Personnalisé

    Définition d'un outil personnalisé.

    • type (facultatif) : type de l'outil. Si elle est définie, utilisez la valeurcustom.

    • name — Le nom de l'outil.

    • description — (facultatif, mais fortement recommandé) Description de l'outil.

    • input_schema — JSON Schéma de l'outil.

    Ordinateur

    Définition de l'outil informatique que vous utilisez avec l'ordinateurAPI.

    • type — La valeur doit êtrecomputer_20241022.

    • name — La valeur doit êtrecomputer.

    • (Obligatoire) display_height_px — Hauteur de l'écran contrôlée par le modèle, en pixels.

      Par défaut Minimum Maximum

      Aucun

      1

      Pas de maximum

    • (Obligatoire) display_width_px — Largeur de l'affichage contrôlée par le modèle, en pixels.

      Par défaut Minimum Maximum

      Aucun

      1

      Pas de maximum

    • (Facultatif) display_number — Le numéro d'affichage à contrôler (pertinent uniquement pour les environnements X11). Si cela est spécifié, un numéro d'affichage sera fourni à l'outil dans la définition de l'outil.

      Par défaut Minimum Maximum

      Aucun

      0

      N

    bash

    Définition de l'outil bash que vous utilisez avec l'ordinateur. API

    • type (facultatif) — La valeur doit êtrebash_20241022.

    • nom — La valeur doit êtrebash. l'outil.

    éditeur de texte

    Définition de l'outil d'édition de texte que vous utilisez avec l'ordinateurAPI.

    • type (facultatif) — La valeur doit êtretext_editor_20241022.

    • nom — La valeur doit êtrestr_replace_editor. l'outil.

  • tool_choice — (Facultatif) Spécifie comment le modèle doit utiliser les outils fournis. Le modèle peut utiliser un outil spécifique, n'importe quel outil disponible, ou décider par lui-même.

    Note

    Nécessite un Anthropic Claude Modèle 3.

    • type — Le type d'outil choisi. Les valeurs possibles sont any (utiliser n'importe quel outil disponible), auto (le modèle décide) et tool (utiliser l'outil spécifié).

    • name — (Facultatif) Le nom de l'outil à utiliser. Obligatoire si vous le spécifiez tool dans le type champ.

Response

Le Anthropic Claude le modèle renvoie les champs suivants pour un appel d'inférence de messages.

{ "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 — L'identifiant unique de la réponse. Le format et la longueur de l'identifiant peuvent changer au fil du temps.

  • model — L'ID du Anthropic Claude modèle à l'origine de la demande.

  • stop_reason — La raison pour laquelle Anthropic Claude a arrêté de générer la réponse.

    • end_turn — Le modèle a atteint un point d'arrêt naturel

    • max_tokens — Le texte généré a dépassé la valeur du champ de max_tokens saisie ou a dépassé le nombre maximum de jetons pris en charge par le modèle. '.

    • stop_sequence — Le modèle a généré l'une des séquences d'arrêt que vous avez spécifiées dans le champ de stop_sequences saisie.

  • stop_sequence — La séquence d'arrêt qui a mis fin à la génération.

  • type — Type de réponse. La valeur est toujours message.

  • role — Le rôle conversationnel du message généré. La valeur est toujours assistant.

  • content — Le contenu généré par le modèle. Renvoyé sous forme de tableau. Il existe deux types de contenu, text ettool_use.

    • text — Une réponse textuelle.

      • type — Cette valeur esttext. Type de contenu.

      • text — Le texte du contenu.

    • tool_use — Demande envoyée par le modèle pour utiliser un outil.

      • type — Cette valeur est text .Le type du contenu.

      • id — L'ID de l'outil dont le modèle demande l'utilisation.

      • input — Les paramètres d'entrée à transmettre à l'outil.

  • usage — Conteneur contenant le nombre de jetons que vous avez fournis dans la demande et le nombre de jetons générés par le modèle dans la réponse.

    • input_tokens — Le nombre de jetons d'entrée contenus dans la demande.

    • output_tokens — Le nombre de jetons générés par le modèle dans la réponse.

    • stop_sequence — Le modèle a généré l'une des séquences d'arrêt que vous avez spécifiées dans le champ de stop_sequences saisie.

Exemples de code

Les exemples de code suivants montrent comment utiliser les messagesAPI.

Exemple de code de messages

Cet exemple montre comment envoyer un message d'utilisateur à tour unique et un message d'assistant prérempli à un Anthropic Claude 3 Sonnet modèle.

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

Exemples de codes multimodaux

Les exemples suivants montrent comment transmettre une image et un texte d'invite dans un message multimodal à un Anthropic Claude 3 Sonnet modèle.

Invite multimodale avec InvokeModel

L'exemple suivant montre comment envoyer une invite multimodale à Anthropic Claude 3 Sonnet avec 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()

Diffusion d'une invite multimodale avec InvokeModelWithResponseStream

L'exemple suivant montre comment diffuser la réponse à partir d'une invite multimodale envoyée à Anthropic Claude 3 Sonnet avec 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()