AnthropicClaudeAPI Messaggi - Amazon Bedrock

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

AnthropicClaudeAPI Messaggi

Questa sezione fornisce parametri di inferenza ed esempi di codice per l'utilizzo dell'API Anthropic Claude Messages.

AnthropicClaudePanoramica dell'API Messages

Puoi utilizzare l'API Messages per creare chat bot o applicazioni di assistenza virtuale. L'API gestisce gli scambi conversazionali tra un utente e un Anthropic Claude modello (assistente).

Anthropicaddestra i modelli di 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 stai usando la tecnica di precompilare la risposta da Claude (inserendo l'inizio della risposta di Claude usando il ruolo di assistente finale Message), Claude risponderà 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 limitare 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 i Anthropic Claude modelli, vedere Introduzione ai prompt nella documentazione. Anthropic Claude Se hai già dei prompt di completamento del testo che desideri migrare all'API dei messaggi, consulta Migrazione da Text Completions.

Richieste di sistema

È inoltre possibile includere un prompt di sistema nella richiesta. Un prompt di sistema consente di fornire contesto e istruzioni AnthropicClaude, ad esempio per 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 nella documentazione. Anthropic

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 si potrebbe chiedere Anthropic Claude di 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?" } ] } ] }

È possibile fornire fino a 20 immagini al modello. Non puoi inserire immagini nel ruolo di assistente.

Ogni immagine che includi in una richiesta viene conteggiata ai fini dell'utilizzo del token. Per ulteriori informazioni, consulta la sezione Costi delle immagini nella Anthropic documentazione.

Modelli supportati

Puoi utilizzare l'API Messages con i seguenti Anthropic Claude modelli.

  • AnthropicClaudeInstantv1.2

  • AnthropicClaude2 v2

  • AnthropicClaude2 v 2.1

  • Anthropic Claude 3 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.

Request

AnthropicClaudeha i seguenti parametri di inferenza per una chiamata di inferenza dei messaggi.

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

I seguenti sono parametri obbligatori.

  • anthropic_version — (Obbligatorio) La versione antropica. Il valore deve essere. bedrock-2023-05-31

  • max_tokens — (Obbligatorio) Il numero massimo di token da generare prima dell'interruzione.

    Nota che Anthropic Claude i modelli potrebbero interrompere la generazione di token prima di raggiungere il valore di. max_tokens AnthropicClaudeModelli diversi hanno valori massimi diversi per questo parametro. Per ulteriori informazioni, consultate Confronto tra modelli.

  • messaggi — (Obbligatorio) I messaggi di input.

    • role — Il ruolo del turno di conversazione. I valori validi sono user e assistant.

    • content — (obbligatorio) Il contenuto del turno di conversazione.

      • tipo — (obbligatorio) Il tipo di contenuto. I valori validi sono image e text.

        Se si specificaimage, è necessario specificare anche l'origine dell'immagine nel seguente formato

        source — (obbligatorio) Il contenuto del turno di conversazione.

        • type — (obbligatorio) Il tipo di codifica dell'immagine. È possibile specificarebase64.

        • media_type — (obbligatorio) Il tipo di immagine. È possibile specificare i seguenti formati di immagine.

          • image/jpeg

          • image/png

          • image/webp

          • image/gif

        • data — (obbligatorio) I byte dell'immagine codificati in base64. La dimensione massima dell'immagine è 3,75 MB. L'altezza e la larghezza massime di un'immagine sono 8000 pixel.

        Se si specificatext, è necessario specificare anche il prompt in. text

I seguenti sono parametri opzionali.

  • system — (Facoltativo) Il prompt di sistema per la richiesta.

    Un prompt di sistema è un modo per fornire contesto e istruzioni AnthropicClaude, ad esempio per specificare un obiettivo o un ruolo particolare. Per ulteriori informazioni, consulta Come usare i prompt di sistema nella documentazione. Anthropic

    Nota

    È possibile utilizzare i prompt di sistema con la Anthropic Claude versione 2.1 o successiva.

  • stop_sequences — (Facoltativo) Sequenze di testo personalizzate che causano l'interruzione della generazione del modello. AnthropicClaudei modelli normalmente si fermano quando hanno naturalmente completato il loro turno, in questo caso il valore del campo di risposta èstop_reason. end_turn Se volete che il modello smetta di generare quando incontra stringhe di testo personalizzate, potete usare il parametro. stop_sequences Se il modello incontra una delle stringhe di testo personalizzate, il valore del campo di stop_reason risposta è stop_sequence e il valore di contiene la sequenza di stop_sequence interruzioni corrispondente.

    Il numero massimo di voci è 8191.

  • temperatura — (Facoltativo) La quantità di casualità iniettata nella risposta.

    Predefinita Minimo Massimo

    1

    0

    1

  • top_p — (Facoltativo) Usa il campionamento del nucleo.

    Nel campionamento del nucleo, Anthropic Claude calcola la distribuzione cumulativa su tutte le opzioni per ogni token successivo in ordine di probabilità decrescente e la interrompe una volta raggiunta una particolare probabilità specificata da. top_p È necessario modificare uno dei due, ma non entrambi. temperature top_p

    Predefinita Minimo Massimo

    0,999

    0

    1

I seguenti sono parametri opzionali.

  • top_k — (Facoltativo) Campiona solo le prime K opzioni per ogni token successivo.

    Utilizza top_k per rimuovere le risposte a bassa probabilità a coda lunga.

    Predefinita Minimo Massimo

    Disabilitato per impostazione predefinita

    0

    500

Response

Il Anthropic Claude modello restituisce i seguenti campi per una chiamata di inferenza dei messaggi.

{ "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'identificatore univoco per la risposta. Il formato e la lunghezza dell'ID potrebbero cambiare nel tempo.

  • model: l'ID del Anthropic Claude modello che ha effettuato la richiesta.

  • stop_reason — Il motivo per cui Anthropic Claude ha smesso di generare la risposta.

    • end_turn — Il modello ha raggiunto un punto di arresto naturale

    • max_tokens — Il testo generato ha superato il valore del campo di max_tokens input o ha superato il numero massimo di token supportati dal modello. '.

    • stop_sequence — Il modello ha generato una delle sequenze di stop specificate nel campo di input. stop_sequences

  • type — Il tipo di risposta. Il valore è sempre message.

  • role — Il ruolo conversazionale del messaggio generato. Il valore è sempre assistant.

  • content: il contenuto generato dal modello. Restituito come matrice.

    • type — Il tipo di contenuto. Attualmente, l'unico valore supportato è text.

    • text: il testo del contenuto.

  • usage: contenitore per il numero di token forniti nella richiesta e il numero di token generati dal modello nella risposta.

    • input_tokens — Il numero di token di input nella richiesta.

    • output_tokens — Il numero di token generati dal modello nella risposta.

    • stop_sequence — Il modello ha generato una delle sequenze di stop specificate nel campo di input. stop_sequences

Esempi di codice

I seguenti esempi di codice mostrano come utilizzare l'API dei messaggi.

Esempio di codice Messages

Questo esempio mostra come inviare un messaggio utente a turno singolo e un messaggio di assistente precompilato a un turno utente 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 modello. Anthropic Claude 3 Sonnet

Richiesta multimodale con InvokeModel

L'esempio seguente mostra come inviare un prompt multimodale a with. Anthropic Claude 3 Sonnet 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()

Streaming di prompt multimodale con InvokeModelWithResponseStream

L'esempio seguente mostra come trasmettere in streaming la risposta da un prompt multimodale inviato a with. Anthropic Claude 3 Sonnet 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()