Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Anthropic Claude Messaggi API
Questa sezione fornisce parametri di inferenza ed esempi di codice per l'utilizzo di Anthropic Claude MessaggiAPI.
Argomenti
Anthropic Claude APIPanoramica dei messaggi
Puoi utilizzare i Messaggi API per creare chat bot o applicazioni di assistenza virtuale. APIGestisce gli scambi conversazionali tra un utente e un Anthropic Claude modello (assistente).
Suggerimento
In questo argomento viene illustrato come utilizzare Anthropic Claude messaggi API con le operazioni di inferenza di base (InvokeModelo InvokeModelWithResponseStream). Tuttavia, ti consigliamo di utilizzare Converse API per implementare i messaggi nella tua applicazione. Converse API fornisce un set unificato di parametri che funzionano su tutti i modelli che supportano i messaggi. Per ulteriori informazioni, consulta Effettua una conversazione con le operazioni di Converse API.
Anthropic addestra i modelli Claude a operare alternando turni di conversazione tra utente e assistente. Quando si crea un nuovo messaggio, si specificano i turni di conversazione precedenti con il parametro messages. Il modello genera quindi il messaggio successivo nella conversazione.
Ogni messaggio di input deve essere un oggetto con un ruolo e un contenuto. È possibile specificare un singolo messaggio relativo al ruolo utente oppure includere più messaggi utente e assistente. Il primo messaggio deve sempre utilizzare il ruolo utente.
Se si utilizza la tecnica di precompilazione della risposta da Claude (compilando l'inizio della risposta di Claude usando un messaggio finale nel ruolo di assistente), Claude risponderai riprendendo da dove avevi interrotto. Con questa tecnica, Claude restituirà comunque una risposta con il ruolo di assistente.
Se il messaggio finale utilizza il ruolo di assistente, il contenuto della risposta riprenderà immediatamente dal contenuto di quel messaggio. Puoi usarlo per vincolare parte della risposta del modello.
Esempio con un singolo messaggio utente:
[{"role": "user", "content": "Hello, Claude"}]
Esempio con turni di conversazione multipli:
[ {"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?"}, ]
Esempio con una risposta parzialmente compilata di Claude:
[ {"role": "user", "content": "Please describe yourself using only JSON"}, {"role": "assistant", "content": "Here is my JSON description:\n{"}, ]
Il contenuto di ogni messaggio di input può essere una singola stringa o una matrice di blocchi di contenuto, in cui ogni blocco ha un tipo specifico. L'uso di una stringa è l'abbreviazione di un array di un blocco di contenuto di tipo «testo». I seguenti messaggi di input sono equivalenti:
{"role": "user", "content": "Hello, Claude"}
{"role": "user", "content": [{"type": "text", "text": "Hello, Claude"}]}
Per informazioni sulla creazione di prompt per Anthropic Claude modelli, vedete Introduzione ai prompt in
Richieste di sistema
È inoltre possibile includere un prompt di sistema nella richiesta. Un prompt di sistema consente di fornire contesto e istruzioni per Anthropic Claude, ad esempio specificare un obiettivo o un ruolo particolare. Specificate un prompt di sistema nel system
campo, come illustrato nell'esempio seguente.
"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."
Per ulteriori informazioni, vedete le istruzioni di sistema nel
Istruzioni multimodali
Un prompt multimodale combina più modalità (immagini e testo) in un unico prompt. Le modalità vengono specificate nel campo di immissione. content
L'esempio seguente mostra come puoi chiedere Anthropic Claude per descrivere il contenuto di un'immagine fornita. Per il codice di esempio, consulta Esempi di codice multimodale.
{ "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?" } ] } ] }
Nota
Le seguenti restrizioni riguardano il content
campo:
-
Puoi includere fino a 20 immagini. Le dimensioni, l'altezza e la larghezza di ogni immagine non devono superare rispettivamente 3,75 MB, 8.000 px e 8.000 px.
-
Puoi includere fino a cinque documenti. Le dimensioni di ogni documento non devono superare i 4,5 MB.
-
Puoi includere immagini e documenti solo se lo
role
èuser
.
Ogni immagine inclusa in una richiesta viene conteggiata ai fini dell'utilizzo del token. Per ulteriori informazioni, consulta la sezione Costi delle immagini
Utilizzo dello strumento (chiamata di una funzione)
Con Anthropic Claude 3 modelli, è possibile specificare uno strumento che il modello può utilizzare per rispondere a un messaggio. Ad esempio, è possibile specificare uno strumento che riproduca la canzone più popolare su una stazione radio. Se l'utente trasmette il messaggio Qual è la canzone più popolare in ondaWZPZ? , il modello determina che lo strumento specificato può aiutare a rispondere alla domanda. Nella sua risposta, il modello richiede l'esecuzione dello strumento per suo conto. Quindi eseguite lo strumento e passate il risultato dell'utensile al modello, che a sua volta genera una risposta per il messaggio originale. Per ulteriori informazioni, vedete Uso dello strumento (chiamata di funzioni)
Suggerimento
Ti consigliamo di utilizzare Converse API per integrare l'uso dello strumento nella tua applicazione. Per ulteriori informazioni, consulta Usa uno strumento per completare una risposta al modello Amazon Bedrock.
Specificate sul campo gli strumenti che desiderate mettere a disposizione di un modello. tools
L'esempio seguente riguarda uno strumento che riceve le canzoni più popolari su una stazione 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" ] } } ]
Quando il modello necessita di uno strumento per generare una risposta a un messaggio, restituisce le informazioni sullo strumento richiesto e l'input dello strumento nel content
campo del messaggio. Imposta inoltre il motivo dell'interruzione della risposta atool_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" }
Nel codice, si chiama lo strumento per conto degli strumenti. Quindi passate lo strumento result (tool_result
) in un messaggio utente al modello.
{ "role": "user", "content": [ { "type": "tool_result", "tool_use_id": "toolu_bdrk_01SnXQc6YVWD8Dom5jz7KhHy", "content": "Elemental Hotel" } ] }
Nella sua risposta, il modello utilizza il risultato dello strumento per generare una risposta per il messaggio originale.
{ "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" }
Modelli supportati
Puoi usare i Messaggi API con quanto segue Anthropic Claude modelli.
Anthropic Claude Instant v1.2
Anthropic Claude 2 v2
Anthropic Claude 2 v 2.1
Anthropic Claude 3 Sonnet
Anthropic Claude 3.5 Sonnet
Anthropic Claude 3 Haiku
Anthropic Claude 3 Opus
Richiesta e risposta
Il corpo della richiesta viene passato nel body
campo di una richiesta a InvokeModelo InvokeModelWithResponseStream. La dimensione massima del payload che puoi inviare in una richiesta è di 20 MB.
Per ulteriori informazioni, consulta https://docs.anthropic.com/claude/ reference/messages_post.
Esempi di codice
I seguenti esempi di codice mostrano come utilizzare i messaggi. API
Esempio di codice Messages
Questo esempio mostra come inviare un messaggio utente a turno singolo e un utente a turno con un messaggio di assistente precompilato a un Anthropic Claude 3 Sonnet modello.
# 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()
Esempi di codice multimodale
Gli esempi seguenti mostrano come passare un'immagine e richiedere il testo in un messaggio multimodale a un Anthropic Claude 3 Sonnet modello.
Argomenti
Richiesta multimodale con InvokeModel
L'esempio seguente mostra come inviare un prompt multimodale a Anthropic Claude 3 Sonnet con. 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()
Richiesta multimodale in streaming con InvokeModelWithResponseStream
L'esempio seguente mostra come trasmettere in streaming la risposta da un prompt multimodale inviato a Anthropic Claude 3 Sonnet InvokeModelWithResponseStreamcon.
# 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()