

# Esquema de solicitud completo
<a name="complete-request-schema"></a>

El esquema de solicitud es prácticamente idéntico entre la API de Invoke (de transmisión y sin transmisión) y la API de Converse. Existen diferencias sutiles relacionadas con la codificación de la carga útil de imágenes y videos. Dado que Amazon Nova Micro no admite imágenes o videos como entrada, esas partes del esquema de solicitud no se aplican a Amazon Nova Micro. Por lo demás, el esquema de solicitud es el mismo para todos los modelos de comprensión de Amazon Nova.

**importante**  
El tiempo de espera para las llamadas de inferencia a Amazon Nova es de 60  minutos. De forma predeterminada, los clientes del SDK de AWS agotan el tiempo de espera después de 1 minuto. Le recomendamos que aumente el período de tiempo de espera de lectura de su cliente del SDK de AWS a, al menos, 60 minutos. Por ejemplo, en el SDK botocore de Python de AWS, cambie el valor del campo `read_timeout` en [botocore.config](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html#) a, al 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
      }
    }
}
```

Los siguientes parámetros son obligatorios:
+ `system`: (opcional) es la petición del sistema para la solicitud.

  Una petición del sistema le permite proporcionar contexto e instrucciones a Amazon Nova, por ejemplo, especificar un objetivo o rol en particular.
+ `messages`: (obligatorio) los mensajes de entrada.
  + `role`: es el rol del turno de conversación. Los valores válidos son `user` y `assistant`.
  + `content`: (obligatorio) una lista de objetos [ContentBlock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ContentBlock.html) que contienen contenido para la conversación. Cada objeto contiene una clave que especifica el tipo de contenido (`text`, `image`, `video` o `audio`). El valor del objeto depende del tipo de clave. Se admiten los siguientes tipos para la llave:
    + `text`: se asigna a un objeto que contiene un solo campo, `text`, cuyo valor es la petición textual para el turno conversacional. Si el turno conversacional también incluye un objeto `image` o `video`, el objeto `text` se interpreta como una petición de texto que acompaña a la imagen o al video.
    + `image`: (no compatible con Amazon Nova Micro) se asigna a un objeto que representa el contenido de una imagen y que contiene los siguientes campos:
      + `format`: (obligatorio) el formato de la imagen. Puede especificar los siguientes formatos de imagen:
        + `jpeg`
        + `png`
        + `webp`
        + `gif`
      + `source`: (obligatorio) los datos de la imagen. Para la API de Invoke, debe ser una cadena de imagen codificada en Base64. Para la API de Converse, debe ser una matriz de bytes.
      + `bytes`: (obligatorio) los datos de la imagen. Para la API de Invoke, debe ser una cadena de imagen codificada en Base64. Para la API de Converse, debe ser una matriz de bytes.
    + `video`: (no compatible con Amazon Nova Micro) se asigna a un objeto que representa contenido de video y que contiene los siguientes campos:
      + `format`: (obligatorio) el formato del video. Puede especificar los valores siguientes:
        + `mkv`
        + `mov`
        + `mp4`
        + `webm`
        + `three_gp`
        + `flv`
        + `mpeg`
        + `mpg`
        + `wmv`
      + `source`: (obligatorio) la fuente de los datos del video. Puede especificar un URI de Amazon S3 o los bytes del archivo de video en la solicitud.
        + `uri`: (obligatorio) el URI de Amazon S3 del archivo de video. Por ejemplo: ., `“s3://my-bucket/object-key”`
        + `bucketOwner`: (opcional) el ID de la cuenta propietaria del bucket. Utilice esta opción si invocará el modelo desde una cuenta independiente.
        + `bytes`: (obligatorio) los datos del video. Para la API de Invoke, debe ser una cadena de video codificada en Base64. Para la API de Converse, debe ser una matriz de bytes.
    + `audio`: (únicamente) se asigna a un objeto que representa el contenido de audio y que contiene los siguientes campos:
      + `format`: (obligatorio) el formato del audio. Puede especificar los valores siguientes:
        + `aac`
        + `flac`
        + `mkv`
        + `mp3`
        + `mp4`
        + `ogg`
        + `opus`
        + `wav`
      + `source`: (obligatorio) el origen de los datos del audio. Puede especificar un URI de Amazon S3 o los bytes del archivo de audio en la solicitud.
        + `uri`: (obligatorio) el URI de Amazon S3 del archivo de audio. Por ejemplo: ., `"s3://my-bucket/object-key"`
        + `bucketOwner`: (opcional) el ID de la cuenta propietaria del bucket. Utilice esta opción si invocará el modelo desde una cuenta independiente.
        + `bytes`: (obligatorio) los datos del audio. Para la API de Invoke, debe ser una cadena de audio codificada en Base64. Para la API de Converse, debe ser una matriz de bytes.
+ `inferenceConfig:` Estos son valores de configuración de inferencia que se pueden pasar en la inferencia.
  + `maxTokens`: (opcional) el número máximo de tokens que se generarán antes de detenerse.

    Tenga en cuenta que es posible que los modelos de Amazon Nova dejen de generar tokens antes de alcanzar el valor de `maxTokens`. El valor máximo de tokens nuevos permitido es de 5000.
  + `temperature`: (opcional) la cantidad de asignación al azar que se inyecta en la respuesta. Los valores válidos están entre 0,00001 y 1, inclusive. El valor predeterminado es 0,7.
  + `topP`: (opcional) utilización de muestreo de núcleo.

    Amazon Nova calcula la distribución acumulada entre todas las opciones de cada token subsiguiente en orden de probabilidad decreciente y la corta cuando alcanza una probabilidad determinada especificada por `topP`. Debe modificar `temperature` o `topP`, pero no ambos. Los valores válidos están entre 0 y 1, inclusive. El valor predeterminado es 0,9.
  + `topK`: (opcional) solo una muestra de las opciones K superior para cada token subsiguiente.

    Use el parámetro `topK` para eliminar las respuestas de baja probabilidad de cola larga. Los valores válidos se encuentran entre 0 y 128. El valor predeterminado es que este parámetro no se utilice.
**nota**  
Al utilizar la API de Converse con el parámetro `topK`, se debe incluir un parámetro `inferenceConfig` adicional en un campo `additionalModelRequestFields`. Consulte [Uso de la API de Converse](using-converse-api.md) para ver un ejemplo de cómo se pasan estos parámetros.
  + `stopSequences`: (opcional) matriz de cadenas que contiene secuencias de detención. Si el modelo genera alguna de esas cadenas, la generación se detendrá y se devolverá la respuesta hasta ese punto.
  + `reasoningConfig`: (solo Amazon Nova Pro y Amazon Nova Lite) los valores de configuración del razonamiento que pueden pasarse durante la inferencia.
    + `type`: (opcional) si se activa o desactiva el razonamiento. Las opciones válidas son `enabled` o `disabled`. El valor predeterminado es `disabled`.
    + `maxReasoningEffort`: el esfuerzo computacional usado en el proceso de razonamiento. Las opciones válidas son `low`, `medium` o `high`. En la transmisión continua, cuando se usan los niveles de esfuerzo `low` y `medium`, el contenido del razonamiento se transmite a medida que se genera cada token al usar `ConverseStream`. Sin embargo, el nivel `high` funciona de forma diferente, ya que se aplican diferentes enfoques para mejorar la calidad, lo que da como resultado que todo el contenido del razonamiento se muestre en un fragmento final.
**nota**  
Al usar la API de Converse con el parámetro `reasoningConfig`, este debe colocarse en el campo `additionalModelRequestFields`. Consulte [Uso de la API de Converse](using-converse-api.md) para ver un ejemplo de cómo se pasan estos parámetros.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/nova/latest/userguide/complete-request-schema.html)
+ `toolConfig`: (opcional) objeto JSON que sigue el [esquema ToolConfig](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ToolConfiguration.html), que contiene la especificación de la herramienta y la elección de la herramienta. Este esquema es el mismo que sigue [la API de Converse](https://docs.aws.amazon.com/bedrock/latest/userguide/tool-use.html).
  + `toolChoice`: (opcional) especifica qué herramientas puede usar el modelo. Puede seleccionar entre tres opciones:
    + `auto`: el modelo decide automáticamente si usar herramientas y qué herramientas usar.
    + `any`: el modelo debe utilizar al menos una de las herramientas proporcionadas.
    + `tool`: el modelo debe utilizar la herramienta específica identificada por su nombre.

# Aspectos destacados de la estructura de la respuesta
<a name="complete-request-schema-response"></a>

A continuación se muestran los elementos clave de la estructura de la respuesta devuelta por las funciones `Converse` y `InvokeModel` que no transmiten de forma continua. Para obtener información sobre la estructura de respuesta completa, así como sobre las estructuras de solicitud y respuesta de las funciones de transmisión continua, consulte la documentación de la API.

```
{
    "ResponseMetadata": {
        "RequestId": string,
        "HTTPStatusCode": int,
        "HTTPHeaders": {
            "date": string,
            "content-type": "application/json",
            "content-length": string,
            "connection": "keep-alive",
            "x-amzn-requestid": string
        },
        "RetryAttempts": 0
    },
    "output": {
        "message": {
            "role": "assistant",
            "content": [
                { // Optional
                    "reasoningContent": {
                        "reasoningText": {
                            "text": string
                        }
                    }
                },
                { // Optional
                    "toolUse": {
                        "toolUseId": string,
                        "name": string,
                        "input": object
                    }
                },
                { // Optional
                    "text": string
                },
                { // Optional
                    "image": {
                        "format": "png",
                        "source": {
                            "bytes": {
                                "bytes": image // Binary array (Converse API) or Base64-encoded string (Invoke API)
                            }
                        }
                    }
                }
            ]
        }
    },
    "stopReason": string, // "end_turn" | "content_filtered" | "max_tokens" | "malformed_model_output" | "malformed_tool_use" | etc.
    "usage": {
        "inputTokens": int,
        "outputTokens": int,
        "totalTokens": int
    },
    "metrics": {
        "latencyMs": int
    }
}
```

A continuación, se muestran los elementos clave de la respuesta:
+ `output`: (obligatorio) contiene el mensaje de respuesta del modelo.
  + `message`: (obligatorio) el mensaje de respuesta del asistente.
    + `content`: (obligatorio) Una matriz de uno o más bloques de contenido que pueden incluir lo siguiente:
      + `reasoningContent`: (opcional) se devuelve si se ha activado el razonamiento. Contiene el texto del razonamiento, que siempre aparecerá como `[REDACTED]` en la respuesta.
      + `toolUse`: (opcional) se devuelve si se ha llamado a una herramienta. Contiene el ID de uso de la herramienta, el nombre y los argumentos de entrada.
      + `text`: (opcional) se devuelve si el modelo respondió con contenido de texto.
      + `image`: (solo opcional) se devuelve si el modelo generó una imagen. El formato siempre será PNG para las imágenes generadas.
+ `stopReason`: (obligatorio) un valor enum que indica el motivo por el que el modelo dejó de generar el resultado. Los valores compatibles incluyen los siguientes:
  + `end_turn`: se ha alcanzado el final lógico del turno.
  + `max_tokens`: la salida alcanzó el límite de `maxTokens` establecido por el usuario o el límite máximo de tokens de salida del modelo.
  + `content_filtered`: el resultado del modelo infringió la política de IA responsable de AWS.
  + `malformed_model_output`: el modelo produjo un resultado no válido.
  + `malformed_tool_use`: el modelo produjo un resultado de `toolUse` no válido.
  + `service_unavailable`: no se pudo acceder a uno de los servicios de herramientas integradas.
  + `invalid_query`: la consulta que el modelo envió a la herramienta Web Grounding integrada no era válida.
  + `max_tool_invocations`: indica que se llamó a una herramienta integrada, pero no se obtuvo un resultado válido, incluso después de varios intentos.
+ `usage`: (obligatorio) información sobre el uso de los tokens, lo que incluye los tokens de entrada, los tokens de salida y el total de tokens.
+ `metrics`: (obligatorio) métricas de rendimiento, lo que incluye la latencia total de inferencia en milisegundos.