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.
Rubriques
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
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
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
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)
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_use
actions 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. type
est 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)
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
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.
Rubriques
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()