Esta página se aplica à Apigee e à Apigee híbrida.
Confira a documentação da
Apigee Edge.
A política SanitizeModelResponse protege os clientes de IA contra conteúdo nocivo ou ofensivo, limpando as respostas de modelos de IA generativa. A política usa o Model Armor para avaliar as respostas do modelo em busca de conteúdo prejudicial ou ofensivo, permitindo a proteção nativa para clientes e cargas de trabalho de IA usando a Apigee. O Model Armor é um serviço do Google Cloud que oferece medidas de segurança e proteção de IA para reduzir os riscos associados a modelos de linguagem grandes (LLMs).
Essa política é usada em conjunto com a política SanitizeUserPrompt.
Esta é uma política extensível. O uso dela pode ter implicações no custo ou na utilização, dependendo da sua licença da Apigee. Para informações sobre tipos de política e implicações de uso, consulte Tipos de política.
Antes de começar
Antes de usar a política SanitizeModelResponse, conclua as seguintes tarefas:
- Criar um modelo do Model Armor. Essa etapa precisa ser concluída antes de criar uma política SanitizeModelResponse.
- Defina o endpoint de API para o serviço Model Armor.
Funções exigidas
Para receber as permissões necessárias para aplicar e usar a política SanitizeModelResponse, peça ao administrador que conceda a você os seguintes papéis do IAM na conta de serviço usada para implantar proxies da Apigee:
- Usuário do Model Armor (
roles/modelarmor.user) - Leitor do Model Armor (
roles/modelarmor.viewer)
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.
Ativar APIs
Ative as APIs do Model Armor, se ainda não estiverem ativadas.
Funções necessárias para ativar APIs
Para ativar APIs, você precisa da permissão serviceusage.services.enable. Se você
criou o projeto, provavelmente já tem essa permissão pelo
papel de proprietário (roles/owner). Caso contrário, é possível conseguir essa permissão pelo
papel de administrador do Service Usage (roles/serviceusage.serviceUsageAdmin).
Saiba como conceder papéis.
Elemento <SanitizeModelResponse>
Define uma política SanitizeModelResponse.
| Valor padrão | Consulte a guia Política padrão a seguir |
| Obrigatório? | Obrigatório |
| Tipo | Objeto complexo |
| Elemento pai | N/A |
| Elemento filho |
<DisplayName><IgnoreUnresolvedVariables><ModelArmor><UserPromptSource><LLMResponseSource><FunctionCallSource><ContinuousScan> |
O elemento <SanitizeModelResponse> usa a seguinte sintaxe:
Sintaxe
<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 padrão
O exemplo a seguir mostra as configurações padrão quando você adiciona uma política SanitizeModelResponse ao fluxo de solicitação na interface da 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>Quando você insere uma nova política SanitizeModelResponse usando a interface da Apigee, o modelo contém stubs para todas as operações possíveis. Veja abaixo as informações sobre os elementos obrigatórios.
Este elemento tem os seguintes atributos comuns a todas as políticas:
| Atributo | Padrão | Obrigatório? | Descrição |
|---|---|---|---|
name |
N/A | Valor |
O nome interno da política. O valor do atributo Opcionalmente, use o elemento |
continueOnError |
falso | Opcional | Defina como false para retornar um erro quando uma política falhar. Esse é o comportamento esperado para
a maioria das políticas. Defina como true para que a execução do fluxo continue, mesmo depois que uma política
falhar. Consulte também:
|
enabled |
true | Opcional | Defina como true para aplicar a política. Defina como false para desativar a política. A política não será aplicada mesmo que permaneça vinculada a um fluxo. |
async |
falso | Obsoleto | Esse atributo está obsoleto. |
A tabela a seguir fornece uma descrição resumida dos elementos filhos de
<SanitizeModelResponse>:
| Elemento filho | Obrigatório? | Descrição |
|---|---|---|
<DisplayName> |
Opcional | O nome da política. |
<IgnoreUnresolvedVariables> |
Opcional | Especifica se o processamento será interrompido se a variável usada para o nome do modelo ou o payload do Model Armor não for resolvida. |
<ModelArmor> |
Obrigatório | Contém as informações necessárias para especificar o modelo do Model Armor. |
<UserPromptSource> |
Opcional | O local do payload de onde o texto do comando do usuário será extraído. A política envia esse
texto ao Model Armor como contexto para a higienização da resposta. Se você omitir esse
elemento, a política vai enviar apenas a resposta do LLM ao Model Armor para higienização,
e a política será implantada e executada com sucesso. Aceita apenas valores de texto de string.
Esse campo é compatível com a sintaxe do modelo de mensagem da Apigee, incluindo o uso de variáveis ou funções de caminho JSON. Exemplo: {jsonpath('$.contents[-1].parts[-1].text',request.content,false)} |
<LLMResponseSource> |
Opcional | O local do payload para o texto de resposta do LLM a ser extraído. Quando omitido, o
caminho JSON padrão da Agent Platform generateContent é aplicado:
{jsonPath('$.candidates[-1].content.parts',response.content)}. Somente valores de texto de string são aceitos.
Esse campo é compatível com a sintaxe do modelo de mensagem da Apigee, incluindo o uso de variáveis ou funções de caminho JSON. Exemplo: {jsonpath('$.input.prompt.text',request.content,false)} |
<FunctionCallSource> |
Opcional | O local dos argumentos da chamada de função a serem extraídos das respostas do modelo. A política usa esse elemento como substituto quando <LLMResponseSource> retorna vazio em turnos de chamada de função.
Padrão: |
<ContinuousScan> |
Opcional | Especifica se é necessário verificar toda a resposta de streaming (SSE),
enviando cada evento ao cliente somente depois que o Model Armor o
verificar. Aplica-se somente quando a política é executada em um SSE Padrão: |
Limpar as respostas de streaming de eventos enviados pelo servidor (SSE)
Em um EventFlow de SSE, use
<ContinuousScan> para escolher uma
das duas opções: verificar cada evento separadamente (false, o padrão)
ou verificar todo o stream usando a
limpeza de streaming
do Model Armor (true). Com true, a resposta
completa geralmente é concluída mais rapidamente, porque a política verifica o stream em uma
conexão enquanto o modelo ainda está sendo gerado, em vez de fazer uma solicitação
separada para cada evento. No entanto, o tempo até o primeiro token pode ser maior. Para adicionar a
política a um EventFlow, consulte
Usar
uma política do Model Armor da Apigee em um EventFlow.
A tabela a seguir compara as duas opções:
| Comportamento | false (padrão): cada evento separadamente |
true: stream inteiro |
|---|---|---|
| Como o texto é verificado | Cada evento por conta própria, sem o texto de eventos anteriores. | O stream inteiro, com o texto de eventos anteriores como contexto. |
| Quando o cliente recebe um evento | Depois da verificação do próprio evento. | Depois que o Model Armor o verificar. |
| Solicitações do Model Armor | Uma por evento. | Um por resposta. |
| Limite de tokens | Por solicitação. | Não há limite para o total de tokens em uma resposta. |
O elemento <ContinuousScan> existe apenas na política SanitizeModelResponse, não na política SanitizeUserPrompt.
Configurar a verificação contínua
Defina <ContinuousScan>true</ContinuousScan> e aponte <LLMResponseSource> para o texto no evento atual, 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>
Use a expressão <LLMResponseSource> que corresponde ao formato de streaming do seu modelo:
| Formato de streaming | <LLMResponseSource> |
|---|---|
Gemini (streamGenerateContent?alt=sse) |
{jsonPath('$.candidates[-1].content.parts[-1].text',response.event.current.data,true)} |
| Conclusões de chat compatíveis com a OpenAI | {jsonPath('$.choices[-1].delta.content',response.event.current.data,true)} |
| Anthropic Claude | {jsonPath('$.delta.text',response.event.current.data,true)} |
Correspondências e erros
Com <ContinuousScan> definido como true, os erros são transitórios ou terminais:
| Tipo | Exemplos | Como isso é feito |
|---|---|---|
| Transient | Uma conexão interrompida com o Model Armor ou o Model Armor temporariamente indisponível. | Tentativa feita novamente. A Apigee se reconecta e verifica o texto ainda não entregue
novamente, para que nenhum evento seja ignorado ou entregue sem verificação. Isso acontece até
duas vezes por resposta, independentemente de continueOnError. Se o erro
persistir, ele se tornará terminal. |
| Terminal | Uma correspondência de filtro, um erro de autenticação ou permissão, uma cota excedida do Model Armor ou nenhuma resposta do Model Armor dentro do tempo limite de 60 segundos. | Não foi repetida. A verificação termina, e o continueOnError determina
o que o cliente recebe, conforme descrito na próxima tabela. |
Com <ContinuousScan> definido como true, a política
não entrega o texto desidentificado (encoberto) da Proteção de Dados Sensíveis (SDP)
do Model Armor. A Apigee libera eventos sem alterações e
processa uma correspondência de desidentificação como qualquer outra correspondência.
Em um erro de terminal, o atributo continueOnError determina
o que o cliente recebe:
continueOnError |
O que o cliente recebe |
|---|---|
false (padrão) |
O cliente recebe os eventos que passaram na verificação e, em seguida, um evento SSE com a falha, como steps.sanitize.model.response.FilterMatched, steps.sanitize.modelarmor.ModelArmorAPIFailed ou steps.sanitize.modelarmor.AuthenticationFailure. Em seguida,
o stream é encerrado. O cliente não recebe texto não verificado ou correspondente. |
true |
O cliente recebe a resposta completa, incluindo o texto correspondente
e tudo o que vem depois dele. Os erros de terminal não geram uma falha, e o restante
da resposta passa sem verificação. A política define
SanitizeModelResponse.POLICY_NAME.failed como
true para que uma etapa posterior no EventFlow possa
agir sobre ela. |
Com <ContinuousScan> definido como false, cada evento
é uma solicitação separada, e não há novas tentativas de reconexão. Com
continueOnError="true", uma correspondência afeta apenas esse evento, e a
política ainda verifica os eventos posteriores.
Cotas e limites
- Com o
<ContinuousScan>true</ContinuousScan>, uma resposta inteira transmitida conta como uma solicitação na cota do Model Armor do seu projeto, além de uma para cada reconexão. Com ofalse, cada evento SSE é uma solicitação separada. - Com o
<ContinuousScan>true</ContinuousScan>, não há limite para o total de tokens em uma resposta. Caso contrário, cada solicitação estará sujeita aos limites de tokens do Model Armor.
Referência a elementos filhos
Esta seção descreve os elementos filhos de <SanitizeModelResponse>.
<DisplayName>
Use além do atributo name para rotular a política no editor de proxy da IU de gerenciamento com um nome de som diferente e mais natural.
O elemento <DisplayName> é comum a todas as políticas.
| Valor padrão | N/A |
| Obrigatório? | Opcional. Se você omitir <DisplayName>, o valor do atributo name da política será usado |
| Tipo | String |
| Elemento pai | <PolicyElement> |
| Elemento filho | Nenhum |
O elemento <DisplayName> usa a seguinte sintaxe:
Sintaxe
<PolicyElement> <DisplayName>POLICY_DISPLAY_NAME</DisplayName> ... </PolicyElement>
Exemplo
<PolicyElement> <DisplayName>My Validation Policy</DisplayName> </PolicyElement>
O elemento <DisplayName> não tem atributos ou elementos filhos.
<IgnoreUnresolvedVariables>
Determina se o processamento é interrompido quando uma variável não é resolvida. Defina como
true para ignorar variáveis não resolvidas e continuar o processamento.
| Valor padrão | Falso |
| Obrigatório? | Opcional |
| Tipo | Booleano |
| Elemento pai |
<SanitizeModelResponse>
|
| Elemento filho | Nenhum |
<ModelArmor>
Contém a configuração do modelo do Model Armor. O elemento filho
<TemplateName> especifica qual
modelo do Model Armor é usado para limpar a resposta do LLM.
| Valor padrão | N/A |
| Obrigatório? | Obrigatório |
| Tipo | Objeto complexo |
| Elemento pai |
<SanitizeModelResponse>
|
| Elemento filho |
<TemplateName>
|
O elemento <ModelArmor> usa a seguinte sintaxe:
<ModelArmor>
<TemplateName>projects/{project}/locations/{location}/templates/{template-name}</TemplateName>
</ModelArmor><TemplateName>
O modelo do Model Armor.
| Valor padrão | N/A |
| Obrigatório? | Obrigatório |
| Tipo | String |
| Elemento pai |
<ModelArmor>
|
| Elemento filho | Nenhum |
O elemento <TemplateName> usa a seguinte sintaxe:
Sintaxe
<ModelArmor>
<TemplateName>projects/{project}/locations/{location}/templates/{template-name}</TemplateName>
</ModelArmor>Exemplo
Este exemplo usa variáveis de fluxo da Apigee para preencher as informações necessárias.
<ModelArmor> <TemplateName>projects/{organization.name}/locations/{system.region.name}/templates/{id}</TemplateName> </ModelArmor>
<UserPromptSource>
O local do payload de onde o texto do comando do usuário será extraído. Se você fornecer esse elemento, a política vai enviar o comando do usuário para o Model Armor junto com a resposta do modelo para higienização com reconhecimento de contexto. Se você omitir esse elemento, a política vai limpar apenas a resposta do modelo, e a política será implantada e executada com sucesso. Aceita apenas valores de texto de string.
Esse campo é compatível com a sintaxe do modelo de mensagem da Apigee, incluindo o uso de variáveis ou funções de caminho JSON. Exemplo:
{jsonpath('$.input.prompt.text',request.content,false)}
| Valor padrão | N/A |
| Obrigatório? | Opcional |
| Tipo | String |
| Elemento pai |
<SanitizeModelResponse>
|
| Elemento filho | Nenhum |
<LLMResponseSource>
O local do payload para a resposta do LLM a ser extraída. Somente valores de texto de string são aceitos.
Esse campo é compatível com a sintaxe do modelo de mensagem da Apigee, incluindo o uso de variáveis ou funções de caminho JSON. Exemplo:
{jsonpath('$.input.prompt.text',request.content,false)}
| Valor padrão | {jsonPath('$.candidates[-1].content.parts',response.content)} |
| Obrigatório? | Opcional |
| Tipo | String |
| Elemento pai |
<SanitizeModelResponse>
|
| Elemento filho | Nenhum |
<FunctionCallSource>
O local dos argumentos da chamada de função a serem extraídos da resposta do modelo. A política usa esse elemento como substituto
quando <LLMResponseSource> retorna vazio, o que ocorre quando o modelo retorna uma invocação de chamada de função
em vez de conteúdo de texto.
Esse campo é compatível com a sintaxe do modelo de mensagem, incluindo funções de caminho JSON.
| Valor padrão | {jsonPath('$.candidates[-1].content.parts[-1].functionCall.args',response.content)} |
| Obrigatório? | Opcional |
| Tipo | String |
| Elemento pai |
<SanitizeModelResponse>
|
| Elemento filho | Nenhum |
<ContinuousScan>
Defina como true para verificar toda a resposta de streaming (SSE) como um
único stream, usando a
higienização de streaming
do Model Armor. A política verifica cada evento junto com o texto de todos os
eventos anteriores, e o cliente recebe cada evento inteiro e inalterado, somente
depois que o Model Armor o verifica. A política não entrega o
texto desidentificado (encoberto) da Proteção de Dados Sensíveis (SDP, na sigla em inglês) do
Model Armor.
Quando false ou omitida, a política verifica cada evento separadamente.
O elemento se aplica apenas quando a política é executada em um SSE EventFlow
e não tem efeito em outros lugares. Para mais informações, consulte
Limpar respostas de eventos enviados pelo servidor (SSE) de
streaming.
| Valor padrão | Falso |
| Obrigatório? | Opcional |
| Tipo | Booleano |
| Elemento pai |
<SanitizeModelResponse>
|
| Elemento filho | Nenhum |
O elemento <ContinuousScan> usa a seguinte sintaxe:
<ContinuousScan>true</ContinuousScan>
Variáveis de fluxo
As variáveis de fluxo podem ser usadas para configurar o comportamento dinâmico do ambiente de execução para políticas e fluxos, com base em cabeçalhos HTTP ou conteúdo de mensagens, ou no contexto disponível no fluxo. Para mais informações, consulte a Referência de variáveis de fluxo.
Esta política fornece o seguinte conjunto de variáveis de fluxo somente leitura durante a execução. É possível usar essas variáveis de fluxo com a política DataCapture para criar relatórios de análise personalizados. Para mais informações, consulte Como coletar dados do cliente com a política de captura de dados.
| Nome da variável | Descrição |
|---|---|
SanitizeModelResponse.POLICY_NAME.templateUsed |
Especifica qual modelo do Model Armor é usado. Por exemplo:
projects/myproject/locations/us-west1/templates/mytemplate |
SanitizeModelResponse.POLICY_NAME.userPrompt |
Especifica o conteúdo do comando usado na chamada ao Model Armor para limpar o conteúdo. |
SanitizeModelResponse.POLICY_NAME.modelResponse |
Especifica o conteúdo da resposta do LLM usado para a chamada ao Model Armor para higienizar o conteúdo. |
SanitizeModelResponse.POLICY_NAME.responseFromModelArmor |
Especifica a resposta JSON do Model Armor. Quando
<ContinuousScan> é definido como
true, contém a resposta mais recente. |
SanitizeModelResponse.POLICY_NAME.filterMatchState |
Especifica se o filtro foi correspondido. Os valores válidos incluem MATCH_FOUND e NO_MATCH_FOUND. |
SanitizeModelResponse.POLICY_NAME.invocationResult |
Um campo que indica o resultado da invocação, independentemente do status de correspondência. Ele pode ter
o seguinte:
|
SanitizeModelResponse.POLICY_NAME.raiFilterResult.executionState |
Resultado da execução do filtro RAI. Os valores válidos incluem EXECUTION_SUCCESS e EXECUTION_SKIPPED. |
SanitizeModelResponse.POLICY_NAME.raiFilterResult.matchState |
Estado de correspondência do filtro RAI. Os valores válidos incluem MATCH_FOUND e NO_MATCH_FOUND. |
SanitizeModelResponse.POLICY_NAME.sdpFilterResult.inspectResult.executionState |
Estado de execução do resultado da inspeção do filtro SDP. Os valores válidos incluem EXECUTION_SUCCESS e EXECUTION_SKIPPED. |
SanitizeModelResponse.POLICY_NAME.sdpFilterResult.inspectResult.matchState |
O resultado da inspeção do filtro SDP corresponde ao estado. Os valores válidos incluem MATCH_FOUND e NO_MATCH_FOUND. |
SanitizeModelResponse.POLICY_NAME.sdpFilterResult.deidentifyResult.executionState |
Estado de execução do resultado de desidentificação do filtro SDP. Os valores válidos incluem EXECUTION_SUCCESS e EXECUTION_SKIPPED. |
SanitizeModelResponse.POLICY_NAME.sdpFilterResult.deidentifyResult.matchState |
Estado de correspondência do resultado de desidentificação do filtro SDP. Os valores válidos incluem MATCH_FOUND e NO_MATCH_FOUND. |
SanitizeModelResponse.POLICY_NAME.piAndJailbreakFilterResult.executionState |
Estado de execução dos resultados do filtro de injeção de comando e jailbreak. Os valores válidos incluem EXECUTION_SUCCESS e EXECUTION_SKIPPED. |
SanitizeModelResponse.POLICY_NAME.piAndJailbreakFilterResult.matchState |
Estado de correspondência dos resultados do filtro de injeção de comando e jailbreak. Os valores válidos incluem MATCH_FOUND e NO_MATCH_FOUND. |
SanitizeModelResponse.POLICY_NAME.csamFilterFilterResult.executionState |
Estado de execução do filtro de CSAM. Os valores válidos incluem EXECUTION_SUCCESS e EXECUTION_SKIPPED. |
SanitizeModelResponse.POLICY_NAME.csamFilterFilterResult.matchState |
Estado de correspondência do filtro de CSAM. Os valores válidos incluem MATCH_FOUND e NO_MATCH_FOUND. |
SanitizeModelResponse.POLICY_NAME.maliciousUriFilterResult.executionState |
Estado de execução do filtro de URIs maliciosos. Os valores válidos incluem EXECUTION_SUCCESS e EXECUTION_SKIPPED. |
SanitizeModelResponse.POLICY_NAME.maliciousUriFilterResult.matchState |
Estado de correspondência do filtro de URIs maliciosos. Os valores válidos incluem MATCH_FOUND e NO_MATCH_FOUND. |
SanitizeModelResponse.POLICY_NAME.sanitizationMetadata.errorCode |
Código do erro personalizado substituído, se presente na resposta do Model Armor. |
SanitizeModelResponse.POLICY_NAME.sanitizationMetadata.errorMessage |
Código do erro personalizado substituído, se presente na resposta do Model Armor. |
SanitizeModelResponse.POLICY_NAME.csamFilterMatched |
Valor booleano que indica se o filtro de CSAM correspondeu. |
SanitizeModelResponse.POLICY_NAME.maliciousURIs |
Lista anexada de URIs maliciosos detectados pelo filtro de URIs maliciosos. |
SanitizeModelResponse.POLICY_NAME.maliciousURIsDetected |
Valor booleano que indica se o filtro de URI malicioso correspondeu. |
SanitizeModelResponse.POLICY_NAME.matchesFound |
Valor booleano que indica se algum dos filtros correspondeu. |
SanitizeModelResponse.POLICY_NAME.promptInjectionDetected |
Valor booleano que indica se o filtro de injeção de comando correspondeu. |
SanitizeModelResponse.POLICY_NAME.promptInjectionConfidence |
Nível de confiança da detecção de injeção de comandos. |
SanitizeModelResponse.POLICY_NAME.raiMatchesFound |
Valor booleano que indica se o filtro de RAI correspondeu. |
SanitizeModelResponse.POLICY_NAME.requestSentToModelArmor |
Especifica a solicitação JSON enviada ao Model Armor. Quando
<ContinuousScan> é definido como
true, contém a solicitação mais recente. |
SanitizeModelResponse.POLICY_NAME.sanitizeOperation |
Especifica a operação realizada pela política. Os valores válidos incluem SANITIZE_USER_PROMPT
e SANITIZE_MODEL_RESPONSE. |
SanitizeModelResponse.POLICY_NAME.streamReplacements |
Especifica o número de vezes que a política se reconectou ao
Model Armor durante a resposta quando
<ContinuousScan> está definido como
true. Definido apenas se a política for reconectada. |
SanitizeModelResponse.POLICY_NAME.lastStreamReplacementCause |
Especifica o erro que causou a reconexão mais recente quando
<ContinuousScan> está definido como
true. Definido apenas se a política for reconectada. |
Referência de erros
Nesta seção, descrevemos os códigos de falha e as mensagens de erro retornadas, bem como as variáveis
de falha definidas pela Apigee específicas para a política <SanitizeModelResponse>.
Essas informações são importantes para saber se você está desenvolvendo regras de falha para
lidar com falhas. Para saber mais, consulte Tópicos importantes
sobre erros de política e Como lidar
com falhas.
Erros de tempo de execução
| Código de falha | Status HTTP | Causa |
|---|---|---|
steps.sanitize.model.response.FilterMatched |
400 |
Esse erro ocorre se o comando do usuário não passar na verificação do modelo do Model Armor. |
steps.sanitize.model.response.SanitizationResponseParsingFailed |
500 |
Esse erro ocorre quando não é possível analisar a resposta do Model Armor. |
steps.sanitize.model.response.FailedToExtractUserPrompt |
500 |
Esse erro ocorre quando a extração automática do comando do usuário para o valor padrão falha. |
steps.sanitize.model.response.FailedToExtractLLMResponse |
500 |
Esse erro ocorre se a extração automática da resposta do modelo para o valor padrão falhar. |
steps.sanitize.model.response.InternalError |
500 |
Esse erro ocorre quando há um erro interno do servidor. |
steps.sanitize.model.response.ModelArmorTemplateNameExtractionFailed |
500 |
Esse erro ocorre quando não é possível resolver o nome do modelo. |
steps.sanitize.model.response.AuthenticationFailure |
500 |
Esse erro ocorre se a conta de serviço não tiver permissão para chamar a API Model Armor. |
steps.sanitize.model.response.ModelArmorAPIFailed |
500 |
Esse erro ocorre se a API Model Armor gera um erro. |
steps.sanitize.model.response.ModelArmorCalloutError |
500 |
Esse erro ocorre se a chamada de API do Model Armor falhar. |
steps.sanitize.modelarmor.ServiceUnavailable |
500 |
Esse erro ocorre se o serviço do Model Armor estiver indisponível. |
Erros de implantação
Esses erros podem ocorrer quando você implanta um proxy que contém esta política.
| Nome do erro | Causa |
|---|---|
The ModelArmor/TemplateName element is required. |
Ocorre se o elemento <TemplateName> em <ModelArmor> não estiver presente. |
The TemplateName element value is required. |
Ocorre se o valor de <TemplateName> estiver vazio. |
Variáveis de falha
Essas variáveis são definidas quando essa política aciona um erro no ambiente de execução. Para mais informações, consulte O que você precisa saber sobre erros de política.
| Variáveis | Onde | Exemplo |
|---|---|---|
fault.name="FAULT_NAME" |
FAULT_NAME é o nome da falha, conforme listado na tabela Erros de ambiente de execução acima. O nome da falha é a última parte do código de falha. | fault.name Matches "UnresolvedVariable" |
SanitizeModelResponse.POLICY_NAME.failed |
POLICY_NAME é o nome especificado pelo usuário da política que causou a falha. | SanitizeModelResponse.sanitize-response.failed = true |
Exemplo de resposta de erro
{ "fault": { "faultstring": "SanitizeModelResponse[sanitize-response]: unable to resolve variable [variable_name]", "detail": { "errorcode": "steps.sanitizemodelresponse.UnresolvedVariable" } } }
Exemplo de regra de falha
<FaultRule name="SanitizeModelResponse Faults">
<Step>
<Name>SMR-CustomSetVariableErrorResponse</Name>
<Condition>(fault.name = "SetVariableFailed")</Condition>
</Step>
<Condition>(sanitizemodelresponse.failed = true)</Condition>
</FaultRule>Código do erro e mensagens de erro do modelo do Model Armor
O modelo do Model Armor permite substituir códigos do erro e mensagens de erro gerados pelas solicitações de API da política SanitizeModelResponse. Se o usuário definir as substituições, os códigos do erro e as mensagens de erro do Model Armor vão preencher as variáveis de fluxo.
Por exemplo, uma resposta com códigos do erro e mensagens do Model Armor pode ser assim:
{ "sanitizationResult": { "filterMatchState": "MATCH_FOUND", "filterResults": {...}, "sanitizationMetadata": { "errorCode": "890", "errorMessage": "get out" }, "invocationResult": "SUCCESS" } }
Esquemas
Cada tipo de política é definido por um esquema XML (.xsd). Para referência, os esquemas de política
estão disponíveis no GitHub.