

# Esquema completo da solicitação
<a name="complete-request-schema"></a>

O esquema de solicitação é quase idêntico entre a API Invoke (streaming e não streaming) e a API Converse. Há diferenças sutis relacionadas à codificação da carga útil de imagem e vídeo. Como o Amazon Nova Micro não é compatível com imagens ou vídeos como entrada, essas partes do esquema de solicitação não se aplicam ao Amazon Nova Micro. Do contrário, o esquema de solicitação é o mesmo para todos os modelos de compreensão do Amazon Nova.

**Importante**  
O período de tempo limite para chamadas de inferência para o Amazon Nova é de 60 minutos. Por padrão, os clientes do AWS SDK atingem o tempo limite após 1 minuto. Recomendamos que você aumente o período de tempo limite de leitura do seu cliente do AWS SDK para pelo menos 60 minutos. Por exemplo, no SDK botocore do AWS Python, altere o valor do campo `read_timeout` em [botocore.config](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html#) para pelo menos 3600.  

```
client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1",
    config=Config(
        connect_timeout=3600,  # 60 minutes
        read_timeout=3600,     # 60 minutes
        retries={'max_attempts': 1}
    )
)
```

```
{
  "system": [
    {
      "text": "string"
    }
  ],
  "messages": [
    {
      "role": "user", //first turn should always be the user turn
      "content": [
        {
          "text": "string"
        },
        {
          "image": {
            "format": "jpeg" | "png" | "gif" | "webp",
            "source": {
              "bytes": image // Binary array (Converse API) or Base64-encoded string (Invoke API)
            }
          }
        },
        {
          "video": {
            "format": "mkv" | "mov" | "mp4" | "webm" | "three_gp" | "flv" | "mpeg" | "mpg" | "wmv",
            "source": {
              // Option 1: Sending a S3 location 
              "s3Location": {
                "uri": "string", // example: s3://my-bucket/object-key
                "bucketOwner": "string" // (Optional) example: "123456789012"
              },
              // Option 2: Sending file bytes 
              "bytes": video // Binary array (Converse API) or Base64-encoded string (Invoke API)
            }
          }
        },
        {
            "audio": {
                "format": "mp3" | "opus" | "wav" | "aac" | "flac" | "mp4" | "ogg" | "mkv",
                "source": {
                    // Option 1: Sending a S3 location 
                    "s3Location": {
                        "uri": "string", // example: s3://my-bucket/object-key
                        "bucketOwner": "string" // (Optional) example: "123456789012"
                    },
                    // Option 2: Sending file bytes 
                    "bytes": audio // Binary array (Converse API) or Base64-encoded string (Invoke API)
                }
            }
        }
      ]
    },
    {
      "role": "assistant",
      "content": [
        {
          "text": "string" //prefilling assistant turn
        }
      ]
    }
  ],
 "inferenceConfig":{ // all Optional, Invoke parameter names used in this example
    "maxTokens": int, // greater than 0, equal or less than 5k (default: dynamic*)
    "temperature": float, // greater than 0 and less than 1.0 (default: 0.7)
    "topP": float, // greater than 0, equal or less than 1.0 (default: 0.9)
    "topK": int, // 0 or greater (default: 50)
    "stopSequences": ["string"],
    "reasoningConfig": {
        "type": "string", //"enabled"/"disabled" (default: "disabled")
        "maxReasoningEffort": "string" // "low", "medium", "high"
    }
  },
  "toolConfig": { // all Optional
        "tools": [
            {
                "toolSpec": {
                    "name": "string", //meaningful tool name (Max char: 64)
                    "description": "string", //meaningful description of the tool
                    "inputSchema": {
                        "json": { // The JSON schema for the tool. For more information, see JSON Schema Reference
                            "type": "object",
                            "properties": {
                                "arg1": { //arguments 
                                    "type": "string", //argument data type
                                    "description": "string" //meaningful description
                                }
                            },
                            "required": [
                                "string" //args
                            ]
                        }
                    }
                }
            }
        ],
    },
    "toolChoice": { //can select one of three options
      "auto": {},
      "any": {},
      "tool": {
        "name": "string" //name of tool
      }
    }
}
```

Os seguintes parâmetros são obrigatórios:
+ `system`: (opcional) o prompt do sistema para a solicitação.

  Um prompt do sistema é uma maneira de fornecer contexto e instruções para o Amazon Nova, como especificar uma meta ou um perfil específico.
+ `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) uma lista de objetos [ContentBlock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ContentBlock.html) que contêm conteúdo para a conversa. Cada objeto contém uma chave que especifica o tipo de conteúdo (`text`, `image`, `video` ou `audio`). O valor do objeto depende do tipo de chave. Os tipos a seguir são compatíveis com a chave:
    + `text`: mapeia para um objeto que contém um único campo `text`, cujo valor é o prompt textual do turno da conversa. Se a conversa também incluir um objeto `image` ou `video`, o objeto `text` será interpretado como um prompt de texto que acompanha a imagem ou o vídeo.
    + `image`: (não compatível com o Amazon Nova Micro) mapeia para um objeto representando o conteúdo da imagem e inclui os seguintes campos:
      + `format`: (obrigatório) o formato da imagem. Você pode especificar os seguintes formatos de imagem:
        + `jpeg`
        + `png`
        + `webp`
        + `gif`
      + `source`: (obrigatório) os dados da imagem. Para a API Invoke, deve ser uma string de imagem codificada no Base64. Para a API Converse, deve ser uma matriz de bytes.
      + `bytes`: (obrigatório) os dados da imagem. Para a API Invoke, deve ser uma string de imagem codificada no Base64. Para a API Converse, deve ser uma matriz de bytes.
    + `video`: (não compatível com o Amazon Nova Micro) mapeia para um objeto representando conteúdo de vídeo e incluindo os seguintes campos:
      + `format`: (obrigatório) o formato do vídeo. Especifique os seguintes valores:
        + `mkv`
        + `mov`
        + `mp4`
        + `webm`
        + `three_gp`
        + `flv`
        + `mpeg`
        + `mpg`
        + `wmv`
      + `source`: (obrigatório) a fonte dos dados do vídeo. Você pode especificar um URI do Amazon S3 ou os bytes do arquivo de vídeo na solicitação.
        + `uri`: (obrigatório) o URI do Amazon S3 do arquivo de vídeo. Por exemplo, ., `“s3://my-bucket/object-key”`
        + `bucketOwner`: (opcional) o ID da conta à qual o bucket pertence. Use isto se você estiver invocando o modelo de uma conta separada.
        + `bytes`: (obrigatório) os dados do vídeo. Para a API Invoke, deve ser uma string de vídeo codificada no Base64. Para a API Converse, deve ser uma matriz de bytes.
    + `audio`: (somente ) mapeia para um objeto que representa conteúdo de áudio e contém os seguintes campos:
      + `format`: (obrigatório) o formato do áudio. Especifique os seguintes valores:
        + `aac`
        + `flac`
        + `mkv`
        + `mp3`
        + `mp4`
        + `ogg`
        + `opus`
        + `wav`
      + `source`: (obrigatório) a fonte dos dados do áudio. Você pode especificar um URI do Amazon S3 ou os bytes do arquivo de áudio na solicitação.
        + `uri`: (obrigatório) o URI do Amazon S3 do arquivo de áudio. Por exemplo, ., `"s3://my-bucket/object-key"`
        + `bucketOwner`: (opcional) o ID da conta à qual o bucket pertence. Use isto se você estiver invocando o modelo de uma conta separada.
        + `bytes`: (obrigatório) os dados de áudio. Para a API Invoke, deve ser uma string de áudio codificada no Base64. Para a API Converse, deve ser uma matriz de bytes.
+ `inferenceConfig:` são valores de configuração de inferência que podem ser passados na inferência.
  + `maxTokens`: (opcional) o número máximo de tokens a serem gerados antes de parar.

    Observe que os modelos do Amazon Nova podem parar de gerar tokens antes de atingir o valor de `maxTokens`. O valor máximo permitido para novos tokens é 5K.
  + `temperature`: (opcional) o valor de aleatoriedade injetada na resposta. Os valores válidos são entre 0,00001 and 1, inclusive. O valor padrão é 0,7.
  + `topP`: (opcional) use amostragem de núcleo.

    O Amazon Nova calcula a distribuição cumulativa de todas as opções de cada token subsequente em ordem de probabilidade decrescente e a interrompe quando atinge uma determinada probabilidade especificada por `topP`. Você deve alterar `temperature` ou `topP`, mas não ambos. Os valores válidos são entre 0 e 1, inclusive. O valor padrão é 0.9.
  + `topK`: (opcional) somente uma amostragem das opções K principais para cada token subsequente.

    Use o parâmetro `topK` para remover respostas de baixa probabilidade e com final extenso. Os valores válidos são entre 0 e 128. O valor padrão é que esse parâmetro não é usado.
**nota**  
Ao usar a API Converse com o parâmetro `topK`, um parâmetro `inferenceConfig` adicional deve ser incluído em um campo `additionalModelRequestFields`. Confira [Usar a API Converse](using-converse-api.md) para obter um exemplo de como esses parâmetros são passados.
  + `stopSequences`: (opcional) matriz de strings contendo sequências de parada. Se o modelo gerar qualquer uma dessas strings, a geração será interrompida e a resposta será retornada até esse ponto.
  + `reasoningConfig`: (somente Amazon Nova Pro e Amazon Nova Lite) os valores de configuração de raciocínio que podem ser transmitidos em inferência.
    + `type`: (opcional) habilitar ou desabilitar o raciocínio. As opções válidas são `enabled` ou `disabled`. O valor padrão é `disabled`.
    + `maxReasoningEffort`: o esforço computacional usado no processo de raciocínio. As opções válidas são `low`, `medium` ou `high`. No streaming, ao usar as configurações `low` e `medium`, o conteúdo do raciocínio será transmitido à medida que cada token é gerado durante o uso de `ConverseStream`, no entanto, `high` funciona de forma diferente, aplicando abordagens diferentes para melhorar a qualidade, resultando na saída de todo o conteúdo de raciocínio em um só bloco final.
**nota**  
Ao usar a API Converse com o parâmetro `reasoningConfig`, ele deve ser colocado no campo `additionalModelRequestFields`. Confira [Usar a API Converse](using-converse-api.md) para obter um exemplo de como esses parâmetros são passados.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/nova/latest/userguide/complete-request-schema.html)
+ `toolConfig`: (opcional) objeto JSON seguindo o [esquema ToolConfig](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ToolConfiguration.html), contendo a especificação e a escolha da ferramenta. Esse esquema é o mesmo seguido [pela API Converse](https://docs.aws.amazon.com/bedrock/latest/userguide/tool-use.html).
  + `toolChoice`: (Opcional) especifica quais ferramentas o modelo pode usar. É possível selecionar uma entre três opções:
    + `auto`: o modelo decide automaticamente se deve usar ferramentas e quais usar.
    + `any`: o modelo deve usar pelo menos uma das ferramentas fornecidas.
    + `tool`: o modelo deve usar a ferramenta específica identificada pelo nome.