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
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.
Solicitud
Cuando realiza una solicitud Converse con un punto de conexión en tiempo de ejecución de Amazon Bedrock, 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,systemnitoolConfig. -
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 incluyeguardContentbloques en el ContentBlockcampo, 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:
El campo messages es una matriz de objetos Message, 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) oassistant(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 ContentBlockobjetos. Dentro de cada uno de ellos ContentBlock, puede especificar uno de los siguientes campos (para ver qué modelos admiten qué bloques, consulteModelos y características del modelo compatibles):
nota
Se aplican las siguientes restricciones al campo content:
-
Puede incluir un máximo de 20 imágenes. El tamaño, la altura y la anchura de cada imagen no deben ser superiores a 3,75 MB, 8000 px y 8000 px, respectivamente.
-
Puede incluir hasta cinco documentos. El tamaño de cada documento no debe superar los 4,5 MB.
-
Solo puede incluir imágenes y documentos si el
roleesuser.
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" } ] } ]
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), 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. " } ]
La Converse API admite un conjunto básico de parámetros de inferencia que se establecen en el inferenceConfig campo () InferenceConfiguration. 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.
En el siguiente ejemplo, el JSON establece el parámetro de inferencia temperature.
{"temperature": 0.5}
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}
Si especifica una petición de Administración de peticiones 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 . El ID de la petición es {{genre}} playlist consisting of the following number of songs: {{number}}.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" : "pop", "number": 3 } }
Puede aplicar una barrera de protección que haya creado con Barreras de protección para Amazon Bedrock incluyendo este campo. Para aplicar la barrera a un mensaje específico de la conversación, incluye el mensaje en un. GuardrailConverseContentBlock 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.
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.
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.
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.
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, consulteNiveles de servicio para optimizar el rendimiento y los costes.
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.
Respuesta
La respuesta que reciba de la API Converse depende de la operación a la que llame: Converse o ConverseStream.
Respuesta de Converse
En la respuesta deConverse, el output campo (ConverseOutput) contiene el mensaje (Mensaje) que genera el modelo. El contenido del mensaje está en el campo content (ContentBlock) y el rol (useroassistant) al que corresponde el mensaje está en el role campo.
Si usó el almacenamiento en caché de peticiones, 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, en el campo de respuesta, se service tier le indicará qué nivel de servicio se usó para la solicitud.
El metrics campo (ConverseMetrics) 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). 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.
{ "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
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.
-
messageStart(MessageStartEvent). El evento de inicio de un mensaje. Incluye el rol del mensaje. -
contentBlockStart(ContentBlockStartEvent). Un evento de inicio de un bloque de contenido. Solo para uso de la herramienta. -
contentBlockDelta(ContentBlockDeltaEvent). 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 elementosignaturedevuelto, además de todos los mensajes anteriores en solicitudesConverseposteriores. Si se cambia alguno de los mensajes, la respuesta produce un error. -
toolUse: el objeto JSON de entrada parcial para el uso de herramientas.
-
-
contentBlockStop(ContentBlockStopEvent). Un evento de interrupción del bloqueo de contenido. -
messageStop(MessageStopEvent). El evento de parada del mensaje. Incluye el motivo por el que el modelo ha dejado de generar resultados. -
metadata(ConverseStreamMetadataEvent). Metadatos de la solicitud. Los metadatos incluyen el uso del token enusage(TokenUsage) y las métricas de la llamada enmetrics(ConverseStreamMetadataEvent).
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}}}