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 gesäubert werden. Bei der Richtlinie wird Model Armor verwendet, 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-Sicherheits- und Schutzmaßnahmen bietet, um die mit Large Language Models (LLMs) verbundenen Risiken zu minimieren.
Diese Richtlinie wird in Verbindung mit der Richtlinie „SanitizeModelResponse“ 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 Richtlinie für die SanitizeModelResponse-Funktion 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:
-
Model Armor User (
roles/modelarmor.user
) -
Model Armor Viewer (
roles/modelarmor.viewer
)
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.
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 <SanitizeModelResponse>
-Element 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 Anfrageablauf 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 Richtlinie für die 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 Optional können Sie das Element |
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 Variable, die für den Vorlagennamen oder die Model Armor-Nutzlast verwendet wird, nicht aufgelöst wird. |
<TemplateName> |
Erforderlich | Die Model Armor-Vorlage, die zum Entfernen von schädlichen Inhalten aus der LLM-Antwort verwendet wird.
Dieser Wert kann mit den folgenden Apigee-Ablaufvariablen in eine Vorlage eingefügt werden: projects/{organization.name}/locations/{system.region.name}/templates/{id} |
<UserPromptSource> |
Erforderlich | Der Speicherort der Nutzlast für den zu extrahierenden Prompttext. Es werden nur Stringwerte unterstützt.
Dieses Feld unterstützt die Syntax von Apigee-Nachrichtenvorlagen, einschließlich der Verwendung von Variablen oder JSON-Pfadfunktionen. {jsonpath('$.contents[-1].parts[-1].text',request.content,false)} |
<LLMResponseSource> |
Erforderlich | Der Speicherort der Payload für den zu extrahierenden LLM-Antworttext. Es werden nur Stringwerte unterstützt.
Dieses Feld unterstützt die Syntax von Apigee-Nachrichtenvorlagen, einschließlich der Verwendung von Variablen oder JSON-Pfadfunktionen. {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 für den zu extrahierenden Prompttext. Es werden nur Stringwerte unterstützt.
Dieses Feld unterstützt die Syntax von Apigee-Nachrichtenvorlagen, 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 für die zu extrahierende LLM-Antwort. Es werden nur Stringwerte unterstützt.
Dieses Feld unterstützt die Syntax von Apigee-Nachrichtenvorlagen, 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 Panzerungsvorlage für das Modell 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 zum Entfernen unangemessener Inhalte verwendet wird. |
SanitizeModelResponse.POLICY_NAME.modelResponse |
Gibt den Inhalt der LLM-Antwort an, der für den Aufruf von Model Armor verwendet wird, um den Inhalt zu entfernen. |
SanitizeModelResponse.POLICY_NAME.responseFromModelArmor |
Gibt die JSON-Antwort von Model Armor an. Model Armor |
SanitizeModelResponse.POLICY_NAME.filterMatchState |
Gibt an, ob der Filter übereinstimmt. Zulässige Werte sind MATCH_FOUND und NO_MATCH_FOUND . |
SanitizeModelResponse.POLICY_NAME.invocationResult |
Ein Feld, das das Ergebnis der Aufrufs angibt, unabhängig vom Abgleichsstatus. Es kann Folgendes enthalten:
|
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 Übereinstimmung mit dem RAI-Filter. Zulässige Werte sind MATCH_FOUND und NO_MATCH_FOUND . |
SanitizeModelResponse.POLICY_NAME.sdpFilterResult.inspectResult.executionState |
Ausführungsstatus des SDP-Filter-Prüfergebnisses. Zulässige Werte sind EXECUTION_SUCCESS und EXECUTION_SKIPPED . |
SanitizeModelResponse.POLICY_NAME.sdpFilterResult.inspectResult.matchState |
Status der Übereinstimmung des SDP-Filter-Inspektionsergebnisses. Zulässige Werte sind MATCH_FOUND und NO_MATCH_FOUND . |
SanitizeModelResponse.POLICY_NAME.sdpFilterResult.deidentifyResult.executionState |
SDP-Filter zum Identifizieren des Ausführungsstatus des Ergebnisses. Zulässige Werte sind EXECUTION_SUCCESS und EXECUTION_SKIPPED . |
SanitizeModelResponse.POLICY_NAME.sdpFilterResult.deidentifyResult.matchState |
Der SDP-Filter identifiziert den Status der Ergebnisübereinstimmung. 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-Injection 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 |
Abgleichsstatus 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 Filter für CSAM-Inhalte 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 übereinstimmt. |
SanitizeModelResponse.POLICY_NAME.promptInjectionDetected |
Boolescher Wert, der angibt, ob der Prompt-Injection-Filter übereinstimmt hat. |
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 sind SANITIZE_USER_PROMPT und SANITIZE_MODEL_RESPONSE . |
Fehlerreferenz
In diesem Abschnitt werden die zurückgegebenen Fehlercodes und Fehlermeldungen beschrieben, die von Apigee speziell für die Richtlinie <SanitizeModelResponse>
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 die Nutzeraufforderung die Model Armor-Vorlagenprüfung nicht besteht. |
steps.sanitize.model.response.SanitizationResponseParsingFailed |
500 |
Dieser Fehler tritt auf, wenn die Antwort von Model Armor nicht geparst werden kann. |
steps.sanitize.model.response.FailedToExtractUserPrompt |
500 |
Dieser Fehler tritt auf, wenn die automatische Textvorlage für den Standardwert nicht extrahiert werden konnte. |
steps.sanitize.model.response.FailedToExtractLLMResponse |
500 |
Dieser Fehler tritt auf, wenn die automatische Modellantwort für den Standardwert nicht extrahiert werden konnte. |
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 Name der Vorlage nicht aufgelöst werden kann. |
steps.sanitize.model.response.AuthenticationFailure |
500 |
Dieser Fehler tritt auf, wenn das Dienstkonto nicht berechtigt ist, die Model Armor API aufzurufen. |
steps.sanitize.model.response.ModelArmorAPIFailed |
500 |
Dieser Fehler tritt auf, wenn die Model Armor API einen Fehler zurückgibt. |
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. |
Dieser Fehler tritt auf, wenn das Element <TemplateName> in <ModelArmor> nicht vorhanden ist. |
The TemplateName element value is required. |
Tritt auf, wenn der Wert für <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>
Fehlercodes und Fehlermeldungen der Model Armor-Vorlage
Die Model Armor-Vorlage unterstützt das Überschreiben von Fehlercodes und Fehlermeldungen, die von den API-Anfragen der Richtlinie „SanitizeModelResponse“ ausgelöst werden. Wenn der Nutzer die Überschreibungen festlegt, werden die Fehlercodes und Fehlermeldungen von Model Armor in die Ablaufvariablen eingefügt.
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.