

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Mediante la API de Converse
<a name="conversation-inference-call"></a>

Para usar la API Converse, debe llamar a las operaciones `Converse` o `ConverseStream` para enviar mensajes a un modelo. Para llamar a `Converse` se requiere permiso para la operación `bedrock:InvokeModel`. Para llamar a `ConverseStream` se requiere permiso para la operación `bedrock:InvokeModelWithResponseStream`.

**Topics**
+ [Solicitud](#conversation-inference-call-request)
+ [Respuesta](#conversation-inference-call-response)

**nota**  
Se aplican restricciones a las siguientes operaciones: InvokeModel, InvokeModelWithResponseStream, Converse y ConverseStream. Consulta las [restricciones de la API](inference-api-restrictions.md) para obtener más información.

## Solicitud
<a name="conversation-inference-call-request"></a>

Cuando realiza una solicitud [Converse](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html) con un [punto de conexión en tiempo de ejecución de Amazon Bedrock](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#br-rt), puede incluir los siguientes campos:
+ **modelId:** parámetro obligatorio del encabezado que permite especificar el recurso que se va a utilizar para la inferencia.
+ Los siguientes campos permiten personalizar la petición:
  + **messages**: se utiliza para especificar el contenido y el rol de las peticiones.
  + **system**: se utiliza para especificar las peticiones del sistema, que definen las instrucciones o el contexto del modelo.
  + **inferenceConfig**: se utiliza para especificar los parámetros de inferencia que son comunes a todos los modelos. Los parámetros de inferencia influyen en la generación de la respuesta.
  + **additionalModelRequestCampos**: se utilizan para especificar los parámetros de inferencia que son específicos del modelo con el que se ejecuta la inferencia.
  + **promptVariables**: (si utiliza una petición de Administración de peticiones) Utilice este campo para definir las variables de la petición que se van a rellenar y los valores con los que se van a rellenar.
+ Los siguientes campos permiten personalizar la forma en que se devuelve la respuesta:
  + **guardrailConfig**: utilice este campo para incluir una barrera de protección que se aplique a toda la petición.
  + **toolConfig**: utilice este campo para incluir una herramienta que ayude a un modelo a generar respuestas.
  + **additionalModelResponseFieldPaths**— Utilice este campo para especificar los campos que se devolverán como un objeto puntero JSON.
  + **ServiceTier**: utilice este campo para especificar el nivel de servicio de una solicitud concreta
+ **requestMetadata**: utilice este campo para incluir los metadatos que se pueden filtrar al utilizar los registros de invocación.

**nota**  
Se aplican las siguientes restricciones cuando se utiliza una petición de Administración de peticiones con `Converse` o `ConverseStream`:  
No puede incluir los campos `additionalModelRequestFields`, `inferenceConfig`, `system` ni `toolConfig`.
Si incluye el campo `messages`, los mensajes se anexan después de los mensajes definidos en la petición.
Si incluye el campo `guardrailConfig`, la barrera de protección se aplica a toda la petición. Si incluye `guardContent` bloques en el [ContentBlock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ContentBlock.html)campo, la barandilla solo se aplicará a esos bloques.

Expanda una sección para obtener más información sobre un campo del cuerpo de la solicitud `Converse`:

### Mensajes
<a name="converse-messages"></a>

El campo `messages` es una matriz de objetos [Message](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Message.html), cada uno de los cuales define un mensaje entre el usuario y el modelo. Un objeto `Message` contiene los siguientes campos:
+ **role**: define si el mensaje proviene de `user` (la petición enviada al modelo) o `assistant` (la respuesta del modelo).
+ **content**: define el contenido de la petición.
**nota**  
Amazon Bedrock no almacena ningún texto, imagen ni documento que proporcione como contenido. Los datos solo se utilizan para generar la respuesta.

Para mantener el contexto de la conversación, incluya todos los mensajes de la conversación en solicitudes `Converse` posteriores y utilice el campo `role` para especificar si el mensaje proviene del usuario o del modelo.

El `content` campo se asigna a una matriz de [ContentBlock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ContentBlock.html)objetos. Dentro de cada uno de ellos [ContentBlock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ContentBlock.html), puede especificar uno de los siguientes campos (para ver qué modelos admiten qué bloques, consulte [los modelos de un vistazo](model-cards.md)):

------
#### [ text ]

El campo `text` se asigna a una cadena que especifica la petición. El `text` campo se interpreta junto con otros campos que se especifican en el mismo [ContentBlock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ContentBlock.html).

A continuación, se muestra un objeto [Message](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Message.html) con una `content` matriz que contiene solo un texto [ContentBlock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ContentBlock.html):

```
{
    "role": "user",
    "content": [
        {
            "text": "string"
        }
    ]
}
```

------
#### [ image ]

El `image` campo se asigna a un [ImageBlock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ImageBlock.html). Transfiera los bytes sin procesar, codificados en base64, a una imagen del campo `bytes`. Si utilizas un AWS SDK, no necesitas codificar los bytes en base64.

Si excluye el campo `text`, el modelo describirá la imagen.

A continuación, se muestra un ejemplo de objeto [Message](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Message.html) con una `content` matriz que contiene solo una imagen: [ContentBlock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ContentBlock.html)

```
{
    "role": "user",
    "content": [
        {
            "image": {
                "format": "png",
                "source": {
                    "bytes": "image in bytes"
                }
            }
        }
    ]
}
```

También puede especificar un URI de Amazon S3 en lugar de pasar los bytes directamente al cuerpo de la solicitud. A continuación, se muestra un objeto `Message` de ejemplo con una matriz de contenido que contiene el origen pasado a través de un URI de Amazon S3.

```
{
    "role": "user",
    "content": [
        {
            "image": {
                "format": "png",
                "source": {
                    "s3Location": {
                        "uri": "s3://amzn-s3-demo-bucket/myImage",
                        "bucketOwner": "111122223333"
                    }
                }
            }
        }
    ]
}
```

------
#### [ document ]

El `document` campo se asigna a un [DocumentBlock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_DocumentBlock.html). Si incluye un `DocumentBlock`, compruebe que su solicitud cumpla las siguientes restricciones:
+ En el campo `content` del objeto [Message](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Message.html), también debe incluir un campo `text` con una petición relacionada con el documento.
+ Transfiera los bytes sin procesar, codificados en base64, a un documento en el campo `bytes`. Si utiliza un AWS SDK, no necesita codificar los bytes del documento en base64.
+ El campo `name` solo puede contener los siguientes caracteres:
  + Caracteres alfanuméricos
  + Caracteres en blanco (no más de uno en una fila)
  + Guiones
  + Paréntesis
  + Corchetes
**nota**  
El campo `name` es vulnerable a las inyecciones de peticiones, ya que el modelo podría interpretarlas como instrucciones por error. Por lo tanto, le recomendamos que especifique un nombre neutro.

Al usar un documento, puede habilitar la etiqueta `citations`, que proporcionará citas específicas del documento en respuesta a la llamada a la API. Consulte la [DocumentBlock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_DocumentBlock.html)API para obtener más detalles.

A continuación, se muestra un ejemplo de objeto [Message](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Message.html) con una `content` matriz que contiene solo un documento [ContentBlock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ContentBlock.html)y el texto adjunto obligatorio [ContentBlock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ContentBlock.html).

```
{
    "role": "user",
    "content": [
        {
            "text": "string"
        },
        {
            "document": {
                "format": "pdf",
                "name": "MyDocument",
                "source": {
                    "bytes": "document in bytes"
                }
            }
        }
    ]
}
```

También puede especificar un URI de Amazon S3 en lugar de pasar los bytes directamente al cuerpo de la solicitud. A continuación, se muestra un objeto `Message` de ejemplo con una matriz de contenido que contiene el origen pasado a través de un URI de Amazon S3.

```
{
    "role": "user",
    "content": [
        {
            "text": "string"
        },
        {
            "document": {
                "format": "pdf",
                "name": "MyDocument",
                "source": {
                    "s3Location": {
                      "uri": "s3://amzn-s3-demo-bucket/myDocument",
                      "bucketOwner": "111122223333"
                    }
                }
            }
        }
    ]
}
```

------
#### [ video ]

El `video` campo se asigna a un [VideoBlock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_VideoBlock.html)objeto. Pase los bytes sin procesar, codificados en base64, al campo `bytes`. Si usa el AWS SDK, no necesita codificar los bytes en base64.

Si no incluye el campo `text`, el modelo describirá el vídeo.

A continuación, se muestra un ejemplo de objeto [Message](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Message.html) con una `content` matriz que contiene solo un vídeo. [ContentBlock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ContentBlock.html)

```
{
    "role": "user",
    "content": [
        {
            "video": {
                "format": "mp4",
                "source": {
                    "bytes": "video in bytes"
                }
            }
        }
    ]
}
```

También puede especificar un URI de Amazon S3 en lugar de pasar los bytes directamente al cuerpo de la solicitud. A continuación, se muestra un objeto `Message` de ejemplo con una matriz de contenido que contiene el origen pasado a través de un URI de Amazon S3.

```
{
    "role": "user",
    "content": [
        {
            "video": {
                "format": "mp4",
                "source": {
                    "s3Location": {
                        "uri": "s3://amzn-s3-demo-bucket/myVideo",
                        "bucketOwner": "111122223333"
                    }
                }
            }
        }
    ]
}
```

**nota**  
El rol asumido debe tener el permiso `s3:GetObject` para el URI de Amazon S3. El campo `bucketOwner` es opcional, pero debe especificarse si la cuenta que realiza la solicitud no es propietaria del bucket en el que se encuentra el URI de Amazon S3. Para obtener más información, consulte [Configuración del acceso a buckets de Amazon S3](s3-bucket-access.md).

------
#### [ cachePoint ]

Puede añadir puntos de comprobación de caché en forma de bloque en un mensaje junto con la petición correspondiente. Para ello, utilice los campos `cachePoint` para usar el almacenamiento en caché de peticiones. El almacenamiento en caché de peticiones es una característica que le permite empezar a almacenar en caché el contexto de las conversaciones para ahorrar costos y latencia. Para obtener más información, consulte [Almacenamiento en caché de peticiones para una inferencia de modelos más rápida](prompt-caching.md).

A continuación se muestra un ejemplo de objeto [Message](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Message.html) con una `content` matriz que contiene un documento [ContentBlock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ContentBlock.html)y el texto correspondiente obligatorio [ContentBlock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ContentBlock.html), así como un **CachePoint** que añade el contenido del documento y del texto a la caché.

```
{
    "role": "user",
    "content": [
        {
            "text": "string"
        },
        {
            "document": {
                "format": "pdf",
                "name": "string",
                "source": {
                    "bytes": "document in bytes"
                }
            }
        },
        {
            "cachePoint": {
                "type": "default"
            }
        }
    ]
}
```

------
#### [ guardContent ]

El `guardContent` campo se asigna a un [GuardrailConverseContentBlock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_GuardrailConverseContentBlock.html)objeto. Puede usar este campo para seleccionar una entrada para que la evalúe la barrera de protección definida en el campo `guardrailConfig`. Si no especifica este campo, la barrera de protección evalúa todos los mensajes del cuerpo de la solicitud. Puede pasar los siguientes tipos de contenido a un `GuardBlock`:
+ **texto**: a continuación se muestra un ejemplo de objeto [Message](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Message.html) con una `content` matriz que contiene solo un texto [GuardrailConverseContentBlock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_GuardrailConverseContentBlock.html):

  ```
  {
      "role": "user",
      "content": [
          {
              "text": "Tell me what stocks to buy.",
              "qualifiers": [
                  "guard_content"
              ]
          }
      ]
  }
  ```

  Usted define el texto que se va a evaluar e incluye los calificadores que desee utilizar como [fundamento contextual](guardrails-contextual-grounding-check.md).
+ **imagen**: a continuación, se muestra un objeto [Message](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Message.html) con una `content` matriz que contiene solo una imagen [GuardrailConverseContentBlock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_GuardrailConverseContentBlock.html):

  ```
  {
      "role": "user",
      "content": [
          {
              "format": "png",
              "source": {
                  "bytes": "image in bytes"
              }
          }
      ]
  }
  ```

  Debe especificar el formato de la imagen y definir la imagen en bytes.

Para obtener más información acerca de las barreras de protección, consulte [Detección y filtrado del contenido dañino mediante Barreras de protección para Amazon Bedrock](guardrails.md).

------
#### [ reasoningContent ]

El `reasoningContent` campo se asigna a [ReasoningContentBlock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ReasoningContentBlock.html). Este bloque incluye contenido sobre el razonamiento llevado a cabo por el modelo para generar la respuesta en el `ContentBlock` adjunto.

A continuación, se muestra un objeto `Message` con una matriz `content` que contiene solo un `ReasoningContentBlock` y un `ContentBlock` de texto adjunto.

```
{
    "role": "user",
    "content": [
        {
            "text": "string"
        },
        {
            "reasoningContent": {
                "reasoningText": {
                    "text": "string",
                    "signature": "string"
                }
                "redactedContent": "base64-encoded binary data object"
            }
        }
    ]
}
```

`ReasoningContentBlock` contiene el razonamiento utilizado para generar el contenido adjunto en el campo `reasoningText`, además de cualquier contenido del razonamiento que haya sido cifrado por el proveedor del modelo por motivos de confianza y seguridad en el campo `redactedContent`.

Dentro del campo `reasoningText`, los campos `text` describen el razonamiento. El campo `signature` es un hash de todos los mensajes de la conversación y una medida de seguridad contra la manipulación del razonamiento utilizado por el modelo. Debe incluir la firma y todos los mensajes anteriores en las solicitudes `Converse` posteriores. Si se cambia alguno de los mensajes, la respuesta produce un error.

------
#### [ toolUse ]

Contiene información sobre la herramienta que debe utilizar el modelo. Para obtener más información, consulte [Uso de una herramienta para completar una respuesta modelo de Amazon Bedrock](tool-use.md).

------
#### [ toolResult ]

Contiene información sobre el resultado del modelo mediante el uso de una herramienta. Para obtener más información, consulte [Uso de una herramienta para completar una respuesta modelo de Amazon Bedrock](tool-use.md).

------

En el siguiente ejemplo de `messages`, el usuario solicita una lista de tres canciones pop y el modelo genera una lista de canciones. 

```
[
    {
        "role": "user",
        "content": [
            {
                "text": "Create a list of 3 pop songs."
            }
        ]
    },
    {
        "role": "assistant",
        "content": [
            {
                "text": "Here is a list of 3 pop songs by artists from the United Kingdom:\n\n1. \"As It Was\" by Harry Styles\n2. \"Easy On Me\" by Adele\n3. \"Unholy\" by Sam Smith and Kim Petras"
            }
        ]
    }
]
```

### sistema
<a name="converse-system"></a>

Una petición del sistema es un tipo de petición que proporciona instrucciones o contexto al modelo acerca de la tarea que debe realizar o el personaje que debe adoptar durante la conversación. Puede especificar una lista de solicitudes del sistema para la solicitud en el campo `system` ([SystemContentBlock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_SystemContentBlock.html)), como se muestra en el siguiente ejemplo.

```
[
    {
        "text": "You are an app that creates play lists for a radio station that plays rock and pop music. Only return song names and the artist. "
    }
]
```

### inferenceConfig
<a name="converse-inference"></a>

La Converse API admite un conjunto básico de parámetros de inferencia que se establecen en el `inferenceConfig` campo () [InferenceConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InferenceConfiguration.html). El conjunto básico de parámetros de inferencia es:
+ **maxTokens**: cantidad máxima de tokens que se permiten en la respuesta generada. 
+ **stopSequences**: lista de secuencias de detención. Una secuencia de detención es una secuencia de caracteres que hace que el modelo deje de generar la respuesta. 
+ **temperature**: probabilidad de que el modelo seleccione las opciones más viables al generar una respuesta. 
+ **topP**: porcentaje de candidatos más probables que el modelo considera para el siguiente token.

Para obtener más información, consulte [Influencia sobre la generación de respuestas con parámetros de inferencia](inference-parameters.md).

En el siguiente ejemplo, el JSON establece el parámetro de inferencia `temperature`. 

```
{"temperature": 0.5}
```

### additionalModelRequestCampos
<a name="converse-additional-model-request-fields"></a>

Si el modelo que utiliza tiene parámetros de inferencia adicionales, puede establecer esos parámetros especificándolos como JSON en el campo `additionalModelRequestFields`. El siguiente ejemplo de JSON muestra cómo configurar `top_k`, que está disponible en los modelos de Anthropic Claude, pero que no es un parámetro de inferencia base en la API de mensajes. 

```
{"top_k": 200}
```

### promptVariables
<a name="converse-prompt-variables"></a>

Si especifica una petición de [Administración de peticiones](prompt-management.md) en el `modelId` como el recurso sobre el que se debe ejecutar la inferencia, utilice este campo para rellenar las variables de la petición con valores reales. El campo `promptVariables` se asigna a un objeto JSON con claves que corresponden a las variables definidas en las peticiones y los valores por los que se van a reemplazar las variables.

Por ejemplo, supongamos que tiene una petición que dice **Make me a *\$1\$1genre\$1\$1* playlist consisting of the following number of songs: *\$1\$1number\$1\$1*.**. El ID de la petición es `PROMPT12345` y su versión es `1`. Puede enviar la siguiente solicitud `Converse` para reemplazar las variables:

```
POST /model/arn:aws:bedrock:us-east-1:111122223333:prompt/PROMPT12345:1/converse HTTP/1.1
Content-type: application/json

{
   "promptVariables": { 
      "genre": {
         "text": "pop"
      },
      "number": {
         "text": "3"
      }
   }
}
```

### guardrailConfig
<a name="converse-guardrail"></a>

Puede aplicar una barrera de protección que haya creado con [Barreras de protección para Amazon Bedrock](guardrails.md) incluyendo este campo. Para aplicar la barrera a un mensaje específico de la conversación, incluye el mensaje en un. [GuardrailConverseContentBlock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_GuardrailConverseContentBlock.html) Si no incluye ningún `GuardrailConverseContentBlock` en el cuerpo de la solicitud, la barrera de protección se aplicará a todos los mensajes del campo `messages`. Para ver un ejemplo, consulta [Inclusión de una barrera de protección con la API Converse](guardrails-use-converse-api.md).

### toolConfig
<a name="converse-tool"></a>

Este campo le permite definir una herramienta para que el modelo la utilice para ayudar a generar una respuesta. Para obtener más información, consulte [Uso de una herramienta para completar una respuesta modelo de Amazon Bedrock](tool-use.md).

### additionalModelResponseFieldPaths
<a name="converse-additional-model-response-field-paths"></a>

También puede especificar las rutas de los parámetros del modelo adicionales en el campo `additionalModelResponseFieldPaths`, tal como se muestra en el siguiente ejemplo.

```
[ "/stop_sequence" ]
```

La API devuelve los campos adicionales que solicite en el campo `additionalModelResponseFields`. 

### requestMetadata
<a name="converse-request-metadata"></a>

Este campo se asigna a un objeto JSON. Puede especificar las claves y los valores de metadatos a los que se asignan dentro de este objeto. Puede usar los metadatos de las solicitudes para filtrar los registros de invocación del modelo.

### Nivel de servicio
<a name="inference-service-tiers"></a>

Este campo se asigna a un objeto JSON. Puede especificar el nivel de servicio para una solicitud concreta.

En el siguiente ejemplo, se muestra la `serviceTier` estructura:

```
"serviceTier": {
  "type": "reserved" | "priority" | "default" | "flex"
}
```

Para obtener información detallada sobre los niveles de servicio, incluidas las características de precio y rendimiento, consulte[Niveles de servicio para optimizar el rendimiento y los costes](service-tiers-inference.md).

Si lo desea, también puede añadir puntos de comprobación de caché a los campos `tools` o `system` para utilizar el almacenamiento en caché de peticiones, según el modelo que utilice. Para obtener más información, consulte [Almacenamiento en caché de peticiones para una inferencia de modelos más rápida](prompt-caching.md).

## Respuesta
<a name="conversation-inference-call-response"></a>

La respuesta que reciba de la API Converse depende de la operación a la que llame: `Converse` o `ConverseStream`.

**Topics**
+ [Respuesta de Converse](#conversation-inference-call-response-converse)
+ [ConverseStream respuesta](#conversation-inference-call-response-converse-stream)

### Respuesta de Converse
<a name="conversation-inference-call-response-converse"></a>

En la respuesta de`Converse`, el `output` campo ([ConverseOutput](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ConverseOutput.html)) contiene el mensaje ([Mensaje](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Message.html)) que genera el modelo. El contenido del mensaje está en el campo `content` ([ContentBlock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ContentBlock.html)) y el rol (`user`o`assistant`) al que corresponde el mensaje está en el `role` campo. 

Si usó el [almacenamiento en caché de peticiones](prompt-caching.md), en el campo de uso, `cacheReadInputTokensCount` y `cacheWriteInputTokensCount` le indicarán cuántos tokens en total se leyeron de la caché y se escribieron en ella, respectivamente.

Si usó [niveles de servicio](#inference-service-tiers), en el campo de respuesta, se `service tier` le indicará qué nivel de servicio se usó para la solicitud.

El `metrics` campo ([ConverseMetrics](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ConverseMetrics.html)) incluye las métricas de la llamada. Para determinar por qué el modelo ha dejado de generar contenido, compruebe el campo `stopReason`. Para obtener información sobre los tokens transferidos al modelo en la solicitud y los tokens generados en la respuesta, marque el `usage` campo ([TokenUsage](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_TokenUsage.html)). Si ha especificado campos de respuesta adicionales en la solicitud, la API los devolverá como JSON en el campo `additionalModelResponseFields`. 

En el siguiente ejemplo se muestra la respuesta de `Converse` al pasar la petición descrita en [Solicitud](#conversation-inference-call-request).

```
{
    "output": {
        "message": {
            "role": "assistant",
            "content": [
                {
                    "text": "Here is a list of 3 pop songs by artists from the United Kingdom:\n\n1. \"Wannabe\" by Spice Girls\n2. \"Bitter Sweet Symphony\" by The Verve \n3. \"Don't Look Back in Anger\" by Oasis"
                }
            ]
        }
    },
    "stopReason": "end_turn",
    "usage": {
        "inputTokens": 125,
        "outputTokens": 60,
        "totalTokens": 185
    },
    "metrics": {
        "latencyMs": 1175
    }
}
```

### ConverseStream respuesta
<a name="conversation-inference-call-response-converse-stream"></a>

Si llama a `ConverseStream` para transmitir la respuesta de un modelo, la transmisión se devuelve en el campo de respuesta `stream`. La transmisión emite los siguientes eventos en este orden.

1. `messageStart`([MessageStartEvent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_MessageStartEvent.html)). El evento de inicio de un mensaje. Incluye el rol del mensaje.

1. `contentBlockStart`([ContentBlockStartEvent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ContentBlockStartEvent.html)). Un evento de inicio de un bloque de contenido. Solo para uso de la herramienta. 

1. `contentBlockDelta`([ContentBlockDeltaEvent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ContentBlockDeltaEvent.html)). Un evento delta de bloques de contenido. Incluye uno de los siguientes:
   + `text`: el texto parcial que genera el modelo.
   + `reasoningContent`: el razonamiento parcial llevado a cabo por el modelo para generar la respuesta. Debe enviar el elemento `signature` devuelto, además de todos los mensajes anteriores en solicitudes `Converse` posteriores. Si se cambia alguno de los mensajes, la respuesta produce un error.
   + `toolUse`: el objeto JSON de entrada parcial para el uso de herramientas.

1. `contentBlockStop`([ContentBlockStopEvent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ContentBlockStopEvent.html)). Un evento de interrupción del bloqueo de contenido.

1. `messageStop`([MessageStopEvent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_MessageStopEvent.html)). El evento de parada del mensaje. Incluye el motivo por el que el modelo ha dejado de generar resultados. 

1. `metadata`([ConverseStreamMetadataEvent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ConverseStreamMetadataEvent.html)). Metadatos de la solicitud. Los metadatos incluyen el uso del token en `usage` ([TokenUsage](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_TokenUsage.html)) y las métricas de la llamada en `metrics` ([ConverseStreamMetadataEvent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ConverseStreamMetadataEvent.html)).

ConverseStream transmite un bloque de contenido completo como un `ContentBlockStartEvent` evento, uno o más `ContentBlockDeltaEvent` eventos y un `ContentBlockStopEvent` evento. Use el campo `contentBlockIndex` como índice para correlacionar los eventos que componen un bloque de contenido.

El siguiente ejemplo es una respuesta parcial desde `ConverseStream`. 

```
{'messageStart': {'role': 'assistant'}}
{'contentBlockDelta': {'delta': {'text': ''}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'text': ' Title'}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'text': ':'}, 'contentBlockIndex': 0}}
.
.
.
{'contentBlockDelta': {'delta': {'text': ' The'}, 'contentBlockIndex': 0}}
{'messageStop': {'stopReason': 'max_tokens'}}
{'metadata': {'usage': {'inputTokens': 47, 'outputTokens': 20, 'totalTokens': 67}, 'metrics': {'latencyMs': 100.0}}}
```