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.
Incluye una barandilla con la API Converse
Puede usar una barrera de protección para proteger las aplicaciones conversacionales que cree con la API de Converse. Por ejemplo, si crea una aplicación de chat con una Converse API, puede usar una barrera para bloquear el contenido inapropiado introducido por el usuario y el contenido inapropiado generado por el modelo. Para obtener información acerca de la API de Converse, consulte Mantén una conversación con las operaciones de la Converse API.
Temas
Llama a la Converse API con barandas
Para usar una barandilla, debes incluir la información de configuración de la barandilla en las llamadas a las operaciones de Converse o ConverseStream(para las respuestas de streaming). Si lo desea, puede seleccionar un contenido específico en el mensaje que desee que evalúe la barrera de protección. Para obtener información sobre los modelos que puedes usar con las barandillas y la API, consulta. Converse Modelos y características del modelo compatibles
Temas
Configure una barandilla para que funcione con la API Converse
La información de configuración de la barandilla se especifica en el parámetro de entrada. guardrailConfig
La configuración incluye el ID y la versión de la barrera de protección que se desea utilizar. También se puede activar el seguimiento de la barrera de protección, que proporciona información sobre el contenido que ha bloqueado la barrera de protección.
Con la Converse
operación, guardrailConfig
es un GuardrailConfigurationobjeto, como se muestra en el siguiente ejemplo.
{ "guardrailIdentifier": "
Guardrail ID
", "guardrailVersion": "Guardrail version
", "trace": "enabled" }
Si lo usasConverseStream
, pasas un GuardrailStreamConfigurationobjeto. Si lo desea, puede usar el campo streamProcessingMode
para especificar que desea que el modelo complete la evaluación de la barrera de protección antes de devolver los fragmentos de respuesta de la transmisión. O bien, puede hacer que el modelo responda de forma asíncrona mientras la barrera de protección continúa con la evaluación en segundo plano. Para obtener más información, consulte Configuración del comportamiento de respuesta de transmisión para filtrar el contenido.
Evalúa solo el contenido específico de un mensaje
Al pasar un mensaje a un modelo, la barandilla evalúa el contenido del mensaje. También puedes evaluar partes específicas de un mensaje mediante el guardContent
campo (). GuardrailConverseContentBlock
sugerencia
El uso del guardContent
campo es similar al uso de etiquetas de entrada con InvokeModely InvokeModelWithResponseStream. Para obtener más información, consulte Aplicación de etiquetas a las entradas de usuarios para filtrar el contenido.
Por ejemplo, la siguiente barandilla evalúa solo el contenido del guardContent
campo y no el resto del mensaje. Esto resulta útil para que la barandilla evalúe solo el mensaje más reciente de una conversación, como se muestra en el siguiente ejemplo.
[ { "role": "user", "content": [ { "text": "Create a playlist of 2 pop songs." } ] }, { "role": "assistant", "content": [ { "text": "Sure! Here are two pop songs:\n1. \"Bad Habits\" by Ed Sheeran\n2. \"All Of The Lights\" by Kanye West\n\nWould you like to add any more songs to this playlist?" } ] }, { "role": "user", "content": [ { "guardContent": { "text": { "text": "Create a playlist of 2 heavy metal songs." } } } ] } ]
Otro caso de uso guardContent
es proporcionar contexto adicional a un mensaje sin que la barandilla evalúe ese contexto. En el siguiente ejemplo, la barandilla solo evalúa "Create a playlist of heavy metal songs"
e ignora el. "Only answer with a list of songs"
messages = [ { "role": "user", "content": [ { "text": "Only answer with a list of songs." }, { "guardContent": { "text": { "text": "Create a playlist of heavy metal songs." } } } ] } ]
Si el contenido no está en un guardContent
bloque, eso no significa necesariamente que no se vaya a evaluar. Este comportamiento depende de las políticas de filtrado que utilice la barandilla.
El siguiente ejemplo muestra dos guardContent
bloques con comprobaciones contextuales de base (basadas en los campos). qualifiers
Las comprobaciones contextuales de la barandilla solo evaluarán el contenido de estos bloques. Sin embargo, si la barandilla también tiene un filtro de palabras que bloquea la palabra «fondo», el texto «Información de fondo adicional». se seguirá evaluando, aunque no esté en un guardContent
bloque.
[{ "role": "user", "content": [{ "guardContent": { "text": { "text": "London is the capital of UK. Tokyo is the capital of Japan.", "qualifiers": ["grounding_source"] } } }, { "text": "Some additional background information." }, { "guardContent": { "text": { "text": "What is the capital of Japan?", "qualifiers": ["query"] } } } ] }]
Proteger un mensaje del sistema enviado a la Converse API
Puedes usar barandillas con las indicaciones del sistema que envíes a la API. Converse Para proteger un indicador del sistema, especifica el campo guardContent
(SystemContentBlock) en el mensaje del sistema que pasas a la API, como se muestra en el siguiente ejemplo.
[ { "guardContent": { "text": { "text": "Only respond with Welsh heavy metal songs." } } } ]
Si no proporciona el campo guardContent
, la barrera de protección no evaluará la petición del sistema.
Comportamiento de la barrera de protección de mensajes y peticiones del sistema
La forma en que la barrera de protección evalúa el campo guardContent
es diferente entre las peticiones del sistema y los mensajes que se transmiten en el mensaje.
El indicador del sistema tiene un bloqueo de barandilla | El indicador del sistema no tiene un bloqueo de barandilla | |
---|---|---|
Los mensajes tienen un bloqueo de barandilla |
Sistema: Guardrail investiga el contenido del bloque Guardrail Mensajes: Guardrail investiga el contenido del bloque Guardrail |
Sistema: la barrera de protección no investiga nada Mensajes: Guardrail investiga el contenido del bloque Guardrail |
Los mensajes no tienen un bloqueo de barandilla |
Sistema: Guardrail investiga el contenido del bloque Guardrail Mensajes: la barrera de protección lo investiga todo |
Sistema: la barrera de protección no investiga nada Mensajes: la barrera de protección lo investiga todo |
Procesar la respuesta cuando se usa la API Converse
Al llamar a la operación Converse, la barrera de protección evalúa el mensaje que envía. Si la barrera de protección detecta contenido bloqueado, ocurrirá lo siguiente.
El campo
stopReason
en la respuesta se establece enguardrail_intervened
.-
Si has activado el rastreo, el rastreo está disponible en el campo
trace
(ConverseTrace). ConConverseStream
, el rastreo está en los metadatos (ConverseStreamMetadataEvent) que devuelve la operación. -
El texto del contenido bloqueado que ha configurado en la barandilla se devuelve en el campo
output
(ConverseOutput). ConConverseStream
, el texto del contenido bloqueado aparece en el mensaje transmitido.
La siguiente respuesta parcial muestra el texto del contenido bloqueado y el seguimiento obtenido de la evaluación de la barrera de protección. La barrera de protección ha bloqueado el término Heavy metal en el mensaje.
{ "output": { "message": { "role": "assistant", "content": [ { "text": "Sorry, I can't answer questions about heavy metal music." } ] } }, "stopReason": "guardrail_intervened", "usage": { "inputTokens": 0, "outputTokens": 0, "totalTokens": 0 }, "metrics": { "latencyMs": 721 }, "trace": { "guardrail": { "inputAssessment": { "3o06191495ze": { "topicPolicy": { "topics": [ { "name": "Heavy metal", "type": "DENY", "action": "BLOCKED" } ] }, "invocationMetrics": { "guardrailProcessingLatency": 240, "usage": { "topicPolicyUnits": 1, "contentPolicyUnits": 0, "wordPolicyUnits": 0, "sensitiveInformationPolicyUnits": 0, "sensitiveInformationPolicyFreeUnits": 0, "contextualGroundingPolicyUnits": 0 }, "guardrailCoverage": { "textCharacters": { "guarded": 39, "total": 72 } } } } } } } }
Ejemplo de código para usar la Converse API con barandas
En este ejemplo, se muestra cómo proteger una conversación con las operaciones Converse
y ConverseStream
. El ejemplo muestra cómo evitar que una modelo cree una lista de reproducción que incluya canciones del género heavy metal.
Protección de una conversación
-
Para crear una barrera de protección, siga las instrucciones en Crea tu barandilla .
-
Nombre: introduzca Heavy metal.
-
Definición del tema: introduzca Avoid mentioning songs that are from the heavy metal genre of music.
-
Agregar frases de ejemplo: introduzca Create a playlist of heavy metal songs.
En el paso 9, indique lo siguiente:
-
Se muestran los mensajes de las peticiones bloqueadas: introduzca Sorry, I can't answer questions about heavy metal music.
-
Mensajes en caso de respuestas bloqueadas: introduzca Sorry, the model generated an answer that mentioned heavy metal music.
Puede configurar otras opciones de barrera de protección, pero no es obligatorio para este ejemplo.
-
-
Para crear una versión de la barrera de protección, siga las instrucciones en Creación de una versión de una barrera de protección.
-
En los siguientes ejemplos de código (Converse y ConverseStream), defina las siguientes variables:
guardrail_id
: ID de la barrera de protección que ha creado en el paso 1.guardrail_version
: versión de la barrera de protección que ha creado en el paso 2.text
: utiliceCreate a playlist of heavy metal songs.
.
-
Ejecute los ejemplos de código. El resultado debe mostrar la evaluación de la barrera de protección y el mensaje de salida
Text: Sorry, I can't answer questions about heavy metal music.
. La evaluación de la entrada de la barrera de protección muestra que el modelo ha detectado el término heavy metal en el mensaje de entrada. -
(Opcional) Compruebe que la barrera de protección bloquee el texto inapropiado que genera el modelo cambiando el valor de
text
por List all genres of rock music. Vuelva a ejecutar los ejemplos. Debería ver una evaluación del resultado en la respuesta.