Esta página se aplica a Apigee y Apigee Hybrid.
Consulta la documentación de
Apigee Edge.
La política SanitizeModelResponse protege a los clientes de IA del contenido ofensivo o dañino limpiando las respuestas de los modelos de IA generativa. La política usa Model Armor para evaluar las respuestas del modelo en busca de contenido ofensivo o dañino, lo que habilita la protección nativa para los clientes y las cargas de trabajo de IA que usan Apigee. Model Armor es un servicio de Google Cloud que ofrece medidas de seguridad de la IA para mitigar los riesgos asociados con los modelos de lenguaje grandes (LLM).
Esta política se usa junto con la política SanitizeUserPrompt.
Esta política es una política extensible, y el uso de esta política puede tener implicaciones de costo o uso, según tu licencia de Apigee. Para obtener información sobre los tipos de políticas y sus implicaciones de uso, consulta Tipos de políticas.
Antes de comenzar
Antes de usar la política SanitizeModelResponse, debes completar las siguientes tareas:
- Crear una plantilla de Model Armor Este paso se debe completar antes de crear una política SanitizeModelResponse.
- Establece el extremo de API para el servicio de Model Armor.
Roles obligatorios
Para obtener los permisos que necesitas para aplicar y usar la política SanitizeModelResponse, pídele a tu administrador que te otorgue los siguientes roles de IAM en la cuenta de servicio que usas para implementar proxies de Apigee:
- Usuario de Model Armor (
roles/modelarmor.user) - Visualizador de Model Armor (
roles/modelarmor.viewer)
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.
Habilita las APIs
Habilita las APIs de Model Armor, si aún no están habilitadas.
Roles necesarios para habilitar las APIs
Para habilitar las APIs, necesitas el permiso serviceusage.services.enable. Si
creaste el proyecto, es probable que ya tengas este permiso a través del
rol de propietario (roles/owner). De lo contrario, puedes obtenerlo a través del
rol de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin).
Obtén más información para otorgar roles.
Elemento <SanitizeModelResponse>
Define una política SanitizeModelResponse.
| Valor predeterminado | Consulta la pestaña Política predeterminada, a continuación |
| ¿Es obligatorio? | Obligatorio |
| Tipo | Objeto complejo |
| Elemento principal | N/A |
| Elementos secundarios |
<DisplayName><IgnoreUnresolvedVariables><ModelArmor><UserPromptSource><LLMResponseSource><FunctionCallSource><ContinuousScan> |
El elemento <SanitizeModelResponse> usa la siguiente sintaxis:
Sintaxis
<SanitizeModelResponse async="false" continueOnError="false" enabled="true" name="sanitize-response">
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
<DisplayName>sanitize-response-sample</DisplayName>
<ModelArmor>
<TemplateName>projects/{project}/locations/{location}/templates/{template-name}</TemplateName>
</ModelArmor>
<UserPromptSource>{jsonPath('$.contents[-1].parts[-1].text',request.content)}</UserPromptSource>
<LLMResponseSource>{jsonPath('$.candidates[-1].content.parts',response.content)}</LLMResponseSource>
<FunctionCallSource>{jsonPath('$.candidates[-1].content.parts[-1].functionCall.args',response.content)}</FunctionCallSource>
<ContinuousScan>false</ContinuousScan>
</SanitizeModelResponse>Política predeterminada
En el siguiente ejemplo, se muestra la configuración predeterminada cuando agregas una política SanitizeModelResponse a tu flujo de solicitudes en la IU de Apigee:
<SanitizeModelResponse async="false" continueOnError="false" enabled="true" name="sanitize-response">
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
<DisplayName>sanitize-response-sample</DisplayName>
<ModelArmor>
<TemplateName>projects/{project}/locations/{location}/templates/{template-name}</TemplateName>
</ModelArmor>
<UserPromptSource>{jsonPath('$.contents[-1].parts[-1].text',request.content)}</UserPromptSource>
<LLMResponseSource>{jsonPath('$.candidates[-1].content.parts',response.content)}</LLMResponseSource>
<FunctionCallSource>{jsonPath('$.candidates[-1].content.parts[-1].functionCall.args',response.content)}</FunctionCallSource>
</SanitizeModelResponse>Cuando insertas una nueva política SanitizeModelResponse con la IU de Apigee, la plantilla contiene stubs para todas las operaciones posibles. Consulta la información que aparece a continuación sobre los elementos obligatorios.
Este elemento tiene los siguientes atributos que son comunes a todas las políticas:
| Atributo | Predeterminada | (obligatorio) | Descripción |
|---|---|---|---|
name |
N/A | Obligatorio |
El nombre interno de la política. El valor del atributo De forma opcional, usa el elemento |
continueOnError |
falso | Opcional | Configúralo como false para mostrar un error cuando una política falla. Este es el comportamiento previsto para la mayoría de las políticas. Configúralo como true para continuar con la ejecución del flujo incluso después de que una política falle. También consulta:
|
enabled |
true | Opcional | Configúralo como true para aplicar la política. Configúralo como false para desactivar la política. La política no se aplicará, incluso si permanece conectada a un flujo. |
async |
falso | Obsoleta | Este atributo dejó de estar disponible. |
En la siguiente tabla, se proporciona una descripción de alto nivel de los elementos secundarios de
<SanitizeModelResponse>:
| Elemento secundario | ¿Es obligatorio? | Descripción |
|---|---|---|
<DisplayName> |
Opcional | Es el nombre de la política. |
<IgnoreUnresolvedVariables> |
Opcional | Especifica si el procesamiento se detiene si la variable que se usa para el nombre de la plantilla o la carga útil de Model Armor no se resuelve. |
<ModelArmor> |
Obligatorio | Contiene la información necesaria para especificar la plantilla de Model Armor. |
<UserPromptSource> |
Opcional | Es la ubicación de la carga útil de la que se extraerá el texto de la instrucción del usuario. La política envía este
texto a Model Armor como contexto para la limpieza de la respuesta. Si omites este
elemento, la política envía solo la respuesta del LLM a Model Armor para su limpieza,
y la política se implementa y se ejecuta correctamente. Solo admite valores de texto de cadena.
Este campo admite la sintaxis de la plantilla de mensajes de Apigee, incluido el uso de variables o funciones de ruta de acceso JSON. Por ejemplo: {jsonpath('$.contents[-1].parts[-1].text',request.content,false)} |
<LLMResponseSource> |
Opcional | Es la ubicación de la carga útil para extraer el texto de respuesta del LLM. Cuando se omite, se aplica la ruta de acceso JSON predeterminada de Agent Platform generateContent:
{jsonPath('$.candidates[-1].content.parts',response.content)}. Solo se admiten valores de texto de cadena.
Este campo admite la sintaxis de la plantilla de mensajes de Apigee, incluido el uso de variables o funciones de ruta de acceso JSON. Por ejemplo: {jsonpath('$.input.prompt.text',request.content,false)} |
<FunctionCallSource> |
Opcional | Es la ubicación de los argumentos de la llamada a función que se extraerán de las respuestas del modelo. La política usa este elemento como resguardo cuando <LLMResponseSource> devuelve un valor vacío en los turnos de llamada a función.
Valor predeterminado: |
<ContinuousScan> |
Opcional | Especifica si se debe verificar toda la respuesta de transmisión (SSE) y
entregar cada evento al cliente solo después de que Model Armor lo
verifique. Solo se aplica cuando la política se ejecuta en un SSE Valor predeterminado: |
Limpia las respuestas de transmisión de eventos enviados por el servidor (SSE)
En un SSE EventFlow, usa
<ContinuousScan> para elegir una
de dos opciones: verificar cada evento por separado (false, el valor predeterminado)
o verificar todo el flujo con la
limpieza de transmisión
de Model Armor (true). Con true, la respuesta completa
suele finalizar antes, ya que la política verifica el flujo en una
conexión mientras el modelo aún se está generando, en lugar de realizar una solicitud
independiente para cada evento. Sin embargo, el tiempo hasta el primer token puede ser más largo. Para agregar la
política a un EventFlow, consulta
Usa
una política de Model Armor de Apigee en un EventFlow.
En la siguiente tabla, se comparan las dos opciones.
| Comportamiento | false (predeterminado): cada evento por separado |
true: flujo completo |
|---|---|---|
| Cómo se verifica el texto | Cada evento por sí solo, sin el texto de los eventos anteriores. | Todo el flujo, con el texto de los eventos anteriores como contexto. |
| Cuando el cliente recibe un evento | Después de la verificación de ese evento | Después de que Model Armor lo haya verificado. |
| Solicitudes de Model Armor | Uno por evento. | Una por respuesta. |
| Límite de tokens | Por solicitud. | No hay límite para la cantidad total de tokens en una respuesta. |
El elemento <ContinuousScan> solo existe en la política SanitizeModelResponse, no en la política SanitizeUserPrompt.
Configura el análisis continuo
Establece <ContinuousScan>true</ContinuousScan> y apunta <LLMResponseSource> al texto del evento actual, response.event.current.data:
<SanitizeModelResponse async="false" continueOnError="false" enabled="true" name="SMR-ContinuousScan"> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <DisplayName>SMR-ContinuousScan</DisplayName> <ModelArmor> <TemplateName>projects/{project}/locations/{location}/templates/{template-name}</TemplateName> </ModelArmor> <LLMResponseSource>{jsonPath('$.candidates[-1].content.parts[-1].text',response.event.current.data,true)}</LLMResponseSource> <ContinuousScan>true</ContinuousScan> </SanitizeModelResponse>
Usa la expresión <LLMResponseSource> que coincida con el formato de transmisión de tu modelo:
| Formato de transmisión | <LLMResponseSource> |
|---|---|
Gemini (streamGenerateContent?alt=sse) |
{jsonPath('$.candidates[-1].content.parts[-1].text',response.event.current.data,true)} |
| Finalizaciones de chat compatibles con OpenAI | {jsonPath('$.choices[-1].delta.content',response.event.current.data,true)} |
| Anthropic Claude | {jsonPath('$.delta.text',response.event.current.data,true)} |
Coincidencias y errores
Con <ContinuousScan> configurado como true, los errores son transitorios o irreversibles:
| Tipo | Ejemplos | Cómo se gestiona |
|---|---|---|
| Transient | Se interrumpió la conexión con Model Armor o Model Armor no está disponible temporalmente. | Se reintentó. Apigee se vuelve a conectar y verifica de nuevo el texto que aún no se entregó, por lo que no se omite ni se entrega ningún evento sin verificar. Esto sucede hasta
dos veces por respuesta, independientemente de continueOnError. Si sigue
fallando, el error se vuelve terminal. |
| Terminal | Una coincidencia de filtro, un error de autenticación o de permiso, una cuota de Model Armor excedida o la falta de respuesta de Model Armor en el tiempo de espera de 60 segundos. | No se reintentó. La verificación finaliza y continueOnError determina
lo que recibe el cliente, como se describe en la siguiente tabla. |
Con <ContinuousScan> configurado como true, la política
no entrega el texto desidentificado (oculto) de Sensitive Data Protection (SDP)
de Model Armor. Apigee lanza eventos sin cambios y
controla una coincidencia de desidentificación como cualquier otra coincidencia.
En un error de terminal, el atributo continueOnError determina
lo que recibe el cliente:
continueOnError |
Qué recibe el cliente |
|---|---|
false (predeterminada) |
El cliente recibe los eventos que pasaron la verificación y, luego, un evento de SSE con la falla, como steps.sanitize.model.response.FilterMatched, steps.sanitize.modelarmor.ModelArmorAPIFailed o steps.sanitize.modelarmor.AuthenticationFailure. Luego, finaliza la transmisión. El cliente no recibe texto sin verificar ni coincidente. |
true |
El cliente recibe la respuesta completa, incluido el texto coincidente
y todo lo que sigue. Los errores de terminal no generan una falla, y el resto
de la respuesta pasa sin verificarse. La política establece
SanitizeModelResponse.POLICY_NAME.failed en
true para que un paso posterior en EventFlow pueda
actuar en él. |
Con <ContinuousScan> configurado como false, cada evento
es una solicitud independiente y no hay reintentos de reconexión. Con continueOnError="true", una coincidencia afecta solo a ese evento, y la política sigue verificando los eventos posteriores.
Cuotas y límites
- Con
<ContinuousScan>true</ContinuousScan>, una respuesta transmitida completa cuenta como una solicitud en la cuota de Model Armor de tu proyecto, más una por cada reconexión. Confalse, cada evento de SSE es una solicitud independiente. - Con
<ContinuousScan>true</ContinuousScan>, no hay límite en la cantidad total de tokens en una respuesta. De lo contrario, cada solicitud está sujeta a los límites de tokens de Model Armor.
Referencia del elemento secundario
En esta sección, se describen los elementos secundarios de <SanitizeModelResponse>.
<DisplayName>
Se usan además del atributo name para etiquetar la política en el editor de proxy de la IU de administración con un nombre de lenguaje natural diferente.
El elemento <DisplayName> es común a todas las políticas.
| Valor predeterminado | N/A |
| ¿Es obligatorio? | Opcional. Si omites <DisplayName>, se usa el valor del atributo name de la política. |
| Tipo | String |
| Elemento principal | <PolicyElement> |
| Elementos secundarios | Ninguno |
El elemento <DisplayName> usa la siguiente sintaxis:
Sintaxis
<PolicyElement> <DisplayName>POLICY_DISPLAY_NAME</DisplayName> ... </PolicyElement>
Ejemplo
<PolicyElement> <DisplayName>My Validation Policy</DisplayName> </PolicyElement>
El elemento <DisplayName> no tiene atributos ni elementos secundarios.
<IgnoreUnresolvedVariables>
Determina si el procesamiento se detiene cuando una variable no se resuelve. Configúralo como
true para ignorar las variables sin resolver y continuar con el procesamiento.
| Valor predeterminado | Falso |
| ¿Es obligatorio? | Opcional |
| Tipo | Booleano |
| Elemento principal |
<SanitizeModelResponse>
|
| Elementos secundarios | Ninguno |
<ModelArmor>
Contiene la configuración de la plantilla de Model Armor. El elemento secundario <TemplateName> especifica qué plantilla de Model Armor se usa para sanear la respuesta del LLM.
| Valor predeterminado | N/A |
| ¿Es obligatorio? | Obligatorio |
| Tipo | Objeto complejo |
| Elemento principal |
<SanitizeModelResponse>
|
| Elementos secundarios |
<TemplateName>
|
El elemento <ModelArmor> usa la siguiente sintaxis:
<ModelArmor>
<TemplateName>projects/{project}/locations/{location}/templates/{template-name}</TemplateName>
</ModelArmor><TemplateName>
La plantilla de Model Armor.
| Valor predeterminado | N/A |
| ¿Es obligatorio? | Obligatorio |
| Tipo | String |
| Elemento principal |
<ModelArmor>
|
| Elementos secundarios | Ninguno |
El elemento <TemplateName> usa la siguiente sintaxis:
Sintaxis
<ModelArmor>
<TemplateName>projects/{project}/locations/{location}/templates/{template-name}</TemplateName>
</ModelArmor>Ejemplo
En este ejemplo, se usan variables de flujo de Apigee para completar la información requerida.
<ModelArmor> <TemplateName>projects/{organization.name}/locations/{system.region.name}/templates/{id}</TemplateName> </ModelArmor>
<UserPromptSource>
Es la ubicación de la carga útil de la que se extraerá el texto de la instrucción del usuario. Si proporcionas este elemento, la política envía la instrucción del usuario a Model Armor junto con la respuesta del modelo para una limpieza adaptada al contexto. Si omites este elemento, la política solo limpia la respuesta del modelo, y la política se implementa y se ejecuta correctamente. Solo admite valores de texto de cadena.
Este campo admite la sintaxis de la plantilla de mensajes de Apigee, incluido el uso de variables o funciones de ruta de acceso JSON. Por ejemplo:
{jsonpath('$.input.prompt.text',request.content,false)}
| Valor predeterminado | N/A |
| ¿Es obligatorio? | Opcional |
| Tipo | String |
| Elemento principal |
<SanitizeModelResponse>
|
| Elementos secundarios | Ninguno |
<LLMResponseSource>
Es la ubicación de la carga útil de la respuesta del LLM que se extraerá. Solo se admiten valores de texto de cadena.
Este campo admite la sintaxis de la plantilla de mensajes de Apigee, incluido el uso de variables o funciones de ruta de acceso JSON. Por ejemplo:
{jsonpath('$.input.prompt.text',request.content,false)}
| Valor predeterminado | {jsonPath('$.candidates[-1].content.parts',response.content)} |
| ¿Es obligatorio? | Opcional |
| Tipo | String |
| Elemento principal |
<SanitizeModelResponse>
|
| Elementos secundarios | Ninguno |
<FunctionCallSource>
Es la ubicación de los argumentos de la llamada a función que se extraerán de la respuesta del modelo. La política usa este elemento como resguardo
cuando <LLMResponseSource> devuelve un valor vacío, lo que ocurre cuando el modelo devuelve una invocación de llamada a función
en lugar de contenido de texto.
Este campo admite la sintaxis de la plantilla de mensajes, incluidas las funciones de ruta de acceso JSON.
| Valor predeterminado | {jsonPath('$.candidates[-1].content.parts[-1].functionCall.args',response.content)} |
| ¿Es obligatorio? | Opcional |
| Tipo | String |
| Elemento principal |
<SanitizeModelResponse>
|
| Elementos secundarios | Ninguno |
<ContinuousScan>
Establécelo en true para verificar toda la respuesta de transmisión (SSE) como una
transmisión, con la
limpieza de transmisión de Model Armor. La política verifica cada evento junto con el texto de todos
los eventos anteriores, y el cliente recibe cada evento completo y sin cambios, solo
después de que Model Armor lo verifica. La política no entrega el texto desidentificado (oculto) de Sensitive Data Protection (SDP) de Model Armor.
Cuando se establece en false o se omite, la política verifica cada evento por separado.
El elemento se aplica solo cuando la política se ejecuta en un EventFlow de SSE
y no tiene efecto en ningún otro lugar. Para obtener más información, consulta
Limpia las respuestas de eventos enviados por el servidor (SSE) de transmisión.
| Valor predeterminado | Falso |
| ¿Es obligatorio? | Opcional |
| Tipo | Booleano |
| Elemento principal |
<SanitizeModelResponse>
|
| Elementos secundarios | Ninguno |
El elemento <ContinuousScan> usa la siguiente sintaxis:
<ContinuousScan>true</ContinuousScan>
Variables de flujo
Las variables de flujo se pueden usar para configurar el comportamiento dinámico del entorno de ejecución de las políticas y los flujos, según los encabezados HTTP o el contenido de los mensajes, o el contexto disponible en el flujo. Para obtener más información sobre las variables de flujo, consulta la Referencia de variables de flujo.
Esta política proporciona el siguiente conjunto de variables de flujo de solo lectura durante la ejecución. Puedes usar estas variables de flujo con la política DataCapture para crear informes de estadísticas personalizados. Para obtener más información, consulta Recopila datos de clientes con la política de captura de datos.
| Nombre de la variable | Descripción |
|---|---|
SanitizeModelResponse.POLICY_NAME.templateUsed |
Especifica qué plantilla de Model Armor se usa. Por ejemplo:
projects/myproject/locations/us-west1/templates/mytemplate |
SanitizeModelResponse.POLICY_NAME.userPrompt |
Especifica el contenido de la instrucción que se usa para la llamada a Model Armor para limpiar el contenido. |
SanitizeModelResponse.POLICY_NAME.modelResponse |
Especifica el contenido de la respuesta del LLM que se usa para la llamada a Model Armor para limpiar el contenido. |
SanitizeModelResponse.POLICY_NAME.responseFromModelArmor |
Especifica la respuesta JSON de Model Armor. Cuando
<ContinuousScan> se establece en
true, contiene la respuesta más reciente. |
SanitizeModelResponse.POLICY_NAME.filterMatchState |
Especifica si el filtro coincidió. Los valores válidos incluyen MATCH_FOUND y NO_MATCH_FOUND. |
SanitizeModelResponse.POLICY_NAME.invocationResult |
Es un campo que indica el resultado de la invocación, independientemente del estado de coincidencia. Puede tener
lo siguiente:
|
SanitizeModelResponse.POLICY_NAME.raiFilterResult.executionState |
Es el resultado de la ejecución del filtro de RAI. Los valores válidos incluyen EXECUTION_SUCCESS y EXECUTION_SKIPPED. |
SanitizeModelResponse.POLICY_NAME.raiFilterResult.matchState |
Estado de coincidencia del filtro de RAI. Los valores válidos incluyen MATCH_FOUND y NO_MATCH_FOUND. |
SanitizeModelResponse.POLICY_NAME.sdpFilterResult.inspectResult.executionState |
Estado de ejecución del resultado de la inspección del filtro de SDP. Los valores válidos incluyen EXECUTION_SUCCESS y EXECUTION_SKIPPED. |
SanitizeModelResponse.POLICY_NAME.sdpFilterResult.inspectResult.matchState |
Estado de coincidencia del resultado de la inspección del filtro de SDP. Los valores válidos incluyen MATCH_FOUND y NO_MATCH_FOUND. |
SanitizeModelResponse.POLICY_NAME.sdpFilterResult.deidentifyResult.executionState |
Estado de ejecución del resultado de desidentificación del filtro de SDP. Los valores válidos incluyen EXECUTION_SUCCESS y EXECUTION_SKIPPED. |
SanitizeModelResponse.POLICY_NAME.sdpFilterResult.deidentifyResult.matchState |
Estado de coincidencia del resultado de desidentificación del filtro de SDP. Los valores válidos incluyen MATCH_FOUND y NO_MATCH_FOUND. |
SanitizeModelResponse.POLICY_NAME.piAndJailbreakFilterResult.executionState |
Estado de ejecución de los resultados del filtro de inyección de instrucciones y jailbreak. Los valores válidos incluyen EXECUTION_SUCCESS y EXECUTION_SKIPPED. |
SanitizeModelResponse.POLICY_NAME.piAndJailbreakFilterResult.matchState |
Estado de coincidencia de los resultados del filtro de inyección de instrucciones y jailbreak. Los valores válidos incluyen MATCH_FOUND y NO_MATCH_FOUND. |
SanitizeModelResponse.POLICY_NAME.csamFilterFilterResult.executionState |
Es el estado de ejecución del filtro de CSAM. Los valores válidos incluyen EXECUTION_SUCCESS y EXECUTION_SKIPPED. |
SanitizeModelResponse.POLICY_NAME.csamFilterFilterResult.matchState |
Estado de coincidencia del filtro de CSAM Los valores válidos incluyen MATCH_FOUND y NO_MATCH_FOUND. |
SanitizeModelResponse.POLICY_NAME.maliciousUriFilterResult.executionState |
Es el estado de ejecución del filtro de URIs maliciosos. Los valores válidos incluyen EXECUTION_SUCCESS y EXECUTION_SKIPPED. |
SanitizeModelResponse.POLICY_NAME.maliciousUriFilterResult.matchState |
Estado de coincidencia del filtro de URI malicioso. Los valores válidos incluyen MATCH_FOUND y NO_MATCH_FOUND. |
SanitizeModelResponse.POLICY_NAME.sanitizationMetadata.errorCode |
Código de error anulado personalizado si está presente en la respuesta de Model Armor. |
SanitizeModelResponse.POLICY_NAME.sanitizationMetadata.errorMessage |
Código de error anulado personalizado si está presente en la respuesta de Model Armor. |
SanitizeModelResponse.POLICY_NAME.csamFilterMatched |
Valor booleano que indica si el filtro de CSAM coincidió. |
SanitizeModelResponse.POLICY_NAME.maliciousURIs |
Es la lista adjunta de URIs maliciosos detectados por el filtro de URIs maliciosos. |
SanitizeModelResponse.POLICY_NAME.maliciousURIsDetected |
Valor booleano que indica si coincidió el filtro de URI malicioso. |
SanitizeModelResponse.POLICY_NAME.matchesFound |
Es un valor booleano que indica si alguno de los filtros coincidió. |
SanitizeModelResponse.POLICY_NAME.promptInjectionDetected |
Es un valor booleano que indica si coincidió el filtro de inserción de instrucciones. |
SanitizeModelResponse.POLICY_NAME.promptInjectionConfidence |
Es el nivel de confianza de la detección de inyección de instrucciones. |
SanitizeModelResponse.POLICY_NAME.raiMatchesFound |
Valor booleano que indica si el filtro de RAI coincidió. |
SanitizeModelResponse.POLICY_NAME.requestSentToModelArmor |
Especifica la solicitud JSON que se envía a Model Armor. Cuando
<ContinuousScan> se establece en
true, contiene la solicitud más reciente. |
SanitizeModelResponse.POLICY_NAME.sanitizeOperation |
Especifica la operación que realiza la política. Los valores válidos incluyen SANITIZE_USER_PROMPT
y SANITIZE_MODEL_RESPONSE. |
SanitizeModelResponse.POLICY_NAME.streamReplacements |
Especifica la cantidad de veces que la política se volvió a conectar a
Model Armor durante la respuesta cuando
<ContinuousScan> se establece en
true. Se establece solo si la política se volvió a conectar. |
SanitizeModelResponse.POLICY_NAME.lastStreamReplacementCause |
Especifica el error que causó la reconexión más reciente cuando
<ContinuousScan> se establece en
true. Se establece solo si la política se volvió a conectar. |
Referencia de errores
En esta sección, se describen los códigos de error y los mensajes de error que se muestran, y las variables de error
que establece Apigee específicas para la política <SanitizeModelResponse>.
Esta información es importante para saber si estás desarrollando reglas de fallas con el propósito de manejar fallas. Para obtener más información, consulta Lo que necesitas saber
sobre los errores de políticas y Controla
fallas.
Errores de tiempo de ejecución
| Código de error | Estado de HTTP | Causa |
|---|---|---|
steps.sanitize.model.response.FilterMatched |
400 |
Este error se produce si la instrucción del usuario no pasa la verificación de la plantilla de Model Armor. |
steps.sanitize.model.response.SanitizationResponseParsingFailed |
500 |
Este error se produce si no se puede analizar la respuesta de Model Armor. |
steps.sanitize.model.response.FailedToExtractUserPrompt |
500 |
Este error se produce si falla la extracción automática de la instrucción del usuario para el valor predeterminado. |
steps.sanitize.model.response.FailedToExtractLLMResponse |
500 |
Este error se produce si falla la extracción automática de la respuesta del modelo para el valor predeterminado. |
steps.sanitize.model.response.InternalError |
500 |
Este error se produce si hay un error interno del servidor. |
steps.sanitize.model.response.ModelArmorTemplateNameExtractionFailed |
500 |
Este error se produce si no se puede resolver el nombre de la plantilla. |
steps.sanitize.model.response.AuthenticationFailure |
500 |
Este error se produce si la cuenta de servicio no tiene permiso para llamar a la API de Model Armor. |
steps.sanitize.model.response.ModelArmorAPIFailed |
500 |
Este error se produce si la API de Model Armor arroja un error. |
steps.sanitize.model.response.ModelArmorCalloutError |
500 |
Este error se produce si falla la llamada a la API de Model Armor. |
steps.sanitize.modelarmor.ServiceUnavailable |
500 |
Este error se produce si el servicio de Model Armor no está disponible. |
Errores en la implementación
Estos errores pueden generarse cuando implementas un proxy que contiene esta política.
| Nombre del error | Causa |
|---|---|
The ModelArmor/TemplateName element is required. |
Se produce si el elemento <TemplateName> en <ModelArmor> no está presente. |
The TemplateName element value is required. |
Se produce si el valor <TemplateName> está vacío. |
Variables con fallas
Estas variables se configuran cuando esta política activa un error en el entorno de ejecución. Para obtener más información, consulta Qué debes saber sobre los errores de la política.
| Variables | Donde | Ejemplo |
|---|---|---|
fault.name="FAULT_NAME" |
FAULT_NAME es el nombre de la falla, como se indica en la tabla de errores de tiempo de ejecución anterior. El nombre de la falla es la última parte del código de error. | fault.name Matches "UnresolvedVariable" |
SanitizeModelResponse.POLICY_NAME.failed |
POLICY_NAME es el nombre especificado por el usuario de la política que generó la falla. | SanitizeModelResponse.sanitize-response.failed = true |
Ejemplo de respuesta de error
{ "fault": { "faultstring": "SanitizeModelResponse[sanitize-response]: unable to resolve variable [variable_name]", "detail": { "errorcode": "steps.sanitizemodelresponse.UnresolvedVariable" } } }
Ejemplo de regla de falla
<FaultRule name="SanitizeModelResponse Faults">
<Step>
<Name>SMR-CustomSetVariableErrorResponse</Name>
<Condition>(fault.name = "SetVariableFailed")</Condition>
</Step>
<Condition>(sanitizemodelresponse.failed = true)</Condition>
</FaultRule>Código de error y mensajes de error de la plantilla de Model Armor
La plantilla de Model Armor admite la anulación de los códigos de error y los mensajes de error que arrojan las solicitudes a la API de la política SanitizeModelResponse. Si el usuario establece las anulaciones, los códigos de error y los mensajes de error de Model Armor completarán las variables de flujo.
Por ejemplo, una respuesta con códigos y mensajes de error de Model Armor podría verse de la siguiente manera:
{ "sanitizationResult": { "filterMatchState": "MATCH_FOUND", "filterResults": {...}, "sanitizationMetadata": { "errorCode": "890", "errorMessage": "get out" }, "invocationResult": "SUCCESS" } }
Esquemas
Un esquema XML (.xsd) define cada tipo de política. Como referencia, los esquemas de políticas están disponibles en GitHub.