本頁面適用於 Apigee 和 Apigee Hybrid。
查看
Apigee Edge 說明文件。
SanitizeModelResponse 政策會清理生成式 AI 模型的回覆,保護 AI 用戶端免受有害或令人反感的內容影響。這項政策會使用 Model Armor 評估模型回覆是否包含有害或令人反感的內容,為使用 Apigee 的 AI 用戶端和工作負載提供原生保護。Model Armor 是 Google Cloud 服務,提供 AI 安全防護措施,可降低大型語言模型 (LLM) 相關風險。
這項政策會與 SanitizeUserPrompt 政策搭配使用。
這項政策屬於可擴充政策,使用這項政策可能會產生費用或影響使用率,具體取決於您的 Apigee 授權。如要瞭解政策類型和使用影響,請參閱「政策類型」。
事前準備
使用 SanitizeModelResponse 政策前,請務必完成下列工作:
- 建立 Model Armor 範本。您必須先完成這個步驟,才能建立 SanitizeModelResponse 政策。
- 設定 Model Armor 服務的 API 端點。
必要的角色
如要取得套用及使用 SanitizeModelResponse 政策所需的權限,請要求管理員在您用於部署 Apigee Proxy 的服務帳戶,授予下列 IAM 角色:
- Model Armor 使用者 (
roles/modelarmor.user) - Model Armor 檢視者 (
roles/modelarmor.viewer)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
啟用 API
啟用 Model Armor API (如有尚未啟用的 API)。
啟用 API 所需的角色
您必須具備 serviceusage.services.enable 權限,才能啟用 API。如果您建立了專案,可能已透過擁有者角色 (roles/owner) 取得這項權限。否則,您可以透過 Service Usage 管理員角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。
<SanitizeModelResponse> 元素
定義 SanitizeModelResponse 政策。
| 預設值 | 請參閱下方的「預設政策」分頁 |
| 必填與否 | 必填 |
| 類型 | 複雜物件 |
| 父項元素 | 不適用 |
| 子元素 |
<DisplayName><IgnoreUnresolvedVariables><ModelArmor><UserPromptSource><LLMResponseSource><FunctionCallSource><ContinuousScan> |
<SanitizeModelResponse> 元素使用下列語法:
語法
<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>預設政策
以下範例顯示在 Apigee UI 中,將 SanitizeModelResponse 政策新增至要求流程時的預設設定:
<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>使用 Apigee UI 插入新的 SanitizeModelResponse 政策時,範本會包含所有可能作業的虛設常式。請參閱下方資訊,瞭解必要元素。
這個元素包含下列所有政策都適用的屬性:
| 屬性 | 預設 | 是否必要? | 說明 |
|---|---|---|---|
name |
不適用 | 必要 |
政策的內部名稱。 您可以選擇使用 |
continueOnError |
false | 選用 | 將其設為 false,即可在政策失敗時傳回錯誤。這是大多數政策的預期行為。將其設為 true,即使政策失敗,流程執行作業仍會繼續進行。另請參閱:
|
enabled |
是 | 選用 | 設為 true 即可強制執行政策。設為 false 即可關閉政策。即使政策仍附加至流程,系統也不會強制執行這項政策。 |
async |
false | 已淘汰 | 此屬性已淘汰。 |
下表概略說明 <SanitizeModelResponse> 的子元素:
| 子元素 | 是否必要 | 說明 |
|---|---|---|
<DisplayName> |
選用 | 政策名稱。 |
<IgnoreUnresolvedVariables> |
選用 | 指定如果用於範本名稱或 Model Armor 酬載的變數無法解析,是否要停止處理。 |
<ModelArmor> |
必填 | 包含指定 Model Armor 範本所需的資訊。 |
<UserPromptSource> |
選用 | 要從哪個酬載位置擷取使用者提示詞文字。政策會將這段文字傳送至 Model Armor,做為回覆清理作業的背景資訊。如果省略這個元素,政策只會將 LLM 回覆傳送至 Model Armor 進行清理,且政策會成功部署及執行。僅支援字串文字值。
這個欄位支援 Apigee 訊息範本語法,包括使用 變數或 JSON 路徑函式。 例如: {jsonpath('$.contents[-1].parts[-1].text',request.content,false)} |
<LLMResponseSource> |
選用 | 要擷取的 LLM 回覆文字酬載位置。如省略,則會套用預設的 Agent Platform generateContent JSON 路徑:{jsonPath('$.candidates[-1].content.parts',response.content)}。僅支援字串文字值。這個欄位支援 Apigee 訊息範本語法,包括使用 變數或 JSON 路徑函式。 例如: {jsonpath('$.input.prompt.text',request.content,false)} |
<FunctionCallSource> |
選用 | 要從模型回覆中擷取的函式呼叫引數位置。如果 <LLMResponseSource> 在函式呼叫輪次中傳回空白,政策會使用這個元素做為備用。預設: |
<ContinuousScan> |
選用 | 指定是否要檢查整個串流 (SSE) 回覆,只有在 Model Armor 檢查後,才會將每個事件傳送至用戶端。僅在政策於 SSE 預設: |
清理串流伺服器傳送事件 (SSE) 回覆
在 SSE EventFlow 中,使用 <ContinuousScan> 選擇下列其中一個選項:分別檢查每個事件 (false,預設),或使用 Model Armor 串流清理 (true) 檢查整個串流。使用 true 時,完整回覆通常會更快完成,因為政策會在模型仍在生成時,透過一個連線檢查串流,而不是為每個事件提出個別要求。不過,生成第一個詞元所需的時間可能較長。如要將政策新增至 EventFlow,請參閱「在 EventFlow 中使用 Apigee Model Armor 政策」。
下表比較這兩個選項:
| 行為 | false (預設):分別計算每個事件 |
true:整個串流 |
|---|---|---|
| 文字檢查方式 | 每個事件各自獨立,不含先前事件的文字。 | 整個串流,並以先前事件的文字做為背景資訊。 |
| 用戶端收到事件時 | 在該事件的檢查之後。 | Model Armor 檢查後。 |
| Model Armor 要求 | 每個事件一次。 | 每個回覆只能有一個。 |
| 詞元數量上限 | 按要求計費。 | 回覆中的詞元總數沒有限制。 |
<ContinuousScan> 元素僅存在於 SanitizeModelResponse 政策,不適用於 SanitizeUserPrompt 政策。
設定持續掃描
設定 <ContinuousScan>true</ContinuousScan>,並將 <LLMResponseSource> 指向目前事件 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>
請根據模型的串流格式,使用相應的 <LLMResponseSource> 運算式:
| 串流格式 | <LLMResponseSource> |
|---|---|
Gemini (streamGenerateContent?alt=sse) |
{jsonPath('$.candidates[-1].content.parts[-1].text',response.event.current.data,true)} |
| 與 OpenAI 相容的對話完成 | {jsonPath('$.choices[-1].delta.content',response.event.current.data,true)} |
| Anthropic Claude | {jsonPath('$.delta.text',response.event.current.data,true)} |
相符項目和錯誤
<ContinuousScan> 設為 true 時,錯誤可能是暫時性或終止性:
| 類型 | 範例 | 處理方式 |
|---|---|---|
| Transient | 與 Model Armor 的連線中斷,或 Model Armor 暫時無法使用。 | 已重試。Apigee 會重新連線並再次檢查尚未傳送的文字,因此不會略過任何事件,也不會傳送未經檢查的事件。無論 continueOnError 為何,每個回覆最多會發生兩次。如果持續失敗,錯誤就會變成終端錯誤。 |
| 終端機 | 篩選器相符、驗證或權限錯誤、超出 Model Armor 配額,或 Model Armor 在 60 秒逾時內未回應。 | 未重試。檢查結束,continueOnError 會決定用戶端收到的內容,如下表所示。 |
如果 <ContinuousScan> 設為 true,政策就不會提供 Model Armor 的 Sensitive Data Protection (SDP) 去識別化 (遮蓋) 文字。Apigee 會原封不動地發布事件,並像處理其他比對一樣處理去識別化比對。
發生終端錯誤時,continueOnError 屬性會決定用戶端收到的內容:
continueOnError |
客戶收到的內容 |
|---|---|
false (預設) |
用戶端會收到通過檢查的事件,然後收到含有錯誤的 SSE 事件,例如 steps.sanitize.model.response.FilterMatched、steps.sanitize.modelarmor.ModelArmorAPIFailed 或 steps.sanitize.modelarmor.AuthenticationFailure。接著,串流就會結束。用戶端不會收到未檢查或相符的文字。 |
true |
用戶端會收到完整的回應,包括相符的文字和其後的任何內容。終端機錯誤不會引發錯誤,其餘回應則會未經檢查就通過。這項政策會將 SanitizeModelResponse.POLICY_NAME.failed 設為 true,以便 EventFlow 中的後續步驟對其執行操作。 |
如果將 <ContinuousScan> 設為 false,每個事件都是獨立的要求,且不會重試重新連線。使用 continueOnError="true" 時,比對結果只會影響該事件,政策仍會檢查後續事件。
配額與限制
- 使用
<ContinuousScan>true</ContinuousScan>時,整個串流回覆會計為一項要求,計入專案的 Model Armor 配額,每次重新連線也會計為一項要求。使用false時,每個 SSE 事件都是獨立的要求。 - 使用
<ContinuousScan>true</ContinuousScan>時,回覆中的詞元總數沒有限制。否則,每項要求都會受限於 Model Armor 的權杖限制。
子元素參考資料
本節說明 <SanitizeModelResponse> 的子元素。
<DisplayName>
除了 name 屬性之外,您也可以在管理 UI 代理程式編輯器中使用其他更自然的名稱標記政策。
<DisplayName> 元素適用於所有政策。
| 預設值 | 不適用 |
| 是否必要? | (非必要) 如果省略 <DisplayName>,系統會使用政策的 name 屬性值。 |
| 類型 | 字串 |
| 上層元素 | <PolicyElement> |
| 子元素 | 無 |
<DisplayName> 元素使用以下語法:
語法
<PolicyElement> <DisplayName>POLICY_DISPLAY_NAME</DisplayName> ... </PolicyElement>
範例
<PolicyElement> <DisplayName>My Validation Policy</DisplayName> </PolicyElement>
<DisplayName> 元素沒有屬性或子項元素。
<IgnoreUnresolvedVariables>
決定是否在變數未解析時停止處理。設為 true 即可忽略未解析的變數並繼續處理。
| 預設值 | 否 |
| 必填與否 | 選用 |
| 類型 | 布林值 |
| 父項元素 |
<SanitizeModelResponse>
|
| 子元素 | 無 |
<ModelArmor>
包含 Model Armor 範本設定。<TemplateName> 子元素會指定要使用哪個 Model Armor 範本來清理 LLM 回覆。
| 預設值 | 不適用 |
| 必填與否 | 必填 |
| 類型 | 複雜物件 |
| 父項元素 |
<SanitizeModelResponse>
|
| 子元素 |
<TemplateName>
|
<ModelArmor> 元素使用下列語法:
<ModelArmor>
<TemplateName>projects/{project}/locations/{location}/templates/{template-name}</TemplateName>
</ModelArmor><TemplateName>
Model Armor 範本。
| 預設值 | 不適用 |
| 必填與否 | 必填 |
| 類型 | 字串 |
| 父項元素 |
<ModelArmor>
|
| 子元素 | 無 |
<TemplateName> 元素使用下列語法:
語法
<ModelArmor>
<TemplateName>projects/{project}/locations/{location}/templates/{template-name}</TemplateName>
</ModelArmor>範例
這個範例使用 Apigee 流程變數填入必要資訊。
<ModelArmor> <TemplateName>projects/{organization.name}/locations/{system.region.name}/templates/{id}</TemplateName> </ModelArmor>
<UserPromptSource>
要從哪個酬載位置擷取使用者提示詞文字。如果提供這項元素,政策會將使用者提示詞和模型回覆一併傳送至 Model Armor,以便進行內容感知清理。如果省略這個元素,政策只會清理模型回覆,並成功部署及執行。僅支援字串文字值。
這個欄位支援 Apigee 訊息範本語法,包括使用 變數或 JSON 路徑函式。例如:
{jsonpath('$.input.prompt.text',request.content,false)}
| 預設值 | 不適用 |
| 必填與否 | 選用 |
| 類型 | 字串 |
| 父項元素 |
<SanitizeModelResponse>
|
| 子元素 | 無 |
<LLMResponseSource>
要擷取的 LLM 回覆酬載位置。僅支援字串文字值。
這個欄位支援 Apigee 訊息範本語法,包括使用 變數或 JSON 路徑函式。例如:
{jsonpath('$.input.prompt.text',request.content,false)}
| 預設值 | {jsonPath('$.candidates[-1].content.parts',response.content)} |
| 必填與否 | 選用 |
| 類型 | 字串 |
| 父項元素 |
<SanitizeModelResponse>
|
| 子元素 | 無 |
<FunctionCallSource>
要從模型回覆中擷取的函式呼叫引數位置。當 <LLMResponseSource> 傳回空白時,政策會使用這個元素做為備用方案。當模型傳回函式呼叫叫用而非文字內容時,就會發生這種情況。
這個欄位支援訊息範本語法,包括 JSON Path 函式。
| 預設值 | {jsonPath('$.candidates[-1].content.parts[-1].functionCall.args',response.content)} |
| 必填與否 | 選用 |
| 類型 | 字串 |
| 父項元素 |
<SanitizeModelResponse>
|
| 子元素 | 無 |
<ContinuousScan>
設為 true,即可使用 Model Armor 串流清理功能,將整個串流 (SSE) 回覆視為單一串流檢查。政策會檢查每個事件,以及所有先前事件的文字,用戶端只有在 Model Armor 檢查後,才會收到完整且未變更的事件。這項政策不會傳送 Model Armor 的 Sensitive Data Protection (SDP) 去識別化 (遮蓋) 文字。
如果設為 false 或省略,政策會分別檢查每個事件。
只有在政策於 SSE EventFlow 中執行時,這個元素才會套用,在其他地方則不會生效。詳情請參閱「清理串流伺服器傳送事件 (SSE) 回應」。
| 預設值 | 否 |
| 必填與否 | 選用 |
| 類型 | 布林值 |
| 父項元素 |
<SanitizeModelResponse>
|
| 子元素 | 無 |
<ContinuousScan> 元素使用下列語法:
<ContinuousScan>true</ContinuousScan>
流程變數
流程變數可用於根據 HTTP 標頭或訊息內容,或流程中可用的內容,設定政策和流程的動態執行階段行為。如要進一步瞭解流程變數,請參閱「流程變數參考資料」。
這項政策會在執行期間提供下列一組唯讀流程變數。您可以將這些流程變數與 DataCapture 政策搭配使用,建立自訂數據分析報表。詳情請參閱「依據資料擷取政策收集顧客數位資料」。
| 變數名稱 | 說明 |
|---|---|
SanitizeModelResponse.POLICY_NAME.templateUsed |
指定要使用的 Model Armor 範本。例如:
projects/myproject/locations/us-west1/templates/mytemplate |
SanitizeModelResponse.POLICY_NAME.userPrompt |
指定呼叫 Model Armor 清理內容時使用的提示內容。 |
SanitizeModelResponse.POLICY_NAME.modelResponse |
指定呼叫 Model Armor 時使用的 LLM 回覆內容,以便清理內容。 |
SanitizeModelResponse.POLICY_NAME.responseFromModelArmor |
指定 Model Armor 的 JSON 回覆。如果 <ContinuousScan> 設為 true,則會包含最近的回覆。 |
SanitizeModelResponse.POLICY_NAME.filterMatchState |
指定篩選器是否相符。有效值包括 MATCH_FOUND 和 NO_MATCH_FOUND。 |
SanitizeModelResponse.POLICY_NAME.invocationResult |
這個欄位會指出叫用結果,無論比對狀態為何。可能具有下列值:
|
SanitizeModelResponse.POLICY_NAME.raiFilterResult.executionState |
RAI 篩選器執行結果。有效值包括 EXECUTION_SUCCESS 和 EXECUTION_SKIPPED。 |
SanitizeModelResponse.POLICY_NAME.raiFilterResult.matchState |
RAI 篩選器比對狀態。有效值包括 MATCH_FOUND 和 NO_MATCH_FOUND。 |
SanitizeModelResponse.POLICY_NAME.sdpFilterResult.inspectResult.executionState |
SDP 篩選器檢查結果執行狀態。有效值包括 EXECUTION_SUCCESS 和 EXECUTION_SKIPPED。 |
SanitizeModelResponse.POLICY_NAME.sdpFilterResult.inspectResult.matchState |
SDP 篩選器檢查結果比對狀態。有效值包括 MATCH_FOUND 和 NO_MATCH_FOUND。 |
SanitizeModelResponse.POLICY_NAME.sdpFilterResult.deidentifyResult.executionState |
SDP 篩選器去識別化結果執行狀態。有效值包括 EXECUTION_SUCCESS 和 EXECUTION_SKIPPED。 |
SanitizeModelResponse.POLICY_NAME.sdpFilterResult.deidentifyResult.matchState |
SDP 篩選器去識別化結果比對狀態。有效值包括 MATCH_FOUND 和 NO_MATCH_FOUND。 |
SanitizeModelResponse.POLICY_NAME.piAndJailbreakFilterResult.executionState |
提示詞注入和越獄篩選器結果執行狀態。有效值包括 EXECUTION_SUCCESS 和 EXECUTION_SKIPPED。 |
SanitizeModelResponse.POLICY_NAME.piAndJailbreakFilterResult.matchState |
提示詞注入和越獄篩選器結果比對狀態。有效值包括 MATCH_FOUND 和 NO_MATCH_FOUND。 |
SanitizeModelResponse.POLICY_NAME.csamFilterFilterResult.executionState |
兒少性虐待內容篩選器執行狀態。有效值包括 EXECUTION_SUCCESS 和 EXECUTION_SKIPPED。 |
SanitizeModelResponse.POLICY_NAME.csamFilterFilterResult.matchState |
兒少性虐待內容篩選器比對狀態。有效值包括 MATCH_FOUND 和 NO_MATCH_FOUND。 |
SanitizeModelResponse.POLICY_NAME.maliciousUriFilterResult.executionState |
惡意 URI 篩選器執行狀態。有效值包括 EXECUTION_SUCCESS 和 EXECUTION_SKIPPED。 |
SanitizeModelResponse.POLICY_NAME.maliciousUriFilterResult.matchState |
惡意 URI 篩選器比對狀態。有效值包括 MATCH_FOUND 和 NO_MATCH_FOUND。 |
SanitizeModelResponse.POLICY_NAME.sanitizationMetadata.errorCode |
Model Armor 回應中自訂覆寫的錯誤代碼 (如有)。 |
SanitizeModelResponse.POLICY_NAME.sanitizationMetadata.errorMessage |
Model Armor 回應中自訂覆寫的錯誤代碼 (如有)。 |
SanitizeModelResponse.POLICY_NAME.csamFilterMatched |
布林值,指出 CSAM 篩選器是否相符。 |
SanitizeModelResponse.POLICY_NAME.maliciousURIs |
惡意 URI 篩選器偵測到的惡意 URI 附加清單。 |
SanitizeModelResponse.POLICY_NAME.maliciousURIsDetected |
布林值,指出惡意 URI 篩選器是否相符。 |
SanitizeModelResponse.POLICY_NAME.matchesFound |
布林值,表示是否有任何篩選器相符。 |
SanitizeModelResponse.POLICY_NAME.promptInjectionDetected |
布林值,表示提示詞注入篩選器是否相符。 |
SanitizeModelResponse.POLICY_NAME.promptInjectionConfidence |
提示詞注入偵測的信賴水準。 |
SanitizeModelResponse.POLICY_NAME.raiMatchesFound |
布林值,表示是否與 RAI 篩選器相符。 |
SanitizeModelResponse.POLICY_NAME.requestSentToModelArmor |
指定傳送至 Model Armor 的 JSON 要求。如果 <ContinuousScan> 設為 true,則會包含最近的要求。 |
SanitizeModelResponse.POLICY_NAME.sanitizeOperation |
指定政策執行的作業。有效值包括 SANITIZE_USER_PROMPT 和 SANITIZE_MODEL_RESPONSE。 |
SanitizeModelResponse.POLICY_NAME.streamReplacements |
指定 <ContinuousScan> 設為 true 時,政策在回應期間重新連線至 Model Armor 的次數。只有在政策重新連結時才設定。 |
SanitizeModelResponse.POLICY_NAME.lastStreamReplacementCause |
指定 <ContinuousScan> 設為 true 時,導致最近一次重新連線的錯誤。只有在政策重新連結時才設定。 |
錯誤參考資料
本節說明 Apigee 針對 <SanitizeModelResponse> 政策傳回的錯誤代碼和錯誤訊息,以及設定的錯誤變數。如果您要開發錯誤規則來處理錯誤,請務必瞭解這項資訊。詳情請參閱「政策錯誤須知」和「處理錯誤」。
執行階段錯誤
| 錯誤代碼 | HTTP 狀態 | 原因 |
|---|---|---|
steps.sanitize.model.response.FilterMatched |
400 |
如果使用者提示詞未通過 Model Armor 範本檢查,就會發生這項錯誤。 |
steps.sanitize.model.response.SanitizationResponseParsingFailed |
500 |
如果無法剖析 Model Armor 回應,就會發生這項錯誤。 |
steps.sanitize.model.response.FailedToExtractUserPrompt |
500 |
如果系統無法自動擷取預設值的使用者提示,就會發生這項錯誤。 |
steps.sanitize.model.response.FailedToExtractLLMResponse |
500 |
如果預設值的自動模型回應擷取失敗,就會發生這項錯誤。 |
steps.sanitize.model.response.InternalError |
500 |
發生內部伺服器錯誤時,就會出現這個錯誤。 |
steps.sanitize.model.response.ModelArmorTemplateNameExtractionFailed |
500 |
如果無法解析範本名稱,就會發生這個錯誤。 |
steps.sanitize.model.response.AuthenticationFailure |
500 |
如果服務帳戶沒有呼叫 Model Armor API 的權限,就會發生這項錯誤。 |
steps.sanitize.model.response.ModelArmorAPIFailed |
500 |
如果 Model Armor API 擲回錯誤,就會發生這個錯誤。 |
steps.sanitize.model.response.ModelArmorCalloutError |
500 |
如果 Model Armor API 呼叫失敗,就會發生這項錯誤。 |
steps.sanitize.modelarmor.ServiceUnavailable |
500 |
如果 Model Armor 服務無法使用,就會發生這項錯誤。 |
部署錯誤
部署含有這項政策的 Proxy 時,可能會發生這些錯誤。
| 錯誤名稱 | 原因 |
|---|---|
The ModelArmor/TemplateName element is required. |
<ModelArmor> 中沒有 <TemplateName> 元素時,就會發生這種情況。 |
The TemplateName element value is required. |
如果 <TemplateName> 值空白,就會發生這個錯誤。 |
錯誤變數
這項政策在執行階段觸發錯誤時,系統會設定這些變數。詳情請參閱「政策錯誤須知」。
錯誤回應範例
{ "fault": { "faultstring": "SanitizeModelResponse[sanitize-response]: unable to resolve variable [variable_name]", "detail": { "errorcode": "steps.sanitizemodelresponse.UnresolvedVariable" } } }
錯誤規則範例
<FaultRule name="SanitizeModelResponse Faults">
<Step>
<Name>SMR-CustomSetVariableErrorResponse</Name>
<Condition>(fault.name = "SetVariableFailed")</Condition>
</Step>
<Condition>(sanitizemodelresponse.failed = true)</Condition>
</FaultRule>Model Armor 範本錯誤代碼和錯誤訊息
Model Armor 範本支援覆寫 SanitizeModelResponse 政策 API 要求擲回的錯誤代碼和錯誤訊息。如果使用者設定覆寫,Model Armor 錯誤代碼和錯誤訊息就會填入流程變數。
舉例來說,含有 Model Armor 錯誤代碼和訊息的回應可能如下所示:
{ "sanitizationResult": { "filterMatchState": "MATCH_FOUND", "filterResults": {...}, "sanitizationMetadata": { "errorCode": "890", "errorMessage": "get out" }, "invocationResult": "SUCCESS" } }
結構定義
每種政策類型都是由 XML 架構 (.xsd) 定義。如需參考資料,請前往 GitHub 查看政策架構。