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.
Rubriques
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
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
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
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
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.
Rubriques
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()