AnthropicClaudeAPI de mensagens - Amazon Bedrock

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

AnthropicClaudeAPI de mensagens

Esta seção fornece parâmetros de inferência e exemplos de código para usar a API de Anthropic Claude mensagens.

AnthropicClaudeVisão geral da API de mensagens

Você pode usar a API de mensagens para criar bots de bate-papo ou aplicativos de assistente virtual. A API gerencia as trocas conversacionais entre um usuário e um Anthropic Claude modelo (assistente).

Anthropictreina os modelos Claude para operar em turnos alternados de conversação do usuário e do assistente. Ao criar uma nova mensagem, você especifica os turnos conversacionais anteriores com o parâmetro messages. O modelo então gera a próxima mensagem na conversa.

Cada mensagem de entrada deve ser um objeto com uma função e um conteúdo. Você pode especificar uma única mensagem de função de usuário ou incluir várias mensagens de usuário e assistente. A primeira mensagem deve sempre usar a função de usuário.

Se você estiver usando a técnica de pré-preencher o formulário de resposta Claude (preenchendo o início da resposta de Claude usando a função de assistente final, Mensagem), Claude responderá retomando de onde parou. Com essa técnica, Claude ainda retornará uma resposta com a função de assistente.

Se a mensagem final usar a função de assistente, o conteúdo da resposta continuará imediatamente a partir do conteúdo dessa mensagem. Você pode usar isso para restringir parte da resposta do modelo.

Exemplo com uma única mensagem de usuário:

[{"role": "user", "content": "Hello, Claude"}]

Exemplo com vários turnos de conversação:

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

Exemplo com uma resposta parcialmente preenchida de Claude:

[ {"role": "user", "content": "Please describe yourself using only JSON"}, {"role": "assistant", "content": "Here is my JSON description:\n{"}, ]

O conteúdo de cada mensagem de entrada pode ser uma única sequência de caracteres ou uma matriz de blocos de conteúdo, em que cada bloco tem um tipo específico. Usar uma string é uma abreviatura para uma matriz de um bloco de conteúdo do tipo “texto”. As seguintes mensagens de entrada são equivalentes:

{"role": "user", "content": "Hello, Claude"}
{"role": "user", "content": [{"type": "text", "text": "Hello, Claude"}]}

Para obter informações sobre a criação de solicitações para Anthropic Claude modelos, consulte Introdução à solicitação na documentação. Anthropic Claude Se você tiver solicitações de preenchimento de texto existentes que deseja migrar para a API de mensagens, consulte Migração de preenchimentos de texto.

Solicitações do sistema

Você também pode incluir um prompt do sistema na solicitação. Um prompt do sistema permite que você forneça contexto e instruções para AnthropicClaude, como especificar uma meta ou função específica. Especifique um prompt do sistema no system campo, conforme mostrado no exemplo a seguir.

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

Para obter mais informações, consulte Solicitações do sistema na Anthropic documentação.

Solicitações multimodais

Um prompt multimodal combina várias modalidades (imagens e texto) em um único prompt. Você especifica as modalidades no campo content de entrada. O exemplo a seguir mostra como você pode pedir Anthropic Claude para descrever o conteúdo de uma imagem fornecida. Para ver um código demonstrativo, consulte Exemplos de código multimodal.

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

Você pode fornecer até 20 imagens para o modelo. Você não pode colocar imagens na função de assistente.

Cada imagem que você inclui em uma solicitação conta para o uso do token. Para obter mais informações, consulte Custos de imagem na Anthropic documentação.

Modelos compatíveis

Você pode usar a API de mensagens com os seguintes Anthropic Claude modelos.

  • AnthropicClaudeInstantv1.2

  • AnthropicClaude2 v2

  • AnthropicClaude2 v2.1

  • Anthropic Claude 3 Sonnet

  • Anthropic Claude 3 Haiku

  • Anthropic Claude 3 Opus

Solicitação e reposta

O corpo da solicitação é passado no body campo de uma solicitação para InvokeModelou InvokeModelWithResponseStream. O tamanho máximo da carga útil que você pode enviar em uma solicitação é de 20 MB.

Para obter mais informações, consulte https://docs.anthropic.com/claude/reference/messages_post.

Request

AnthropicClaudetem os seguintes parâmetros de inferência para uma chamada de inferência de mensagens.

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

Veja a seguir os parâmetros necessários.

  • anthropic_version — (Obrigatório) A versão antrópica. O valor deve ser bedrock-2023-05-31.

  • max_tokens — (Obrigatório) O número máximo de tokens a serem gerados antes de parar.

    Observe que Anthropic Claude os modelos podem parar de gerar tokens antes de atingir o valor demax_tokens. AnthropicClaudeModelos diferentes têm valores máximos diferentes para esse parâmetro. Para obter mais informações, consulte Comparação de modelos.

  • mensagens — (Obrigatório) As mensagens de entrada.

    • papel — O papel do turno da conversa. Os valores válidos são user e assistant.

    • conteúdo — (obrigatório) O conteúdo do turno da conversa.

      • tipo — (obrigatório) O tipo do conteúdo. Os valores válidos são image e text.

        Se você especificarimage, também deverá especificar a fonte da imagem no seguinte formato

        fonte — (obrigatório) O conteúdo do turno da conversa.

        • type — (obrigatório) O tipo de codificação da imagem. Você pode especificarbase64.

        • media_type — (obrigatório) O tipo da imagem. Você pode especificar os seguintes formatos de imagem.

          • image/jpeg

          • image/png

          • image/webp

          • image/gif

        • data — (obrigatório) Os bytes de imagem codificados em base64 para a imagem. O tamanho máximo da imagem é 3,75 MB. A altura e a largura máximas de uma imagem são 8000 pixels.

        Se você especificartext, também deverá especificar o prompt emtext.

Veja a seguir os parâmetros opcionais.

  • system — (Opcional) O prompt do sistema para a solicitação.

    Um prompt do sistema é uma forma de fornecer contexto e instruções AnthropicClaude, como especificar uma meta ou função específica. Para obter mais informações, consulte Como usar os prompts do sistema na Anthropic documentação.

    nota

    Você pode usar os prompts do sistema com a Anthropic Claude versão 2.1 ou superior.

  • stop_sequences — (Opcional) Sequências de texto personalizadas que fazem com que o modelo pare de gerar. AnthropicClaudeos modelos normalmente param quando completam naturalmente seu turno; nesse caso, o valor do campo de stop_reason resposta éend_turn. Se você quiser que o modelo pare de ser gerado ao encontrar sequências de texto personalizadas, você pode usar o parâmetro. stop_sequences Se o modelo encontrar uma das cadeias de texto personalizadas, o valor do campo de stop_reason resposta será stop_sequence e o valor de stop_sequence conterá a sequência de parada correspondente.

    O número máximo de entradas é 8191.

  • temperatura — (Opcional) A quantidade de aleatoriedade injetada na resposta.

    Padrão Mínimo Máximo

    1

    0

    1

  • top_p — (Opcional) Use amostragem de núcleo.

    Na amostragem de núcleo, Anthropic Claude calcula a distribuição cumulativa de todas as opções de cada token subsequente em ordem decrescente de probabilidade e a interrompe quando atinge uma probabilidade específica especificada por. top_p Você deve alterar um temperature ou doistop_p, mas não os dois.

    Padrão Mínimo Máximo

    0,999

    0

    1

Veja a seguir os parâmetros opcionais.

  • top_k — (Opcional) Somente uma amostra das K principais opções para cada token subsequente.

    Use top_k para remover respostas de baixa probabilidade de cauda longa.

    Padrão Mínimo Máximo

    Desativado por padrão

    0

    500

Response

O Anthropic Claude modelo retorna os seguintes campos para uma chamada de inferência de mensagens.

{ "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 — O identificador exclusivo da resposta. O formato e o tamanho do ID podem mudar com o tempo.

  • modelo — O ID do Anthropic Claude modelo que fez a solicitação.

  • stop_reason — O motivo pelo qual Anthropic Claude parou de gerar a resposta.

    • end_turn — O modelo atingiu um ponto de parada natural

    • max_tokens — O texto gerado excedeu o valor do campo de max_tokens entrada ou excedeu o número máximo de tokens que o modelo suporta. '.

    • stop_sequence — O modelo gerou uma das sequências de parada que você especificou no stop_sequences campo de entrada.

  • tipo — O tipo de resposta. O valor é sempre message.

  • papel — O papel conversacional da mensagem gerada. O valor é sempre assistant.

  • conteúdo — O conteúdo gerado pelo modelo. Retornado como uma matriz.

    • tipo — O tipo do conteúdo. Atualmente, o único valor suportado é text.

    • texto — O texto do conteúdo.

  • uso — Contêiner para o número de tokens que você forneceu na solicitação e o número de tokens que o modelo gerou na resposta.

    • input_tokens — O número de tokens de entrada na solicitação.

    • output_tokens — O número de tokens gerados pelo modelo na resposta.

    • stop_sequence — O modelo gerou uma das sequências de parada que você especificou no stop_sequences campo de entrada.

Exemplos de código

Os exemplos de código a seguir mostram como usar a API de mensagens.

Exemplo de código de mensagens

Este exemplo mostra como enviar uma mensagem de usuário de turno único e um turno de usuário com uma mensagem de assistente pré-preenchida para um Anthropic Claude 3 Sonnet modelo.

# 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()

Exemplos de código multimodal

Os exemplos a seguir mostram como passar uma imagem e solicitar um texto em uma mensagem multimodal para um Anthropic Claude 3 Sonnet modelo.

Prompt multimodal com InvokeModel

O exemplo a seguir mostra como enviar um prompt multimodal para 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()

Streaming de prompt multimodal com InvokeModelWithResponseStream

O exemplo a seguir mostra como transmitir a resposta de um prompt multimodal enviado para 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()