Richtlinie für SanitizeModelResponse

Diese Seite gilt für Apigee und Apigee Hybrid.

Apigee Edge-Dokumentation aufrufen

Die Richtlinie „SanitizeModelResponse“ schützt KI-Clients vor schädlichen oder anstößigen Inhalten, indem Antworten von generativen KI-Modellen bereinigt werden. Die Richtlinie verwendet Model Armor, um Modellantworten auf schädliche oder anstößige Inhalte zu prüfen. So wird ein nativer Schutz für KI-Clients und ‑Arbeitslasten mit Apigee ermöglicht. Model Armor ist ein Google Cloud Dienst, der KI-Sicherheitsmaßnahmen bietet, um die Risiken zu minimieren, die mit Large Language Models (LLMs) verbunden sind.

Diese Richtlinie wird in Verbindung mit der SanitizeModelResponse-Richtlinie verwendet.

Diese Richtlinie ist eine erweiterbare Richtlinie, deren Verwendung je nach Apigee-Lizenz Auswirkungen auf die Kosten oder die Nutzung haben kann. Informationen zu Richtlinientypen und Auswirkungen auf die Nutzung finden Sie unter Richtlinientypen.

Hinweise

Bevor Sie die Richtlinie „SanitizeModelResponse“ verwenden können, müssen Sie die folgenden Aufgaben ausführen:

  • Erstellen Sie eine Model Armor-Vorlage. Dieser Schritt muss abgeschlossen sein, bevor Sie eine SanitizeModelResponse-Richtlinie erstellen.
  • Legen Sie den API-Endpunkt für den Model Armor-Dienst fest.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Dienstkonto zuzuweisen, mit dem Sie Apigee-Proxys bereitstellen, um die Berechtigungen zu erhalten, die Sie zum Anwenden und Verwenden der Richtlinie „SanitizeModelResponse“ benötigen:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

APIs aktivieren

Enable the Model Armor APIs.

Enable the APIs

Element <SanitizeModelResponse>

Definiert eine SanitizeModelResponse-Richtlinie.

Standardwert Siehe Standardrichtlinie Tab unten
Erforderlich? Erforderlich
Typ Komplexes Objekt
Übergeordnetes Element
Untergeordnete Elemente <DisplayName>
<IgnoreUnresolvedVariables>
<TemplateName>
<UserPromptSource>
<LLMResponseSource>

Das Element <SanitizeModelResponse> verwendet die folgende Syntax:

Syntax

<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>

Standardrichtlinie

Das folgende Beispiel zeigt die Standardeinstellungen, wenn Sie Ihrem Anforderungsablauf in der Apigee-UI eine SanitizeModelResponse-Richtlinie hinzufügen:

<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>

Wenn Sie eine neue SanitizeModelResponse-Richtlinie über die Apigee-Benutzeroberfläche einfügen, enthält die Vorlage Stubs für alle möglichen Vorgänge. Informationen zu den erforderlichen Elementen finden Sie unten.

Dieses Element hat folgende Attribute, die allen Richtlinien gemeinsam sind:

Attribut Standard Erforderlich? Beschreibung
name - Erforderlich

Der interne Name der Richtlinie. Der Wert des Attributs name kann Buchstaben, Ziffern, Leerzeichen, Bindestriche, Unterstriche und Punkte enthalten. Dieser Wert darf 255 Zeichen nicht überschreiten.

Optional können Sie das Element <DisplayName> verwenden, um die Richtlinie im Proxy-Editor der Verwaltungs-UI mit einem anderen Namen in einer natürlichen Sprache zu versehen.

continueOnError false Optional Legen Sie false fest, um einen Fehler zurückzugeben, wenn eine Richtlinie fehlschlägt. Dies ist für die meisten Richtlinien das erwartete Verhalten. Legen Sie true fest, damit die Ablaufausführung auch nach dem Fehlschlagen einer Richtlinie fortgesetzt wird. Weitere Informationen:
enabled wahr Optional Setzen Sie den Wert auf true, um die Richtlinie zu erzwingen. Legen Sie false fest, um die Richtlinie zu deaktivieren. Die Richtlinie wird nicht durchgesetzt, selbst wenn sie mit einem Ablauf verknüpft ist.
async   false Verworfen Dieses Attribut wurde verworfen.

Die folgende Tabelle enthält eine allgemeine Beschreibung der untergeordneten Elemente von <SanitizeModelResponse>:

Untergeordnetes Element Erforderlich? Beschreibung
<DisplayName> Optional Der Name der Richtlinie.

<IgnoreUnresolvedVariables> Optional Gibt an, ob die Verarbeitung beendet wird, wenn die für den Vorlagennamen oder die Model Armor-Nutzlast verwendete Variable nicht aufgelöst wird.
<TemplateName> Erforderlich Die Model Armor-Vorlage, die zum Bereinigen der LLM-Antwort verwendet wurde.

Dieser Wert kann mit den folgenden Apigee-Ablaufvariablen als Vorlage erstellt werden:

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

<UserPromptSource> Erforderlich Der Speicherort der Nutzlast, aus der der Text für die Nutzeraufforderung extrahiert werden soll. Es werden nur String-Textwerte unterstützt.

Dieses Feld unterstützt die Apigee-Syntax für Nachrichtenvorlagen, einschließlich der Verwendung von Variablen oder JSON-Pfadfunktionen.

Beispiel:

{jsonpath('$.contents[-1].parts[-1].text',request.content,false)}
<LLMResponseSource> Erforderlich Der Speicherort der Nutzlast für den LLM-Antworttext, der extrahiert werden soll. Es werden nur String-Textwerte unterstützt.

Dieses Feld unterstützt die Apigee-Syntax für Nachrichtenvorlagen, einschließlich der Verwendung von Variablen oder JSON-Pfadfunktionen.

Beispiel:

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

Verweis auf untergeordnetes Element

In diesem Abschnitt werden die untergeordneten Elemente von <SanitizeModelResponse> beschrieben.

<DisplayName>

Wird zusätzlich zum Attribut name verwendet, um die Richtlinie im Proxy-Editor der Verwaltungs-UI mit einem anderen, natürlicher klingenden Namen zu versehen.

Das Element <DisplayName> ist für alle Richtlinien gleich.

Standardwert
Erforderlich? Optional. Wenn Sie <DisplayName> weglassen, wird der Wert des Attributs name der Richtlinie verwendet.
Typ String
Übergeordnetes Element <PolicyElement>
Untergeordnete Elemente Keine

Das <DisplayName>-Element verwendet die folgende Syntax:

Syntax

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

Beispiel

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

Das <DisplayName>-Element hat keine Attribute oder untergeordneten Elemente.

<IgnoreUnresolvedVariables>

Bestimmt, ob die Verarbeitung beendet wird, wenn eine Variable nicht aufgelöst werden kann. Auf true festlegen, um nicht aufgelöste Variablen zu ignorieren und die Verarbeitung fortzusetzen.

Standardwert Falsch
Erforderlich? Optional
Typ Boolesch
Übergeordnetes Element <SanitizeModelResponse>
Untergeordnete Elemente Keine

<TemplateName>

Die Model Armor-Vorlage.

Standardwert
Erforderlich? Erforderlich
Typ String
Übergeordnetes Element <SanitizeModelResponse>
Untergeordnete Elemente Keine

Das <TemplateName>-Element verwendet die folgende Syntax:

Syntax

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

Beispiel

In diesem Beispiel werden Apigee-Ablaufvariablen verwendet, um die erforderlichen Informationen einzufügen.

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

<UserPromptSource>

Der Speicherort der Nutzlast, aus der der Text für die Nutzeraufforderung extrahiert werden soll. Es werden nur String-Textwerte unterstützt.

Dieses Feld unterstützt die Apigee-Nachrichtenvorlagensyntax, einschließlich der Verwendung von Variablen oder JSON-Pfadfunktionen. Beispiel:

{jsonpath('$.input.prompt.text',request.content,false)}
Standardwert {jsonPath($.contents[-1].parts[-1].text,request.content,true)}
Erforderlich? Erforderlich
Typ String
Übergeordnetes Element <SanitizeModelResponse>
Untergeordnete Elemente Keine

<LLMResponseSource>

Der Speicherort der Nutzlast, die aus der LLM-Antwort extrahiert werden soll. Es werden nur String-Textwerte unterstützt.

Dieses Feld unterstützt die Apigee-Nachrichtenvorlagensyntax, einschließlich der Verwendung von Variablen oder JSON-Pfadfunktionen. Beispiel:

{jsonpath('$.input.prompt.text',request.content,false)}
Standardwert {jsonPath($.candidates[-1].content.parts,response.content,true)}
Erforderlich? Erforderlich
Typ String
Übergeordnetes Element <SanitizeModelResponse>
Untergeordnete Elemente Keine

Ablaufvariablen

Ablaufvariablen können verwendet werden, um das dynamische Laufzeitverhalten für Richtlinien und Abläufe auf der Grundlage von HTTP-Headern oder Nachrichteninhalten oder dem Kontext zu konfigurieren, der im Ablauf verfügbar ist. Weitere Informationen zu Ablaufvariablen finden Sie in der Referenz zu Ablaufvariablen.

Die Richtlinie kann diese schreibgeschützten Variablen während der Ausführung festlegen.

Variablenname Beschreibung
SanitizeModelResponse.POLICY_NAME.templateUsed Gibt an, welche Vorlage für die Modellpanzerung verwendet wird. Beispiel: projects/myproject/locations/us-west1/templates/mytemplate
SanitizeModelResponse.POLICY_NAME.userPrompt Gibt den Prompt-Inhalt an, der für den Aufruf von Model Armor verwendet wird, um den Inhalt zu bereinigen.
SanitizeModelResponse.POLICY_NAME.modelResponse Gibt den Inhalt der LLM-Antwort an, der für den Aufruf von Model Armor verwendet wird, um die Inhalte zu bereinigen.
SanitizeModelResponse.POLICY_NAME.responseFromModelArmor Gibt die JSON-Antwort von Model Armor an. Model Armor.
SanitizeModelResponse.POLICY_NAME.filterMatchState Gibt an, ob der Filter zutrifft. Zulässige Werte sind MATCH_FOUND und NO_MATCH_FOUND.
SanitizeModelResponse.POLICY_NAME.invocationResult Ein Feld, das das Ergebnis des Aufrufs angibt, unabhängig vom Abgleichstatus. Es kann Folgendes enthalten:
  • ERFOLG: Alle Filter wurden erfolgreich ausgeführt.
  • TEILWEISE: Einige Filter wurden übersprungen oder konnten nicht ausgeführt werden.
  • FEHLER: Alle Filter wurden übersprungen oder konnten nicht ausgeführt werden.
SanitizeModelResponse.POLICY_NAME.raiFilterResult.executionState Ergebnis der Ausführung des RAI-Filters. Zulässige Werte sind EXECUTION_SUCCESS und EXECUTION_SKIPPED.
SanitizeModelResponse.POLICY_NAME.raiFilterResult.matchState Status der RAI-Filterübereinstimmung. Zulässige Werte sind MATCH_FOUND und NO_MATCH_FOUND.
SanitizeModelResponse.POLICY_NAME.sdpFilterResult.inspectResult.executionState Ausführungsstatus des SDP-Filterprüfungsergebnisses. Zulässige Werte sind EXECUTION_SUCCESS und EXECUTION_SKIPPED.
SanitizeModelResponse.POLICY_NAME.sdpFilterResult.inspectResult.matchState Status der Übereinstimmung des SDP-Filterprüfungsergebnisses. Zulässige Werte sind MATCH_FOUND und NO_MATCH_FOUND.
SanitizeModelResponse.POLICY_NAME.sdpFilterResult.deidentifyResult.executionState Ausführungsstatus des SDP-Filters für die De-Identifizierung. Zulässige Werte sind EXECUTION_SUCCESS und EXECUTION_SKIPPED.
SanitizeModelResponse.POLICY_NAME.sdpFilterResult.deidentifyResult.matchState Status der Übereinstimmung des Ergebnisses der Identifizierung durch den SDP-Filter. Zulässige Werte sind MATCH_FOUND und NO_MATCH_FOUND.
SanitizeModelResponse.POLICY_NAME.piAndJailbreakFilterResult.executionState Ausführungsstatus der Ergebnisse des Filters für Prompt-Einschleusung und Jailbreaking. Zulässige Werte sind EXECUTION_SUCCESS und EXECUTION_SKIPPED.
SanitizeModelResponse.POLICY_NAME.piAndJailbreakFilterResult.matchState Die Ergebnisse des Filters für Prompt-Einschleusung und Jailbreaking stimmen mit dem Status überein. Zulässige Werte sind MATCH_FOUND und NO_MATCH_FOUND.
SanitizeModelResponse.POLICY_NAME.csamFilterFilterResult.executionState Ausführungsstatus des CSAM-Filters. Zulässige Werte sind EXECUTION_SUCCESS und EXECUTION_SKIPPED.
SanitizeModelResponse.POLICY_NAME.csamFilterFilterResult.matchState Status der Übereinstimmung mit dem CSAM-Filter. Zulässige Werte sind MATCH_FOUND und NO_MATCH_FOUND.
SanitizeModelResponse.POLICY_NAME.maliciousUriFilterResult.executionState Ausführungsstatus des Filters für schädliche URIs. Zulässige Werte sind EXECUTION_SUCCESS und EXECUTION_SKIPPED.
SanitizeModelResponse.POLICY_NAME.maliciousUriFilterResult.matchState Status des Abgleichs des Filters für schädliche URIs. Zulässige Werte sind MATCH_FOUND und NO_MATCH_FOUND.
SanitizeModelResponse.POLICY_NAME.sanitizationMetadata.errorCode Benutzerdefinierter überschriebener Fehlercode, falls in der Model Armor-Antwort vorhanden.
SanitizeModelResponse.POLICY_NAME.sanitizationMetadata.errorMessage Benutzerdefinierter überschriebener Fehlercode, falls in der Model Armor-Antwort vorhanden.
SanitizeModelResponse.POLICY_NAME.csamFilterMatched/code> Boolescher Wert, der angibt, ob der CSAM-Filter eine Übereinstimmung gefunden hat.
SanitizeModelResponse.POLICY_NAME.maliciousURIs Angehängte Liste der schädlichen URIs, die vom Filter für schädliche URIs erkannt wurden.
SanitizeModelResponse.POLICY_NAME.maliciousURIsDetected Boolescher Wert, der angibt, ob der Filter für schädliche URIs eine Übereinstimmung gefunden hat.
SanitizeModelResponse.POLICY_NAME.matchesFound Boolescher Wert, der angibt, ob einer der Filter übereingestimmt hat.
SanitizeModelResponse.POLICY_NAME.promptInjectionDetected Boolescher Wert, der angibt, ob der Filter für Prompt-Injection-Angriffe übereinstimmt.
SanitizeModelResponse.POLICY_NAME.promptInjectionConfidence Konfidenzniveau der Erkennung von Prompt Injection.
SanitizeModelResponse.POLICY_NAME.raiMatchesFound Boolescher Wert, der angibt, ob der RAI-Filter übereinstimmt.
SanitizeModelResponse.POLICY_NAME.requestSentToModelArmor Boolescher Wert, der angibt, ob eine Anfrage an Model Armor gesendet wurde.
SanitizeModelResponse.POLICY_NAME.sanitizeOperation Gibt den Vorgang an, der von der Richtlinie ausgeführt wird. Zulässige Werte: SANITIZE_USER_PROMPT und SANITIZE_MODEL_RESPONSE.

Fehlerreferenz

In diesem Abschnitt werden die Fehlercodes und Fehlermeldungen beschrieben, die zurückgegeben werden, sowie die Fehlervariablen, die von Apigee für die <SanitizeModelResponse>-Richtlinie festgelegt werden. Diese Informationen sind wichtig, wenn Sie Fehlerregeln zur Verarbeitung von Fehlern entwickeln. Weitere Informationen finden Sie unter Was Sie über Richtlinienfehler wissen müssen und Fehler beheben.

Laufzeitfehler

Fehlercode HTTP-Status Ursache
steps.sanitize.model.response.FilterMatched 400 Dieser Fehler tritt auf, wenn der Nutzer-Prompt die Vorlagenprüfung von Model Armor nicht besteht.
steps.sanitize.model.response.SanitizationResponseParsingFailed 500 Dieser Fehler tritt auf, wenn die Model Armor-Antwort nicht geparst werden kann.
steps.sanitize.model.response.FailedToExtractUserPrompt 500 Dieser Fehler tritt auf, wenn die automatische Extraktion der Nutzeraufforderung für den Standardwert fehlgeschlagen ist.
steps.sanitize.model.response.FailedToExtractLLMResponse 500 Dieser Fehler tritt auf, wenn die automatische Extraktion der Modellantwort für den Standardwert fehlgeschlagen ist.
steps.sanitize.model.response.InternalError 500 Dieser Fehler tritt auf, wenn ein interner Serverfehler vorliegt.
steps.sanitize.model.response.ModelArmorTemplateNameExtractionFailed 500 Dieser Fehler tritt auf, wenn der Vorlagenname nicht aufgelöst werden kann.
steps.sanitize.model.response.AuthenticationFailure 500 Dieser Fehler tritt auf, wenn das Dienstkonto keine Berechtigung zum Aufrufen der Model Armor API hat.
steps.sanitize.model.response.ModelArmorAPIFailed 500 Dieser Fehler tritt auf, wenn die Model Armor API einen Fehler ausgibt.
steps.sanitize.model.response.ModelArmorCalloutError 500 Dieser Fehler tritt auf, wenn der Model Armor API-Aufruf fehlschlägt.
steps.sanitize.modelarmor.ServiceUnavailable 500 Dieser Fehler tritt auf, wenn der Model Armor-Dienst nicht verfügbar ist.

Bereitstellungsfehler

Diese Fehler können auftreten, wenn Sie einen Proxy mit dieser Richtlinie bereitstellen.

Fehlername Ursache
The ModelArmor/TemplateName element is required. Tritt auf, wenn das Element <TemplateName> in <ModelArmor> nicht vorhanden ist.
The TemplateName element value is required. Tritt auf, wenn der Wert <TemplateName> leer ist.

Fehlervariablen

Diese Variablen werden festgelegt, wenn diese Richtlinie zur Laufzeit einen Fehler auslöst. Weitere Informationen finden Sie unter Was Sie über Richtlinienfehler wissen müssen.

Variablen Wo Beispiel
fault.name="FAULT_NAME" FAULT_NAME ist der Name des Fehlers, der in der obigen Tabelle Laufzeitfehler aufgeführt ist. Der Fehlername ist der letzte Teil des Fehlercodes. fault.name Matches "UnresolvedVariable"
SanitizeModelResponse.POLICY_NAME.failed POLICY_NAME ist der benutzerdefinierte Name der Richtlinie, die den Fehler ausgelöst hat. SanitizeModelResponse.sanitize-response.failed = true

Beispiel für eine Fehlerantwort

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

Beispiel für eine Fehlerregel

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

Fehlercode und Fehlermeldungen für Model Armor-Vorlagen

Die Model Armor-Vorlage unterstützt das Überschreiben von Fehlercodes und Fehlermeldungen, die von den API-Anfragen der SanitizeModelResponse-Richtlinie ausgegeben werden. Wenn der Nutzer die Überschreibungen festlegt, werden die Flussvariablen mit den Fehlercodes und Fehlermeldungen von Model Armor gefüllt.

Eine Antwort mit Model Armor-Fehlercodes und ‑Meldungen könnte beispielsweise so aussehen:

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

Schemas

Jeder Richtlinientyp wird durch ein XML-Schema (.xsd) definiert. Zu Referenzzwecken sind Richtlinienschemas auf GitHub verfügbar.