

# Suporte multimodal para o Amazon Nova
<a name="modalities"></a>

**nota**  
Esta documentação é para o Amazon Nova versão 1. Para ver a documentação multimodal do Amazon Nova 2, acesse [Compreensão multimodal](https://docs.aws.amazon.com/nova/latest/nova2-userguide/using-multimodal-models.html).

Os modelos de compreensão do Amazon Nova são modelos de compreensão multimodais, o que significa que eles são compatíveis com entradas multimodais, como imagens, vídeos e documentos, para inferir e responder a perguntas com base no conteúdo fornecido. Os modelos do Amazon Nova estão equipados com novos recursos visuais que permitem que o modelo compreenda e analise imagens, documentos e vídeos, realizando assim casos de uso de compreensão multimodal.

A seção a seguir descreve as diretrizes para trabalhar com imagens, documentos e vídeos no Amazon Nova. Isso inclui estratégias de pré-processamento empregadas, exemplos de código e limitações relevantes a serem consideradas.

**Topics**
+ [Tipo de conteúdo compatível por modalidade](#modalities-content)
+ [Compreensão de imagens](modalities-image.md)
+ [Compreensão de vídeos](modalities-video.md)
+ [Compreensão do documento](modalities-document.md)
+ [Tratamento de erros](text-error-handing.md)

## Tipo de conteúdo compatível por modalidade
<a name="modalities-content"></a>

As informações a seguir detalham os formatos de arquivo compatíveis com arquivo de mídia e o método de entrada aceito.


| Tipo de arquivo de mídia | Formatos de arquivo compatíveis | **Método de entrada** | Estratégia de análise | 
| --- |--- |--- |--- |
| Imagem | PNG, JPG, JPEG, GIF, WebP | Base64 URI do Amazon S3 | Compreensão visual de imagens | 
| Documento de texto *(Somente a API Converse)* | CSV, XLS, XLSX, HTML, TXT, MD, DOC | Bytes URI do Amazon S3 | Compreensão textual somente do documento. | 
| Documento de mídia *(Somente a API Converse)* | PDF, DOCX | Bytes URI do Amazon S3 | Texto com compreensão de imagem intercalada | 
| Vídeo | MP4, MOV, MKV, WebM, FLV, MPEG, MPG, WMV, 3GP | Base64 URI do Amazon S3 | Compreensão visual de vídeos | 

**nota**  
Você pode incluir até cinco arquivos do seu computador ou 1000 arquivos do Amazon S3. Cada arquivo não deve ter mais de 1 GB quando carregado do Amazon S3. O tamanho total dos arquivos carregados não pode exceder 25 MB ao fazer o upload do seu computador ou 2 GB ao fazer o upload do Amazon S3.

Como 25 MB é o limite geral de carga útil, certifique-se de considerar a sobrecarga do base64. Enquanto estiver trabalhando, lembre-se de que bibliotecas e frameworks mantêm a memória, e o conteúdo de mídia transmitido pode se acumular rapidamente. Ao usar vídeo, especificar um `s3Location` deve aliviar muitos problemas de armazenamento.

**nota**  
Vídeos e documentos grandes levam tempo para serem processados, independentemente do método de entrada. Se o SDK do boto3 atingir o tempo limite enquanto aguarda uma resposta do Amazon Bedrock, verifique se você tem um valor de [read\$1timeout](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html) apropriado definido e atualizou o boto3 no mínimo para a versão 1.38.

# Compreensão de imagens
<a name="modalities-image"></a>

**nota**  
Esta documentação é para o Amazon Nova versão 1. Para ver o guia de compreensão de imagens do Amazon Nova 2, acesse [Compreensão de imagens](https://docs.aws.amazon.com/nova/latest/nova2-userguide/using-multimodal-models.html#image-understanding).

Os modelos do Amazon Nova permitem que você inclua várias imagens na carga útil com um limite de carga útil total de 25 MB. No entanto, você pode especificar um URI do Amazon S3 que contenha suas imagens para compreensão de imagem. Essa abordagem permite que você aproveite o modelo para imagens maiores e mais imagens sem ser limitado pela restrição de carga útil de 25 MB. Os modelos do Amazon Nova podem analisar as imagens transmitidas e responder a perguntas, classificar imagens e resumir imagens com base em suas instruções fornecidas.

## Informações sobre o tamanho das imagens
<a name="modalities-image-resolution"></a>

Para fornecer os melhores resultados possíveis, o Amazon Nova, de forma automática, aumenta ou reduz a escala verticalmente das imagens de entrada, dependendo da taxa de proporção e da resolução original. Para cada imagem, o Amazon Nova primeiro identifica a taxa de proporção mais próxima de 1:1, 1:2, 1:3, 1:4, 1:5, 1:6, 1:7, 1:8, 1:9, 2:3, 2:4 e suas transposições. Em seguida, a imagem é redimensionada para que pelo menos um lado dela seja maior que 896 px ou o comprimento do lado menor da imagem original, mantendo a taxa proporção mais próxima. Há uma resolução máxima de 8000 x 8000 pixels

## Detecção de caixa delimitadora
<a name="modalities-image-bounding"></a>

Os modelos Amazon Nova Lite e Amazon Nova Pro são treinados para detectar com precisão as caixas delimitadoras nas imagens. Essa capacidade pode ser útil quando o objetivo é obter as coordenadas de um objeto específico de interesse. A funcionalidade de detecção de caixa delimitadora do modelo do Amazon Nova o torna um candidato adequado para tarefas de localização de imagens, permitindo, assim, uma melhor compreensão das capturas de tela. O modelo do Amazon Nova gera caixas delimitadoras em uma escala de [0, 1000] e, depois que essas coordenadas são obtidas, elas podem ser redimensionadas com base nas dimensões da imagem como uma etapa de pós-processamento.

## Conversão de imagem em tokens
<a name="modalities-image-tokens"></a>

Conforme discutido anteriormente, as imagens são redimensionadas para maximizar a extração de informações, mantendo a taxa de proporção. Confira abaixo alguns exemplos de dimensões de imagens e os cálculos aproximados de tokens.


| image\$1resolution (A x L ou L x A) | 900 x 450 | 900 x 900 | 1400 x 900 | 1,8K x 900 | 1,3K x 1,3K | 
| --- |--- |--- |--- |--- |--- |
| Contagem estimada de tokens | \$1800 | \$11.300 | \$11.800 | \$12.400 | \$12.600 | 

Por exemplo, considere uma imagem de exemplo com tamanho de 800 x 400 e você quer estimar a contagem de tokens para ela. Com base nas dimensões, para manter uma taxa proporção de 1:2, a resolução mais próxima é 900 x 450. Portanto, a contagem aproximada de tokens para essa imagem é de cerca de 800 tokens.

# Limitações de compreensão de imagens
<a name="modalities-image-limitations"></a>

Entenda as seguintes limitações do Amazon Nova:
+ **Compreensão multilíngue de imagens:** os modelos têm uma compreensão limitada de imagens e quadros de vídeo multilíngues e podem ter dificuldades ou alucinações em tarefas semelhantes.
+ **Identificação de pessoas**: os modelos do Amazon Nova não são compatíveis com a capacidade de identificar ou nomear indivíduos em imagens, documentos ou vídeos. Os modelos se recusarão a realizar tais tarefas.
+ **Raciocínio espacial**: os modelos do Amazon Nova têm capacidades limitadas de raciocínio espacial. Eles podem ter dificuldades com tarefas que exijam localização precisa ou análise de layout.
+ **Texto pequeno em imagens/vídeos**: se o texto na imagem ou no vídeo for muito pequeno, considere aumentar o tamanho relativo do texto na imagem recortando a seção relevante e preservando o contexto necessário.
+ **Contagem**: os modelos do Amazon Nova podem fornecer contagens aproximadas de objetos em uma imagem, mas nem sempre são precisos, especialmente ao lidar com um grande número de objetos pequenos.
+ **Conteúdo impróprio**: os modelos do Amazon Nova não processarão imagens impróprias ou explícitas que violem a Política de Uso Aceitável.
+ **Aplicações de saúde**: devido à natureza sensível desses artefatos, embora os modelos do Amazon Nova possam fornecer análises gerais sobre imagens ou vídeos de saúde, não recomendamos que você interprete exames diagnósticos complexos. As respostas do Amazon Nova nunca devem ser consideradas um substituto para aconselhamento médico profissional.

# Exemplos de compreensão de imagens
<a name="modalities-image-examples"></a>

O exemplo a seguir mostra como enviar um prompt de imagem para o modelo do Amazon Nova com [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html).

```
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
import base64
import boto3
import json
# Create a Bedrock Runtime client in the AWS Region of your choice.
client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",
)

MODEL_ID = "us.amazon.nova-lite-v1:0"
# Open the image you'd like to use and encode it as a Base64 string.
with open("media/sunset.png", "rb") as image_file:
    binary_data = image_file.read()
    base_64_encoded_data = base64.b64encode(binary_data)
    base64_string = base_64_encoded_data.decode("utf-8")
# Define your system prompt(s).
system_list = [    {
        "text": "You are an expert artist. When the user provides you with an image, provide 3 potential art titles"
    }
]
# Define a "user" message including both the image and a text prompt.
message_list = [
    {
        "role": "user",
        "content": [
            {
                "image": {
                    "format": "png",
                    "source": {
                        "bytes": image // Binary array (Converse API) or Base64-encoded string (Invoke API)
                    },
                }
            },
            {
                "text": "Provide art titles for this image."
            }
        ],
    }
]
# Configure the inference parameters.
inf_params = {"maxTokens": 300, "topP": 0.1, "topK": 20, "temperature": 0.3}

native_request = {
    "schemaVersion": "messages-v1",
    "messages": message_list,
    "system": system_list,
    "inferenceConfig": inf_params,
}
# Invoke the model and extract the response body.
response = client.invoke_model(modelId=MODEL_ID, body=json.dumps(native_request))
model_response = json.loads(response["body"].read())
# Pretty print the response JSON.
print("[Full Response]")
print(json.dumps(model_response, indent=2))
# Print the text content for easy readability.
content_text = model_response["output"]["message"]["content"][0]["text"]
print("\n[Response Content Text]")
print(content_text)
```

Para transmitir arquivos de imagem grandes ou vários arquivos de imagem, em que a carga útil geral é maior que 25 MB, você pode usar o Amazon S3. O exemplo a seguir demonstra como usar o Amazon S3 para carregar imagens para o Amazon Nova:

```
import boto3
import json
import base64
# Create a Bedrock Runtime client
client = boto3.client("bedrock-runtime", 
                      region_name="us-east-1", 
                     )
PRO_MODEL_ID = "us.amazon.nova-pro-v1:0"
LITE_MODEL_ID = "us.amazon.nova-lite-v1:0"
MICRO_MODEL_ID = "us.amazon.nova-micro-v1:0"
PREMIER_MODEL_ID = "us.amazon.nova-premier-v1:0"
messages = [
    {
        "role": "user",
        "content": [
            {
                "image": {
                    "format": "png",
                    "source": {
                        "s3Location": {
                            #Replace the s3 bucket URI 
                            "uri": "s3://demo-bucket/cat.png"
                            "bucketOwner" : "123456789012"
                        }
                    },
                }
            },
            {"text": "Describe the following image"},
        ],
    }
]
inf_params = {"maxTokens": 300, "topP": 0.1, "temperature": 0.3}
model_response = client.converse(
    modelId=LITE_MODEL_ID, messages=messages, inferenceConfig=inf_params
)
print("\n[Full Response]")
print(json.dumps(model_response, indent=2))
print("\n[Response Content Text]")
print(model_response["output"]["message"]["content"][0]["text"])
```

# Compreensão de vídeos
<a name="modalities-video"></a>

**nota**  
Esta documentação é para o Amazon Nova versão 1. Para ver o guia de compreensão de vídeo do Amazon Nova 2, acesse [Compreensão de vídeo](https://docs.aws.amazon.com/nova/latest/nova2-userguide/using-multimodal-models.html#video-understanding).

Os modelos do Amazon Nova permitem que você inclua um único vídeo na carga útil, que pode ser fornecido no formato Base64 ou por meio de um URI do Amazon S3. Ao usar o método base64, o tamanho geral da carga útil deve permanecer dentro de 25 MB. No entanto, você pode especificar um URI do Amazon S3 para compreensão de vídeo. Essa abordagem permite que você aproveite o modelo para vídeos mais longos (até 1 GB de tamanho) sem ser limitado pela restrição geral do tamanho da carga útil. Os modelos do Amazon Nova podem analisar o vídeo fornecido e responder a perguntas, classificar um vídeo e resumir as informações no vídeo com base nas instruções fornecidas.


| Tipo de arquivo de mídia | Formatos de arquivo compatíveis | **Método de entrada** | 
| --- |--- |--- |
| Vídeo | MP4, MOV, MKV, WebM, FLV, MPEG, MPG, WMV, 3GP | Base64 *Recomendado para carga útil de até 25 MB* | 
|  |  | URI do Amazon S3 *Recomendado para carga útil de mais 25 MB até 2 GB. Os arquivos individuais devem ser até de 1 GB.* | 

Não há diferenças na contagem de tokens de entrada de vídeo, independentemente de o vídeo ser passado como Base64 (desde que esteja dentro das restrições de tamanho) ou por meio de um local do Amazon S3.

Observe que, para o formato de arquivo 3GP, o campo “format” passado na solicitação da API deve ter o formato “three\$1gp”.

Ao usar o Amazon S3, certifique-se de definir o metadado “Content-Type” para o tipo MIME correto para o vídeo.

## Informações sobre o tamanho do vídeo
<a name="modalities-video-size"></a>

Os recursos de compreensão de vídeo do Amazon Nova são compatíveis com várias taxas de proporção. Todos os vídeos são redimensionados com distorção (aumentados ou reduzidos, com base na entrada) para dimensões de um **quadrado de 672 x 672** antes de serem inseridos no modelo. O modelo utiliza uma estratégia de amostragem dinâmica baseada na duração do vídeo. Para vídeos com duração menor ou igual a 16 minutos do Amazon Nova Lite e Amazon Nova Pro, emprega-se uma taxa de amostragem de um quadro por segundo (FPS). No entanto, para vídeos com mais de 16 minutos de duração, a taxa de amostragem diminui para manter uma amostra consistente de 960 quadros, com a taxa de amostragem de quadros variando de acordo. Essa abordagem foi projetada para fornecer uma compreensão de vídeo mais precisa em nível de cena para vídeos mais curtos em comparação com o conteúdo de vídeos mais longos. Recomendamos que você mantenha a duração do vídeo em menos de uma hora para movimentação baixa, e menos de 16 minutos para qualquer coisa com maior movimentação. Para o Amazon Nova Premier, a taxa de amostragem de 1 FPS é aplicada até um limite de 3.200 quadros.

Não deve haver diferença ao analisar uma versão 4K de um vídeo e uma versão Full HD. Da mesma forma, como a taxa de amostragem é de no máximo 1 FPS, um vídeo de 60 FPS deve ter o mesmo desempenho que um vídeo de 30 FPS. Devido ao limite de 1 GB no tamanho do vídeo, usar resolução e FPS acima do necessário não é benéfico e limitará a duração do vídeo que se encaixa nesse limite de tamanho. Você pode querer pré-processar vídeos com mais de 1 GB.

# Limitações de compreensão de vídeo
<a name="modalities-video-limitations"></a>

Entenda as seguintes limitações do Amazon Nova:
+ **Compreensão multilíngue de imagens:** os modelos têm uma compreensão limitada de imagens e quadros de vídeo multilíngues e podem ter dificuldades ou alucinações em tarefas semelhantes.
+ **Identificação de pessoas**: os modelos do Amazon Nova não são compatíveis com a capacidade de identificar ou nomear indivíduos em imagens, documentos ou vídeos. Os modelos se recusarão a realizar tais tarefas.
+ **Raciocínio espacial**: os modelos do Amazon Nova têm capacidades limitadas de raciocínio espacial. Eles podem ter dificuldades com tarefas que exijam localização precisa ou análise de layout.
+ **Texto pequeno em imagens/vídeos**: se o texto na imagem ou no vídeo for muito pequeno, considere aumentar o tamanho relativo do texto na imagem recortando a seção relevante e preservando o contexto necessário.
+ **Contagem**: os modelos do Amazon Nova podem fornecer contagens aproximadas de objetos em uma imagem, mas nem sempre são precisos, especialmente ao lidar com um grande número de objetos pequenos.
+ **Conteúdo impróprio**: os modelos do Amazon Nova não processarão imagens impróprias ou explícitas que violem a Política de Uso Aceitável.
+ **Aplicações de saúde**: devido à natureza sensível desses artefatos, embora os modelos do Amazon Nova possam fornecer análises gerais sobre imagens ou vídeos de saúde, não recomendamos que você interprete exames diagnósticos complexos. As respostas do Amazon Nova nunca devem ser consideradas um substituto para aconselhamento médico profissional.

## Tokens de vídeo
<a name="modalities-video-tokens"></a>

A duração do vídeo é o principal fator que afeta o número de tokens gerados. Para calcular o custo aproximado, você deve multiplicar o número estimado de tokens de vídeo pelo preço por token do modelo específico que está sendo utilizado.

A tabela a seguir fornece algumas aproximações de amostragem de quadros e utilização de tokens por duração de vídeo para o Amazon Nova Pro, Lite e Micro:


| video\$1duration | 10 s | 30 s | 16 min | 20 min | 30 min | 45 min | 1 h | 1,5 h | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |
| frames\$1to\$1sample | 10 | 30 | 960 | 960 | 960 | 960 | 960 | 960 | 
| sample\$1rate\$1fps | 1 | 1 | 1 | 0,755 | 0,5 | 0,35556 | 0,14 | 0,096 | 
| Contagem estimada de tokens | 2.880 | 8.640 | 276.480 | 276.480 | 276.480 | 276.480 | 276.480 | 276.480 | 

A tabela a seguir fornece algumas aproximações de amostragem de quadros e utilização de tokens por duração de vídeo para o Amazon Nova Premier:


| video\$1duration | 10 s | 30 s | 16 min | 20 min | 30 min | 45 min | 1 h | 1,5 h | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |
| frames\$1to\$1sample | 10 | 30 | 960 | 1200 | 1800 | 2700 |  |  | 
| sample\$1rate\$1fps | 1 | 1 | 1 | 1 | 1 | 1 |  |  | 
| Contagem estimada de tokens | 2.880 | 8.640 | 276.480 | 345.600 | 518.400 | 777.600 |  |  | 

A tabela a seguir fornece algumas aproximações de amostragem de quadros e utilização de tokens por duração de vídeo para o Amazon Nova Lite 1.5


| video\$1duration | 10 s | 30 s | 16 min | 20 min | 30 min | 45 min | 1 h | 1,5 h | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |
| frames\$1to\$1sample | 10 | 30 | 960 | 1200 | 1800 | 2700 |  |  | 
| sample\$1rate\$1fps | 1 | 1 | 1 | 1 | 1 | 1 |  |  | 
| Contagem estimada de tokens | 2.880 | 8.640 | 276.480 | 345.600 | 518.400 | 777.600 |  |  | 

# Limitações de compreensão de vídeo
<a name="prompting-vision-limitations"></a>

Confira abaixo as principais limitações do modelo, em que a precisão e a performance do modelo podem não ser garantidos.
+ **Um vídeo por solicitação:** atualmente, o modelo suporta apenas um vídeo por solicitação. Alguns frameworks e bibliotecas usam memória para acompanhar as interações anteriores. Pode haver um vídeo que tenha sido adicionado em um contexto anterior.
+ **Sem suporte de áudio:** atualmente, os modelos são treinados para processar e entender o conteúdo de vídeo exclusivamente com base nas informações visuais do vídeo. Eles não têm a capacidade de analisar ou compreender nenhum componente de áudio presente no vídeo.
+ **Causalidade temporal:** o modelo tem uma compreensão limitada da causalidade de eventos na progressão do vídeo. Embora responda bem a perguntas pontuais, ele não funciona tão bem em respostas que dependem da compreensão de uma sequência de eventos.
+ **Compreensão multilíngue de imagens:** os modelos têm uma compreensão limitada de imagens e quadros de vídeo multilíngues. Eles podem ter dificuldades ou apresentar alucinações em tarefas semelhantes.
+ **Identificação de pessoas**: os modelos do Amazon Nova não são compatíveis com a capacidade de identificar ou nomear indivíduos em imagens, documentos ou vídeos. Os modelos se recusarão a realizar tais tarefas.
+ **Raciocínio espacial**: os modelos do Amazon Nova têm capacidades limitadas de raciocínio espacial. Eles podem ter dificuldades com tarefas que exijam localização precisa ou análise de layout.
+ **Texto pequeno em imagens ou vídeos**: se o texto na imagem ou no vídeo for muito pequeno, considere aumentar o tamanho relativo do texto na imagem recortando a seção relevante e preservando o conteúdo necessário.
+ **Contagem**: os modelos do Amazon Nova podem fornecer contagens aproximadas de objetos em uma imagem, mas podem nem sempre ser precisamente exatos, especialmente ao lidar com um grande número de objetos pequenos.
+ **Conteúdo impróprio**: os modelos do Amazon Nova não processarão imagens impróprias ou explícitas que violem a Política de Uso Aceitável.
+ **Aplicações de saúde**: devido à natureza sensível desses artefatos, embora os modelos do Amazon Nova possam fornecer análises gerais sobre imagens ou vídeos de saúde, não recomendamos que você interprete exames diagnósticos complexos. A resposta do Amazon Nova nunca deve ser considerada um substituto para aconselhamento médico profissional.

# Exemplos de compreensão de vídeos
<a name="modalities-video-examples"></a>

O exemplo a seguir mostra como enviar um prompt de vídeo para o modelo do Amazon Nova com [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html).

```
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
import base64
import boto3
import json
# Create a Bedrock Runtime client in the AWS Region of your choice.
client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",
)

MODEL_ID = "us.amazon.nova-lite-v1:0"
# Open the image you'd like to use and encode it as a Base64 string.
with open("media/cooking-quesadilla.mp4", "rb") as video_file:
    binary_data = video_file.read()
    base_64_encoded_data = base64.b64encode(binary_data)
    base64_string = base_64_encoded_data.decode("utf-8")
# Define your system prompt(s).
system_list= [
    {
        "text": "You are an expert media analyst. When the user provides you with a video, provide 3 potential video titles"
    }
]
# Define a "user" message including both the image and a text prompt.
message_list = [
    {
        "role": "user",
        "content": [
            {
                "video": {
                    "format": "mp4",
                    "source": {
                        "bytes": video // Binary array (Converse API) or Base64-encoded string (Invoke API)
                    },
                }
            },
            {
                "text": "Provide video titles for this clip."
            },
        ],
    }
]
# Configure the inference parameters.
inf_params = {"maxTokens": 300, "topP": 0.1, "topK": 20, "temperature": 0.3}

native_request = {
    "schemaVersion": "messages-v1",
    "messages": message_list,
    "system": system_list,
    "inferenceConfig": inf_params,
}
# Invoke the model and extract the response body.
response = client.invoke_model(modelId=MODEL_ID, body=json.dumps(native_request))
model_response = json.loads(response["body"].read())
# Pretty print the response JSON.
print("[Full Response]")
print(json.dumps(model_response, indent=2))
# Print the text content for easy readability.
content_text = model_response["output"]["message"]["content"][0]["text"]
print("\n[Response Content Text]")
print(content_text)
```

O exemplo a seguir mostra como enviar um vídeo usando uma localização do Amazon S3 para o Amazon Nova com [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html).

```
import base64
import boto3
import json
# Create a Bedrock Runtime client in the AWS Region of your choice.
client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",
)

MODEL_ID = "us.amazon.nova-lite-v1:0"
# Define your system prompt(s).
system_list = [
    {
        "text": "You are an expert media analyst. When the user provides you with a video, provide 3 potential video titles"
    }
]
# Define a "user" message including both the image and a text prompt.
message_list = [
    {
        "role": "user",
        "content": [
            {
                "video": {
                    "format": "mp4",
                    "source": {
                        "s3Location": {
                            "uri": "s3://my_bucket/my_video.mp4", 
                            "bucketOwner": "111122223333"
                        }
                    }
                }
            },
            {
                "text": "Provide video titles for this clip."
            }
        ]
    }
]
# Configure the inference parameters.
inf_params = {"maxTokens": 300, "topP": 0.1, "topK": 20, "temperature": 0.3}

native_request = {
    "schemaVersion": "messages-v1",
    "messages": message_list,
    "system": system_list,
    "inferenceConfig": inf_params,
}
# Invoke the model and extract the response body.
response = client.invoke_model(modelId=MODEL_ID, body=json.dumps(native_request))
model_response = json.loads(response["body"].read())
# Pretty print the response JSON.
print("[Full Response]")
print(json.dumps(model_response, indent=2))
# Print the text content for easy readability.
content_text = model_response["output"]["message"]["content"][0]["text"]
print("\n[Response Content Text]")
print(content_text)
```

# Compreensão do documento
<a name="modalities-document"></a>

**nota**  
Esta documentação é para o Amazon Nova versão 1. Para ver o guia de compreensão de documentos do Amazon Nova 2, acesse [Compreensão de documentos](https://docs.aws.amazon.com/nova/latest/nova2-userguide/using-multimodal-models.html#document-understanding).

A capacidade de compreensão de documentos do Amazon Nova permite que você inclua documentos inteiros (PDFs, arquivos do Word, planilhas etc.) em seu prompt e faça perguntas ou solicitações sobre seu conteúdo. Os modelos de compreensão multimodal do Nova (Lite, Pro, Premier) podem interpretar tanto o texto quanto os elementos visuais (como gráficos ou tabelas) nesses documentos. Isso permite casos de uso como resposta a perguntas, resumo e análise de relatórios longos ou documentos digitalizados. Os principais recursos incluem uma janela de contexto muito grande (1 a 2 milhões de tokens) para documentos longos e a capacidade de lidar com vários documentos em uma consulta. 

O Amazon Nova distingue entre dois tipos de entradas de documentos:
+ **Tipos de documentos baseados em texto** (por exemplo, TXT, CSV, Markdown, HTML, DOC): são processados principalmente por seu conteúdo textual. O Nova se concentrará em entender e extrair informações do texto nesses documentos. 
+ **Tipos de documentos baseados em mídia** (por exemplo, PDF, DOCX): esses arquivos podem conter layouts, imagens, tabelas ou gráficos incorporados complexos. Para documentos baseados em mídia, o Nova processa os elementos visuais e textuais. O Nova emprega a compreensão baseada na visão para interpretar o conteúdo visual, como gráficos, tabelas, diagramas ou capturas de tela, junto com o texto do documento.

  Não há suporte para JPEG2000 e JBIG2 em arquivos PDF no Amazon Nova.

Os formatos de arquivo compatíveis incluem tipos comuns de documentos: texto simples e arquivos de texto estruturado (CSV, TXT), planilhas (XLS/XLSX), HTML/Markdown, documentos do Word (DOC/DOCX) e arquivos PDF. Para imagens em documentos, os formatos de imagem padrão (PNG, JPG, GIF, WebP) são tratados, embora PDFs contendo determinadas codificações de imagem (CYMK, SVG) não sejam suportados. 


**Limites de tamanho do documento e diretrizes de uso**  

| Restrição | Limite | 
| --- | --- | 
|  Número máximo de documentos  |  Até 5 documentos por solicitação (aplicável tanto ao upload direto quanto ao Amazon S3)  | 
|  Tamanho do documento baseado em texto  |  Cada documento de texto (por exemplo, .txt, .csv, .md, .html, .doc) deve ter até 4,5 MB  | 
|  Tamanho do documento baseado em mídia  |  Para arquivos .pdf e .docx, não há limite de tamanho de arquivo individual, mas: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/nova/latest/userguide/modalities-document.html)  | 
|  Conteúdo em PDF não suportado  |  PDFs contendo perfis de cores CMYK ou imagens SVG não são suportados  | 

# Como usar o entendimento de documentos do Nova via API
<a name="modalities-document-examples"></a>

Para ilustrar como usar o Amazon Nova para controle de qualidade (resposta a perguntas) ou análise de documentos, aqui está um exemplo simplificado em Python. Usaremos a API AWS Bedrock (via Boto3 SDK) para enviar um documento PDF junto com uma pergunta para que o modelo responda.

```
            
import base64
import base64
import json
import boto3

# Initialize Bedrock runtime client (adjust region as needed)
client = boto3.client("bedrock-runtime", region_name="us-east-1")

MODEL_ID = "us.amazon.nova-lite-v1:5"  # using Nova Lite model in this example

# Read the document file (PDF) in binary mode
with open("my_document.pdf", "rb") as file:
    doc_bytes = file.read()

# Construct the conversation messages with document + question
messages = [
    {
        "role": "user",
        "content": [
            {
                "document": {
                    "format": "pdf",
                    "name": "Document1",  # neutral name for the document
                    "source": {
                        "bytes": doc_bytes  # embedding the PDF content directly
                    }
                }
            },
            {
                "text": "Here is a question about the document: ... (your question) ... ?"
            }
        ]
    }
]

# Set inference parameters (optional)
inf_params = {"maxTokens": 4000, "topP": 0.1, "temperature": 0.3}

# Invoke the model
response = client.converse(modelId=MODEL_ID, messages=messages, inferenceConfig=inf_params)

# Extract and print the answer
answer_text = response["output"]["message"]["content"][0]["text"]
print(answer_text)
```

Se seus arquivos de entrada forem grandes (excedendo o limite de upload direto de 25 MB) ou se você tiver muitos arquivos, é possível armazená-los no Amazon S3 e referenciá-los. Isso evita o envio de bytes brutos por meio da solicitação. Ao usar o S3, certifique-se de que o serviço Bedrock tenha permissão para acessar o bucket/objeto. Por exemplo, para referenciar um PDF no S3, a fonte do documento usaria “S3Location” em vez de “bytes”, da seguinte forma:

```
messages = [
    {
        "role": "user",
        "content": [
            {
                "document": {
                    "format": "pdf",
                    "name": "Report2023",
                    "source": {
                        "s3Location": {
                            "uri": "s3://your-bucket/path/to/document1.pdf",
                            "bucketOwner": "123456789012"
                        }
                    }
                }
            },
            {
                "text": "Summarize the key findings from the Q3 2023 report."
            }
        ]
    }
]
```

**nota**  
Os nomes dos documentos podem incluir apenas caracteres alfanuméricos, hifens, parênteses e colchetes.  
O campo `name` é vulnerável a injeções de prompt, porque o modelo pode interpretá-lo como instruções de forma inadvertida. Por isso, é recomendável especificar um nome neutro.

# Tratamento de erros
<a name="text-error-handing"></a>

A forma como os erros são comunicados ao cliente varia de acordo com o tipo de erro que ocorre. Nesta seção, focamos somente as condições de erro que são exclusivas do modelo do Amazon Nova. Os três principais tipos de erros que você deverá tratar no código da aplicação são: erros de **validação de entrada**, erros de **deflexão de entrada de IA responsável (RAI)** e erros de **deflexão de saída de RAI**.

**Validação de entrada:** erros de validação de entrada ocorrem quando você usa um valor não compatível com um parâmetro de entrada. Por exemplo, um valor de temperatura fora dos limites normais ou um formato incorreto da `image` de entrada. Todos os erros de validação de entrada são expressos como uma **ValidationException**, que contém uma string de mensagem descrevendo a causa do problema.

Os erros de **deflexão de entrada de RAI** ocorrem quando se determina que qualquer um dos valores de texto ou imagens de entrada viola a política de IA responsável da AWS. Esses erros são expressos como uma **ValidationException** com uma das seguintes mensagens:
+ Mensagem de validação de **texto de entrada**: “This request has been blocked by our content filters. Please adjust your text prompt to submit a new request.”
+ Mensagem de validação da **imagem de entrada**: “This request has been blocked by our content filters. Please adjust your input image to submit a new request.”
+ Mensagem de validação do **vídeo de entrada**: “This request has been blocked by our content filters. Please adjust your input video to submit a new request.”

Os erros de deflexão de saída de RAI ocorrem quando uma saída é gerada, mas é determinado que ela não está alinhada com a política de IA responsável da AWS. Quando isso ocorre, uma exceção não é usada. Em vez disso, uma resposta bem-sucedida é retornada e sua estrutura contém um campo `error` que é uma string com um dos seguintes valores:
+ Mensagem de validação do **texto de saída**: “The generated text has been blocked by our content filters.”