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á.
Anthropic Claude Mensagens API
Esta seção fornece parâmetros de inferência e exemplos de código para usar o Anthropic Claude MensagensAPI.
Tópicos
Anthropic Claude APIVisão geral das mensagens
Você pode usar as Mensagens API para criar bots de bate-papo ou aplicativos de assistente virtual. O API gerencia as trocas conversacionais entre um usuário e um Anthropic Claude modelo (assistente).
dica
Este tópico mostra como usar o Anthropic Claude mensagens API com as operações de inferência básicas (InvokeModelou InvokeModelWithResponseStream). No entanto, recomendamos que você use o Converse APIpara implementar mensagens em seu aplicativo. A ferramenta Converse APIfornece um conjunto unificado de parâmetros que funcionam em todos os modelos que oferecem suporte a mensagens. Para obter mais informações, consulte Conduza uma conversa com o Converse Operações do API.
Anthropic treina os modelos Claude para operar em turnos alternados de conversação do usuário e do assistente. Ao criar uma mensagem, você especifica os turnos de conversação anteriores com o parâmetro messages. O modelo acaba gerando 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 do usuário ou pode incluir várias mensagens de usuário e assistente. A primeira mensagem deve sempre usar a função do usuário.
Se você estiver usando a técnica de pré-preencher a resposta de Claude (preenchendo o início da resposta de Claude usando uma mensagem de função final de assistente), Claude responderá continuando de onde você 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 do 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 pelo 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 string única ou uma matriz dos blocos de conteúdo, em que cada bloco tem um tipo específico. O uso de uma string é um atalho 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 no
Prompts 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 Anthropic Claude, como especificar uma meta ou função específica. Especifique um prompt do sistema no campo system
, conforme exibido 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
Prompts multimodais
Um prompt multimodal combina várias modalidades (imagens e textos) em um único prompt. Você especifica as modalidades no campo de entrada content
. O exemplo a seguir mostra como você pode perguntar Anthropic Claude para descrever o conteúdo de uma imagem fornecida. Para obter um código de exemplo, 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?" } ] } ] }
nota
As seguintes restrições pertencem ao campo content
:
-
É possível incluir até vinte imagens. O tamanho, a altura e a largura de cada imagem não devem exceder 3,75 MB, 8.000 px e 8.000 px, respectivamente.
-
É possível incluir até cinco documentos. O tamanho de cada documento não deve ser superior a 4,5 MB.
-
Você só poderá incluir imagens e documentos se
role
foruser
.
Cada imagem incluída por você em uma solicitação conta para o uso do token. Para obter mais informações, consulte Custos de imagem
Uso de ferramentas (chamada de função)
With Anthropic Claude Em 3 modelos, você pode especificar uma ferramenta que o modelo pode usar para responder a uma mensagem. Por exemplo, você pode especificar uma ferramenta que obtenha a música mais tocada em uma estação de rádio. Se o usuário passar a mensagem Qual é a música mais popularWZPZ? , o modelo determina que a ferramenta especificada pode ajudar a responder à pergunta. Na resposta, o modelo solicita a você executar a ferramenta em seu nome. Em seguida, você executa a ferramenta e passa o resultado da ferramenta para o modelo, que gera uma resposta para a mensagem original. Para obter mais informações, consulte Uso de ferramentas (chamada de função)
dica
Recomendamos que você use o Converse APIpara integrar o uso da ferramenta em seu aplicativo. Para obter mais informações, consulte Use uma ferramenta para concluir uma resposta do modelo do Amazon Bedrock.
Você especifica as ferramentas que deseja disponibilizar para um modelo no campo tools
. O exemplo a seguir é de uma ferramenta que obtém as músicas mais tocadas em uma estação de rádio.
[ { "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 precisa de uma ferramenta para gerar uma resposta a uma mensagem, o modelo retorna informações sobre a ferramenta solicitada, e a entrada para a ferramenta no campo content
da mensagem. Ele também define o motivo da interrupção da resposta para 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" }
No código, você chama a ferramenta em nome das ferramentas. Em seguida, você passa o resultado da ferramenta (tool_result
) em uma mensagem do usuário para o modelo.
{ "role": "user", "content": [ { "type": "tool_result", "tool_use_id": "toolu_bdrk_01SnXQc6YVWD8Dom5jz7KhHy", "content": "Elemental Hotel" } ] }
Na resposta, o modelo usa o resultado da ferramenta a fim de gerar uma resposta para a mensagem original.
{ "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" }
Computer Use (Beta)
O uso do computador é um novo Anthropic Claude capacidade de modelo (em versão beta) disponível somente com o Claude 3.5 Sonnet v2. Com o uso do computador, Claude pode ajudá-lo a automatizar tarefas por meio de GUI ações básicas.
Atenção
O recurso de uso do computador é disponibilizado para você como um “Serviço Beta”, conforme definido nos Termos do AWS Serviço. Está sujeito ao seu Contrato AWS e aos Termos AWS de Serviço e ao modelo aplicávelEULA. Esteja ciente de que o uso do computador API apresenta riscos exclusivos que são distintos dos API recursos padrão ou das interfaces de bate-papo. Esses riscos aumentam ao usar o uso do computador API para interagir com a Internet. Para minimizar os riscos, considere tomar precauções, como:
Operar a funcionalidade Computer Use em uma máquina virtual ou contêiner dedicado com privilégios mínimos para evitar acidentes ou ataques diretos ao sistema.
Para evitar o roubo de informações, evite dar ao usuário do computador API acesso a contas ou dados confidenciais.
Limitar o acesso API do usuário do computador à Internet aos domínios necessários para reduzir a exposição a conteúdo malicioso.
Para garantir a supervisão adequada, mantenha uma pessoa informada sobre tarefas confidenciais (como tomar decisões que possam ter consequências significativas no mundo real) e sobre qualquer coisa que exija consentimento afirmativo (como aceitar cookies, executar transações financeiras ou concordar com os termos de serviço).
Qualquer conteúdo que você habilitar Claude ver ou acessar pode potencialmente substituir as instruções ou a causa Claude cometer erros ou realizar ações não intencionais. Tomando as devidas precauções, como isolar Claude de superfícies sensíveis, é essencial — inclusive para evitar riscos relacionados à injeção imediata. Antes de habilitar ou solicitar as permissões necessárias para habilitar os recursos do Computer Use em seus próprios produtos, informe os usuários finais sobre quaisquer riscos relevantes e obtenha o consentimento deles conforme apropriado.
O uso do computador API oferece várias ferramentas predefinidas de uso do computador (computer_20241022, bash_20241022 e text_editor_20241022) para você usar. É possível criar um prompt com sua solicitação, como “enviar um e-mail para Ben com as anotações da minha última reunião” e uma captura de tela (quando necessário). A resposta contém uma lista de tool_use
ações em JSON formato (por exemplo, scroll_down, left_button_press, captura de tela). Seu código executa as ações do computador e fornece Claude com captura de tela mostrando as saídas (quando solicitado).
O parâmetro tools foi atualizado para aceitar tipos de ferramentas polimórficas; uma nova propriedade tool.type
está sendo adicionada para diferenciá-las. type
é opcional; se omitida, a ferramenta será considerada uma ferramenta personalizada (anteriormente o único tipo de ferramenta compatível). Além disso, um novo parâmetro, anthropic_beta
, foi adicionado, com um valor de enumeração correspondente: computer-use-2024-10-22
. Somente solicitações feitas com esse parâmetro e enum podem usar as novas ferramentas de Computer Use. Ele pode ser especificado da seguinte forma: "anthropic_beta":
["computer-use-2024-10-22"]
.
Para obter mais informações, consulte Uso do computador (beta)
Esta é uma resposta de exemplo que pressupõe que a solicitação continha uma captura de tela da área de trabalho com um ícone do 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 } }
Modelos compatíveis
Você pode usar as Mensagens API com o seguinte Anthropic Claude modelos.
Anthropic Claude Instant v1.2
Anthropic Claude 2 v2
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
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
Exemplos de código
Os exemplos de código a seguir mostram como usar as mensagensAPI.
Exemplo do código de mensagens
Este exemplo mostra como enviar uma mensagem de usuário de turno único e uma 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.
Tópicos
Prompt multimodal com InvokeModel
O exemplo a seguir mostra como enviar um prompt multimodal para Anthropic Claude 3 Sonnet com 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 com 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()