AnthropicClaudeAPI de messages - 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.

AnthropicClaudeAPI de messages

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

AnthropicClaudePrésentation de l'API Messages

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

Anthropicentraî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 qui consiste à préremplir le formulaire de réponse Claude (en remplissant le début de la réponse de Claude en utilisant un dernier rôle d'assistant, Message), vous Claude répondrez en reprenant là où vous vous êtes arrêté. Avec cette technique, il 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 les Anthropic Claude modèles, consultez la section Présentation des invites dans la documentation. Anthropic Claude Si vous avez déjà reçu des instructions de saisie de texte que vous souhaitez migrer vers l'API des messages, consultez la section Migration depuis la saisie de texte.

Invites du système

Vous pouvez également inclure une invite du système dans la demande. Une invite système vous permet de fournir du contexte et des instructions AnthropicClaude, 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 la Anthropic documentation.

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 demander Anthropic Claude à 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?" } ] } ] }

Vous pouvez fournir jusqu'à 20 images au modèle. Vous ne pouvez pas ajouter d'images dans le rôle d'assistant.

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 la Anthropic documentation.

Modèles pris en charge

Vous pouvez utiliser l'API Messages avec les Anthropic Claude modèles suivants.

  • AnthropicClaudeInstantv1.2

  • AnthropicClaude2 contre 2

  • AnthropicClaude2 v2.1

  • Anthropic Claude 3 Sonnet

  • 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

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

{ "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, "stop_sequences": [string] }

Les paramètres suivants sont obligatoires.

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

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

    Notez que les Anthropic Claude modèles peuvent arrêter de générer des jetons avant d'atteindre la valeur demax_tokens. AnthropicClaudeLes différents 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 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 système est un moyen de fournir du contexte et des instructions AnthropicClaude, par exemple en spécifiant un objectif ou un rôle particulier. Pour plus d'informations, consultez la section Comment utiliser les instructions du système dans la Anthropic documentation.

    Note

    Vous pouvez utiliser les instructions du système avec Anthropic Claude la 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. AnthropicClaudeles 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'elle 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

Les paramètres suivants sont facultatifs.

  • 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

Response

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

{ "id": string, "model": string, "type" : "message", "role" : "assistant", "content": [ { "type": "text", "text": string } ], "stop_reason": string, "stop_sequence": string, "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 la génération de la Anthropic Claude réponse a été interrompue.

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

    • max_tokens — Le texte généré dépassait la valeur du champ de max_tokens saisie ou 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.

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

    • type : type de contenu. Actuellement, la seule valeur prise en charge est text.

    • text — Le texte du contenu.

  • 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 l'API de messages.

Exemple de code de messages

Cet exemple montre comment envoyer un message 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 with 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 with 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()