Anthropic Claude Mensagens API - 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á.

Anthropic Claude Mensagens API

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

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 Anthropic Claude documentação. Se você tiver solicitações de conclusão de texto existentes que deseja migrar para as mensagensAPI, consulte Migração das conclusões de texto.

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 no Anthropic documentação.

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 for user.

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 no Anthropic documentação.

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) no Anthropic Claude documentaçã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) no Anthropic documentação.

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.

Request

Anthropic Claude tem os seguintes parâmetros de inferência para uma chamada de inferência de mensagens.

{ "anthropic_version": "bedrock-2023-05-31", "anthropic_beta": ["computer-use-2024-10-22"] "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, "tools": [ { "type": "custom", "name": string, "description": string, "input_schema": json }, { "type": "computer_20241022", "name": "computer", "display_height_px": int, "display_width_px": int, "display_number": 0 int }, { "type": "bash_20241022", "name": "bash" }, { "type": "text_editor_20241022", "name": "str_replace_editor" } ], "tool_choice": { "type" : string, "name" : string, }, "stop_sequences": [string] }

Veja a seguir os parâmetros necessários.

  • anthropic_version: (obrigatório) a versão da Anthropic. O valor deve ser bedrock-2023-05-31.

  • anthropic_beta — (Obrigatório, se estiver usando o computadorAPI) O beta antrópico a ser usado. Para usar o computadorAPI, o valor deve sercomputer-use-2024-10-22.

  • 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. Diferente Anthropic Claude os modelos têm valores máximos diferentes para esse parâmetro. Para obter mais informações, consulte Model comparison.

  • messages: (obrigatório) as mensagens de entrada.

    • role: o perfil do turno da conversa. Os valores válidos são user e assistant.

    • content: (obrigatório) o conteúdo do turno da conversa.

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

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

        source: (obrigatório) o conteúdo do turno da conversa.

        • type: (obrigatório) o tipo de codificação da imagem. Você pode especificar base64.

        • 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. O valor da altura e da largura máximas de uma imagem é 8.000 pixels.

        Se especificar a propriedade text, você deverá especificar o prompt em text.

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 para Anthropic Claude, como especificar uma meta ou função específica. Para obter mais informações, consulte Solicitações do sistema no Anthropic documentação.

    nota

    Você pode usar os prompts do sistema com 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. Anthropic Claude os modelos normalmente param quando completam naturalmente seu turno; nesse caso, o valor do campo de stop_reason resposta éend_turn. Se quiser que o modelo deixe de ser gerado ao encontrar strings de texto personalizadas, você poderá usar o parâmetro stop_sequences. Se o modelo encontrar uma das strings de texto personalizadas, o valor do campo de resposta stop_reason será stop_sequence e o valor de stop_sequence conterá a sequência de parada correspondente.

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

  • temperature: (opcional) a aleatoriedade injetada na resposta.

    Padrão Mínimo Máximo

    1

    0

    1

  • top_p: (opcional) use amostragem de núcleo.

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

    Padrão Mínimo Máximo

    0,999

    0

    1

  • top_k: (opcional) somente um exemplo das opções K principais para cada token subsequente.

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

    Padrão Mínimo Máximo

    Desabilitado por padrão.

    0

    500

  • tools: (opcional) definições de ferramentas que o modelo pode usar.

    nota

    Requer um Anthropic Claude Modelo 3.

    Se você incluir tools na solicitação, o modelo poderá retornar blocos de conteúdo tool_use que representam o uso dessas ferramentas do modelo. É possível executar essas ferramentas usando a entrada de ferramenta gerada pelo modelo e, opcionalmente, retornar os resultados ao modelo usando blocos de conteúdo de tool_result.

    Você pode passar os seguintes tipos de ferramenta:

    Personalizada

    Definição de uma ferramenta personalizada.

    • (opcional) type: o tipo da ferramenta. Se definido, use o valor custom.

    • name: o nome da ferramenta.

    • description: (opcional, mas altamente recomendado) a descrição da ferramenta.

    • input_schema — O JSON esquema da ferramenta.

    Computação

    Definição da ferramenta de computador que você usa com o uso do computadorAPI.

    • type: o valor deve ser computer_20241022.

    • name: o valor deve ser computer.

    • (Obrigatório) display_height_px: a altura da tela que está sendo controlada pelo modelo, em pixels.

      Padrão Mínimo Máximo

      Nenhum

      1

      Sem máximo

    • (Obrigatório) display_width_px: a largura da tela que está sendo controlada pelo modelo, em pixels.

      Padrão Mínimo Máximo

      Nenhum

      1

      Sem máximo

    • (Opcional) display_number: o número de exibição a ser controlado (só relevante para ambientes X11). Se especificada, a ferramenta receberá um número de exibição na definição da ferramenta.

      Padrão Mínimo Máximo

      Nenhum

      0

      N

    bash

    Definição da ferramenta bash que você usa com o computador. API

    • (opcional) type: o valor deve ser bash_20241022.

    • name: o valor deve ser bash.

    text editor

    Definição da ferramenta de edição de texto que você usa com o computadorAPI.

    • (opcional) type: o valor deve ser text_editor_20241022.

    • name: o valor deve ser str_replace_editor.

  • tool_choice: (opcional) especifica como o modelo deve usar as ferramentas fornecidas. O modelo pode usar uma ferramenta específica, qualquer ferramenta disponível ou decidir por conta própria.

    nota

    Requer um Anthropic Claude Modelo 3.

    • type: o tipo de opção de ferramenta. Os valores possíveis são any (use qualquer ferramenta disponível), auto (o modelo decide) e tool (use a ferramenta especificada).

    • name: (opcional) o nome da ferramenta a ser usada. Obrigatório se você especificar tool no campo type.

Response

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

{ "id": string, "model": string, "type" : "message", "role" : "assistant", "content": [ { "type": string, "text": string } ], "stop_reason": string, "stop_sequence": string, "tool_use" : { "type": string, "id" : string, "input" : json }, "usage": { "input_tokens": integer, "output_tokens": integer } }
  • id: o identificador exclusivo da resposta. O formato e o tamanho do ID podem mudar com o passar do tempo.

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

  • stop_reason — A razão pela 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 entrada max_tokens ou excedeu o número máximo de tokens compatíveis com o modelo.

    • stop_sequence: o modelo gerou uma das sequências de parada especificadas por você no campo de entrada stop_sequences.

  • stop_sequence: a sequência de parada que encerrou a geração.

  • type: o tipo de resposta. O valor é sempre message.

  • role: a função conversacional da mensagem gerada. O valor é sempre assistant.

  • content: o conteúdo gerado pelo modelo. Retornado como uma matriz. Existem dois tipos de conteúdo, text e tool_use.

    • text: uma resposta em texto.

      • type: este valor é text. O tipo do conteúdo.

      • text: o texto do conteúdo.

    • tool_use: uma solicitação do modelo para usar uma ferramenta.

      • type: este valor é text. O tipo do conteúdo.

      • id: o ID da ferramenta cujo uso o modelo está solicitando.

      • input: os parâmetros de entrada a serem passados para a ferramenta.

  • usage: contêiner para o número de tokens fornecidos por você 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 especificadas por você no campo de entrada stop_sequences.

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.

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