Norme di SanitizeModelResponse

Questa pagina si applica ad Apigee e Apigee hybrid.

Visualizza la documentazione di Apigee Edge.

Il criterio SanitizeModelResponse protegge i client di AI da contenuti dannosi o offensivi mediante la sanitizzazione delle risposte dei modelli di AI generativa. La norma utilizza Model Armor per valutare le risposte del modello per contenuti dannosi o offensivi, attivando la protezione nativa per i client e i carichi di lavoro di AI che utilizzano Apigee. Model Armor è un Google Cloud servizio che offre misure di sicurezza e protezione dell'IA per mitigare i rischi associati ai modelli linguistici di grandi dimensioni (LLM).

Questo criterio viene utilizzato in combinazione con il criterio SanitizeModelResponse.

Questo criterio è un criterio estensibile e il suo utilizzo potrebbe comportare implicazioni in termini di costi o utilizzo, a seconda della licenza Apigee. Per informazioni sui tipi di criteri e sulle implicazioni per l'utilizzo, consulta Tipi di criteri.

Prima di iniziare

Prima di utilizzare il criterio SanitizeModelResponse, devi completare le seguenti attività:

  • Crea un modello Model Armor. Questo passaggio deve essere completato prima di creare una norma SanitizeModelResponse.
  • Imposta l'endpoint API per il servizio Model Armor.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per applicare e utilizzare il criterio SanitizeModelResponse, chiedi all'amministratore di concederti i seguenti ruoli IAM nell'account di servizio che utilizzi per eseguire il deployment dei proxy Apigee:

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Abilita API

Enable the Model Armor APIs.

Enable the APIs

Elemento <SanitizeModelResponse>

Definisce un criterio SanitizeModelResponse.

Valore predefinito Consulta la scheda Criteri predefiniti di seguito
Obbligatorio? Obbligatorio
Tipo Oggetto complesso
Elemento principale N/D
Elementi secondari <DisplayName>
<IgnoreUnresolvedVariables>
<TemplateName>
<UserPromptSource>
<LLMResponseSource>

L'elemento <SanitizeModelResponse> utilizza la seguente sintassi:

Sintassi

<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,true)}</UserPromptSource>
  <LLMResponseSource>{jsonPath($.candidates[-1].content.parts,response.content,true)}</LLMResponseSource>
</SanitizeModelResponse>

Criterio predefinito

L'esempio seguente mostra le impostazioni predefinite quando aggiungi un criterio SanitizeModelResponse al flusso di richieste nell'interfaccia utente di 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,true)}</UserPromptSource>
  <LLMResponseSource>{jsonPath($.candidates[-1].content.parts,response.content,true)}</LLMResponseSource>
</SanitizeModelResponse>

Quando inserisci un nuovo criterio SanitizeModelResponse utilizzando l'interfaccia utente di Apigee, il modello contiene stub per tutte le operazioni possibili. Di seguito sono riportate le informazioni sugli elementi obbligatori.

Questo elemento ha i seguenti attributi comuni a tutti i criteri:

Attributo Predefinito Obbligatorio? Descrizione
name N/D Obbligatorio

Il nome interno del criterio. Il valore dell'attributo name può contenere lettere, numeri, spazi, trattini, trattini bassi e punti. Questo valore non può superare i 255 caratteri.

Se vuoi, utilizza l'elemento <DisplayName> per etichettare il criterio nell'editor proxy dell'interfaccia utente di gestione con un nome diverso in linguaggio naturale.

continueOnError falso Facoltativo Imposta su false per restituire un errore quando un criterio non va a buon fine. Questo è un comportamento previsto per la maggior parte dei criteri. Imposta su true per continuare l'esecuzione del flusso anche dopo un fallimento del criterio. Vedi anche:
enabled true Facoltativo Imposta su true per applicare il criterio. Imposta su false per disattivare il criterio. Il criterio non verrà applicato anche se rimane collegato a un flusso.
async   falso Ritirato Questo attributo è stato ritirato.

La tabella seguente fornisce una descrizione generale degli elementi secondari di <SanitizeModelResponse>:

Elemento secondario Obbligatorio? Descrizione
<DisplayName> Facoltativo Il nome del criterio.

<IgnoreUnresolvedVariables> Facoltativo Specifica se l'elaborazione si interrompe se la variabile utilizzata per il nome del modello o per il payload di Model Armor non è risolta.
<TemplateName> Obbligatorio Il modello Model Armor utilizzato per eseguire la sanitizzazione della risposta LLM.

Questo valore può essere definito come modello utilizzando le seguenti variabili di flusso Apigee:

projects/{organization.name}/locations/{system.region.name}/templates/{id}

<UserPromptSource> Obbligatorio La posizione del payload per il testo della richiesta all'utente da estrarre. Sono supportati solo i valori di testo stringa.

Questo campo supporta la sintassi del modello di messaggio Apigee, incluso l'utilizzo di variabili o funzioni di percorso JSON.

Ad esempio:

{jsonpath('$.contents[-1].parts[-1].text',request.content,false)}
<LLMResponseSource> Obbligatorio La posizione del payload per il testo della risposta LLM da estrarre. Sono supportati solo i valori di testo stringa.

Questo campo supporta la sintassi del modello di messaggio Apigee, incluso l'utilizzo di variabili o funzioni di percorso JSON.

Ad esempio:

{jsonpath('$.input.prompt.text',request.content,false)}

Riferimento all'elemento secondario

Questa sezione descrive gli elementi secondari di <SanitizeModelResponse>.

<DisplayName>

Da utilizzare insieme all'attributo name per etichettare il criterio nell'editor proxy dell'interfaccia utente di gestione con un nome diverso e più naturale.

L'elemento <DisplayName> è comune a tutti i criteri.

Valore predefinito N/D
Obbligatorio? Facoltativo. Se ometti <DisplayName>, viene utilizzato il valore dell'attributo name del criterio.
Tipo Stringa
Elemento principale <PolicyElement>
Elementi secondari Nessuno

La sintassi dell'elemento <DisplayName> è la seguente:

Sintassi

<PolicyElement>
  <DisplayName>POLICY_DISPLAY_NAME</DisplayName>
  ...
</PolicyElement>

Esempio

<PolicyElement>
  <DisplayName>My Validation Policy</DisplayName>
</PolicyElement>

L'elemento <DisplayName> non ha attributi o elementi secondari.

<IgnoreUnresolvedVariables>

Determina se l'elaborazione si interrompe quando una variabile non è risolta. Imposta su true per ignorare le variabili non risolte e continuare l'elaborazione.

Valore predefinito Falso
Obbligatorio? Facoltativo
Tipo Booleano
Elemento principale <SanitizeModelResponse>
Elementi secondari Nessuno

<TemplateName>

Il modello Model Armor.

Valore predefinito N/D
Obbligatorio? Obbligatorio
Tipo Stringa
Elemento principale <SanitizeModelResponse>
Elementi secondari Nessuno

La sintassi dell'elemento <TemplateName> è la seguente:

Sintassi

<ModelArmor>
  <TemplateName>projects/{project}/locations/{location}/templates/{template-name}</TemplateName>
</ModelArmor>

Esempio

Questo esempio utilizza le variabili del flusso Apigee per compilare le informazioni richieste.

<ModelArmor>
  <TemplateName>projects/{organization.name}/locations/{system.region.name}/templates/{id}</TemplateName>
</ModelArmor>

<UserPromptSource>

La posizione del payload per il testo della richiesta all'utente da estrarre. Sono supportati solo i valori di testo stringa.

Questo campo supporta la sintassi del modello di messaggio Apigee, incluso l'utilizzo di variabili o funzioni di percorso JSON. Ad esempio:

{jsonpath('$.input.prompt.text',request.content,false)}
Valore predefinito {jsonPath($.contents[-1].parts[-1].text,request.content,true)}
Obbligatorio? Obbligatorio
Tipo Stringa
Elemento principale <SanitizeModelResponse>
Elementi secondari Nessuno

<LLMResponseSource>

La posizione del payload per la risposta LLM da estrarre. Sono supportati solo i valori di testo stringa.

Questo campo supporta la sintassi del modello di messaggio Apigee, incluso l'utilizzo di variabili o funzioni di percorso JSON. Ad esempio:

{jsonpath('$.input.prompt.text',request.content,false)}
Valore predefinito {jsonPath($.candidates[-1].content.parts,response.content,true)}
Obbligatorio? Obbligatorio
Tipo Stringa
Elemento principale <SanitizeModelResponse>
Elementi secondari Nessuno

Variabili di flusso

Le variabili di flusso possono essere utilizzate per configurare il comportamento di runtime dinamico per criteri e flussi, in base alle intestazioni HTTP o ai contenuti dei messaggi o al contesto disponibile nel flusso. Per ulteriori informazioni sulle variabili di flusso, consulta la sezione Riferimento alle variabili di flusso.

Il criterio può impostare queste variabili di sola lettura durante l'esecuzione.

Nome variabile Descrizione
SanitizeModelResponse.POLICY_NAME.templateUsed Specifica il modello di Model Armor utilizzato. Ad esempio: projects/myproject/locations/us-west1/templates/mytemplate
SanitizeModelResponse.POLICY_NAME.userPrompt Specifica i contenuti del prompt utilizzati per la chiamata a Model Armor per la sanificazione dei contenuti.
SanitizeModelResponse.POLICY_NAME.modelResponse Specifica i contenuti della risposta LLM utilizzati per la chiamata a Model Armor per la sanitizzazione dei contenuti.
SanitizeModelResponse.POLICY_NAME.responseFromModelArmor Specifica la risposta JSON di Model Armor. Model Armor.
SanitizeModelResponse.POLICY_NAME.filterMatchState Specifica se il filtro è stato trovato. I valori validi includono MATCH_FOUND e NO_MATCH_FOUND.
SanitizeModelResponse.POLICY_NAME.invocationResult Un campo che indica l'esito dell'invocazione, indipendentemente dallo stato della corrispondenza. Può avere i seguenti elementi:
  • SUCCESS: All filters executed successfully.
  • PARZIALE: alcuni filtri sono stati ignorati o l'esecuzione non è andata a buon fine.
  • ERRORE: tutti i filtri sono stati ignorati o l'esecuzione non è riuscita.
SanitizeModelResponse.POLICY_NAME.raiFilterResult.executionState Risultato dell'esecuzione del filtro AI responsabile. I valori validi includono EXECUTION_SUCCESS e EXECUTION_SKIPPED.
SanitizeModelResponse.POLICY_NAME.raiFilterResult.matchState Stato di corrispondenza del filtro AI responsabile. I valori validi includono MATCH_FOUND e NO_MATCH_FOUND.
SanitizeModelResponse.POLICY_NAME.sdpFilterResult.inspectResult.executionState Stato di esecuzione del risultato dell'ispezione del filtro SDP. I valori validi includono EXECUTION_SUCCESS e EXECUTION_SKIPPED.
SanitizeModelResponse.POLICY_NAME.sdpFilterResult.inspectResult.matchState Stato della corrispondenza del risultato dell'ispezione del filtro SDP. I valori validi includono MATCH_FOUND e NO_MATCH_FOUND.
SanitizeModelResponse.POLICY_NAME.sdpFilterResult.deidentifyResult.executionState Il filtro SDP consente di identificare lo stato di esecuzione del risultato. I valori validi includono EXECUTION_SUCCESS e EXECUTION_SKIPPED.
SanitizeModelResponse.POLICY_NAME.sdpFilterResult.deidentifyResult.matchState Il filtro SDP de identifica lo stato della corrispondenza del risultato. I valori validi includono MATCH_FOUND e NO_MATCH_FOUND.
SanitizeModelResponse.POLICY_NAME.piAndJailbreakFilterResult.executionState Stato di esecuzione dei risultati del filtro prompt injection e jailbreak. I valori validi includono EXECUTION_SUCCESS e EXECUTION_SKIPPED.
SanitizeModelResponse.POLICY_NAME.piAndJailbreakFilterResult.matchState I risultati del filtro prompt injection e jailbreak corrispondono allo stato. I valori validi includono MATCH_FOUND e NO_MATCH_FOUND.
SanitizeModelResponse.POLICY_NAME.csamFilterFilterResult.executionState Stato di esecuzione del filtro CSAM. I valori validi includono EXECUTION_SUCCESS e EXECUTION_SKIPPED.
SanitizeModelResponse.POLICY_NAME.csamFilterFilterResult.matchState Stato della corrispondenza del filtro CSAM. I valori validi includono MATCH_FOUND e NO_MATCH_FOUND.
SanitizeModelResponse.POLICY_NAME.maliciousUriFilterResult.executionState Stato di esecuzione del filtro URI dannoso. I valori validi includono EXECUTION_SUCCESS e EXECUTION_SKIPPED.
SanitizeModelResponse.POLICY_NAME.maliciousUriFilterResult.matchState Stato della corrispondenza del filtro URI dannoso. I valori validi includono MATCH_FOUND e NO_MATCH_FOUND.
SanitizeModelResponse.POLICY_NAME.sanitizationMetadata.errorCode Codice di errore personalizzato sostituito, se presente nella risposta di Model Armor.
SanitizeModelResponse.POLICY_NAME.sanitizationMetadata.errorMessage Codice di errore personalizzato sostituito, se presente nella risposta di Model Armor.
SanitizeModelResponse.POLICY_NAME.csamFilterMatched/code> Valore booleano che indica se il filtro CSAM ha trovato una corrispondenza.
SanitizeModelResponse.POLICY_NAME.maliciousURIs Elenco degli URI dannosi rilevati dal filtro URI dannosi.
SanitizeModelResponse.POLICY_NAME.maliciousURIsDetected Valore booleano che indica se il filtro URI dannoso ha trovato una corrispondenza.
SanitizeModelResponse.POLICY_NAME.matchesFound Valore booleano che indica se uno dei filtri corrisponde.
SanitizeModelResponse.POLICY_NAME.promptInjectionDetected Valore booleano che indica se il filtro di inserimento della richiesta ha trovato una corrispondenza.
SanitizeModelResponse.POLICY_NAME.promptInjectionConfidence Livello di confidenza del rilevamento di prompt injection.
SanitizeModelResponse.POLICY_NAME.raiMatchesFound Valore booleano che indica se il filtro RAI ha trovato una corrispondenza.
SanitizeModelResponse.POLICY_NAME.requestSentToModelArmor Valore booleano che indica se è stata inviata una richiesta a Model Armor.
SanitizeModelResponse.POLICY_NAME.sanitizeOperation Specifica l'operazione eseguita dal criterio. I valori validi includono SANITIZE_USER_PROMPT e SANITIZE_MODEL_RESPONSE.

Messaggi di errore

Questa sezione descrive i codici di errore e i messaggi di errore restituiti e le variabili di errore impostate da Apigee specifiche per il criterio <SanitizeModelResponse>. Queste informazioni sono importanti se stai sviluppando regole di errore per gestire gli errori. Per saperne di più, consulta Informazioni importanti sugli errori relativi alle norme e Gestione degli errori.

Errori di runtime

Codice guasto Stato HTTP Causa
steps.sanitize.model.response.FilterMatched 400 Questo errore si verifica se la richiesta all'utente non supera il controllo del modello di Model Armor.
steps.sanitize.model.response.SanitizationResponseParsingFailed 500 Questo errore si verifica se non è possibile analizzare la risposta di Model Armor.
steps.sanitize.model.response.FailedToExtractUserPrompt 500 Questo errore si verifica se l'estrazione automatica della richiesta all'utente per il valore predefinito non è riuscita.
steps.sanitize.model.response.FailedToExtractLLMResponse 500 Questo errore si verifica se l'estrazione automatica della risposta del modello per il valore predefinito non è riuscita.
steps.sanitize.model.response.InternalError 500 Questo errore si verifica in caso di errore interno del server.
steps.sanitize.model.response.ModelArmorTemplateNameExtractionFailed 500 Questo errore si verifica se non è possibile risolvere il nome del modello.
steps.sanitize.model.response.AuthenticationFailure 500 Questo errore si verifica se il account di servizio non dispone dell'autorizzazione per chiamare l'API Model Armor.
steps.sanitize.model.response.ModelArmorAPIFailed 500 Questo errore si verifica se l'API Model Armor genera un errore.
steps.sanitize.model.response.ModelArmorCalloutError 500 Questo errore si verifica se la chiamata all'API Model Armor non va a buon fine.
steps.sanitize.modelarmor.ServiceUnavailable 500 Questo errore si verifica se il servizio Model Armor non è disponibile.

Errori di deployment

Questi errori possono verificarsi quando esegui il deployment di un proxy contenente questo criterio.

Nome dell'errore Causa
The ModelArmor/TemplateName element is required. Si verifica se l'elemento <TemplateName> in <ModelArmor> non è presente.
The TemplateName element value is required. Si verifica se il valore <TemplateName> è vuoto.

Variabili di errore

Queste variabili vengono impostate quando questo criterio attiva un errore in fase di esecuzione. Per ulteriori informazioni, consulta Informazioni importanti sugli errori relativi alle norme.

Variabili Dove Esempio
fault.name="FAULT_NAME" FAULT_NAME è il nome dell'errore, come indicato nella tabella Errori di runtime sopra. Il nome dell'errore è l'ultima parte del codice dell'errore. fault.name Matches "UnresolvedVariable"
SanitizeModelResponse.POLICY_NAME.failed POLICY_NAME è il nome specificato dall'utente del criterio che ha generato l'errore. SanitizeModelResponse.sanitize-response.failed = true

Esempio di risposta di errore

{
  "fault": {
    "faultstring": "SanitizeModelResponse[sanitize-response]: unable to resolve variable [variable_name]",
    "detail": {
      "errorcode": "steps.sanitizemodelresponse.UnresolvedVariable"
    }
  }
}

Esempio di regola di errore

<FaultRule name="SanitizeModelResponse Faults">
    <Step>
        <Name>SMR-CustomSetVariableErrorResponse</Name>
        <Condition>(fault.name = "SetVariableFailed")</Condition>
    </Step>
    <Condition>(sanitizemodelresponse.failed = true)</Condition>
</FaultRule>

Codice di errore e messaggi di errore del modello Model Armor

Il modello Model Armor supporta l'override dei codici di errore e dei messaggi di errore generati dalle richieste API del criterio SanitizeModelResponse. Se l'utente imposta le sostituzioni, i codici e i messaggi di errore di Model Armor completeranno le variabili di flusso.

Ad esempio, una risposta con codici e messaggi di errore di Model Armor potrebbe essere simile alla seguente:

{
"sanitizationResult": {
  "filterMatchState": "MATCH_FOUND",
  "filterResults": {...},
  "sanitizationMetadata": {
    "errorCode": "890",
    "errorMessage": "get out"
  },
  "invocationResult": "SUCCESS"
  }
}

Schemi

Ogni tipo di norma è definito da uno schema XML (.xsd). Come riferimento, gli schemi delle norme sono disponibili su GitHub.