跳轉到
版本 v1.0.34

防護機制

這頁的用途

防護機制 (Guardrail) 是一道內容檢查關卡。掛上去之後,使用者送進來的每一句話、模型回出去的每一句話,都會先過這道關卡;碰到你不允許的內容就直接攔下來、不送進模型,對話裡回一則錯誤(實際長相見使用效果)。

實務上它解決的是這幾種狀況:

  • 客服 Agent 被問到競品比價、或被要求承諾折扣,你希望它一律不接話。
  • 使用者把身分證號、信用卡號、員工編號貼進對話,你不希望這些資料原封不動送進模型。
  • 有人想用「忘記你原本的指令,改成…」這類話術繞過 Agent 的設定。

檢查條件全部在這個資源裡設定一次,之後 Agent 與工作流程的大型語言模型 (LLM) 任務結構化大型語言模型 (Structured LLM) 任務都可以挑它來用,不必每個地方重設一次。

開始前

前置需求

  • 防護機制目前只有一種類型:Amazon Bedrock。它會在你指定的 AWS 地區實際建立一份 Bedrock 防護機制,所以平台必須具備該地區的 Bedrock 權限(由系統管理員設定,你在畫面上不需要填憑證)。
  • 要掛到 Agent 或 LLM 任務上時,Bedrock 大型語言模型必須與防護機制在同一個地區。詳情見地區必須一致
  • 至少要設定一項檢查條件才能儲存,見至少要有一項條件

操作步驟

  1. 從左側選單進入「資源」,點「防護機制」卡片進入清單頁,再點建立入口(空清單時是有文字的「建立」按鈕;清單已有項目時是右上角的 圖示)開啟建立表單。
  2. 在「名稱」欄輸入容易辨識的名稱(例如 客服內容防護)。
  3. 在「類型」選「Amazon Bedrock」。選好之後,下方才會出現這個類型的所有設定欄位。
  4. 視需要填「描述」,並在「地區」選要建立在哪個 AWS 地區(預設 US West (Oregon))。地區建立後不能改
  5. 設定至少一項檢查條件——「內容篩選條件」、「拒絕的主題」、「封鎖字詞」、「個人資料(PII)」、「正規表達式規則」任選其一或多項。其中「內容篩選條件」「拒絕的主題」「個人資料(PII)」「正規表達式規則」是表格型的,點表格下方中央的 開對話框逐筆新增;「封鎖字詞」與「受管字詞清單」不是表格,直接在欄位上輸入或勾選。
  6. 視需要展開「進階設定」,改「串流處理模式」與兩則封鎖訊息的文字。
  7. 按右上角「儲存」完成建立。

    防護機制建立表單,類型為 Amazon Bedrock,內容篩選條件有仇恨與提示詞攻擊兩列,拒絕的主題一列,封鎖字詞與受管字詞清單各一項,個人資料與正規表達式規則各一列

  8. 建立完成後會進到該防護機制的詳細頁,「狀態」顯示「就緒」就表示 Bedrock 那邊已經建好、可以掛到 Agent 或任務上了。

    防護機制詳細頁的「一般」頁籤,上方是詳細資料卡片,下方接著內容篩選條件、拒絕的主題、封鎖字詞、個人資料與正規表達式規則的表格

至少要有一項條件

五項都空著會存不起來

類型選好但五項檢查條件都空著時,表單上方會出現一則提示「請至少設定一項:內容篩選條件、拒絕的主題、封鎖字詞、個人資料(PII)或正規表達式規則。」,而且按「儲存」不會有反應——一道什麼都不檢查的關卡沒有意義,平台不讓你建。補上任一項後提示就會消失。

條件都填了、按「儲存」還是建不起來

另一個常見原因是權限:防護機制是較新的資源類型,不會自動加進既有群組的可建立清單裡。請系統管理員到你所屬群組的詳細頁,在「資源建立」分頁新增一筆「防護機制」(子類型選「Amazon Bedrock」),見群組 — 設定群組權限

完整欄位說明

主表單先填共通的「名稱」「標籤」「類型」,選好類型後再填該類型專屬欄位。

共同欄位

欄位 必填 預設 說明
名稱 防護機制的識別名稱,之後在 Agent 與任務的挑選清單裡看到的就是它。最多 64 個字,不可用 default 開頭。
標籤 分類用的小標,貼上後可在清單頁用「標籤」把同一群資源一次篩出來。填法與數量/長度限制見「標籤」欄位
類型 目前只有「Amazon Bedrock」一種:由 Amazon Bedrock 提供的防護機制,可篩選有害內容、特定主題、字詞與個人資料。建立後不能改類型(編輯表單裡這一欄是停用的)。

Amazon Bedrock 專屬欄位

選「Amazon Bedrock」後出現的欄位,依畫面順序如下。

欄位 必填 預設 說明
描述 空白 說明這道關卡擋什麼,方便團隊辨識。最多 200 個字。
地區 US West (Oregon) 這份防護機制要建立在哪個 AWS 地區。建立後不能改,而且會限制哪些大型語言模型能搭配它,見地區必須一致
跨區設定檔 ID 視情況 空白 讓這道關卡可以在自身地區之外被套用。選項是 AWS 為所選地區提供的設定檔,換「地區」時清單會跟著重載。欄位名字裡有「ID」,但下拉裡顯示的是地區群組名稱(例如 Oregon 底下只有一項「United States」),不是一串看起來像 ID 的字元——看到這種名字就是對的。兩種情況要填:模型與防護機制不在同一地區,或任一「層級」設為「標準」(此時這一欄變成必填)。
內容篩選層級 傳統 「內容篩選條件」與「拒絕的主題」用哪一代 Bedrock 分類器,見兩種層級怎麼選
內容篩選條件 空白(無列) 表格。逐筆設定要擋哪一類有害內容、以及輸入與輸出各自的篩選強度,見內容篩選條件
拒絕主題層級 傳統 同上,但只作用在「拒絕的主題」。兩個層級欄位各自獨立,可以一個傳統一個標準。
拒絕的主題 空白(無列) 表格。逐筆定義「不要談的話題」,見拒絕的主題
封鎖字詞 空白 自己輸入要完全比對封鎖的字詞或片語,打一個按 Enter 新增一個,可加多筆。每筆最多 100 個字。
受管字詞清單 空白 直接啟用 AWS 維護好的字詞清單,不必自己輸入字詞——這是它與「封鎖字詞」的差別:後者是你自己逐筆列的字,這裡是 AWS 幫你維護一整包。目前只有「不雅用語」一項,可多選。清單內容不公開,畫面上看不到也改不了,只能整包開或整包不開。
個人資料(PII) 空白(無列) 表格。逐筆挑要偵測的個人資料類型與處理方式,見個人資料(PII)
正規表達式規則 空白(無列) 表格。用正規表達式抓內建類型涵蓋不到的敏感內容,見正規表達式規則

「地區」「內容篩選層級」「拒絕主題層級」畫面上沒有必填星號

這三欄在上表標「必填=是」,但畫面上不會看到 *——因為它們都有預設值、永遠不會是空的(表單裡只有「名稱」「類型」帶星號,選了「標準」之後「跨區設定檔 ID」才多一個)。不用去找那顆星號,也不會因為它們而存不起來。

五項條件是「或」的關係,不是「都要填」

上表五項檢查條件只要有任一項有內容就能儲存,其餘留空即可。實務上常見的組合是:客服類 Agent 先開「內容篩選條件」的「提示詞攻擊」與「仇恨」,再用「拒絕的主題」把不想接的話題(競品比價、法律意見)列出來;會處理表單的 Agent 才需要動到「個人資料(PII)」。

兩種層級怎麼選

「內容篩選層級」與「拒絕主題層級」兩欄各有兩個選項,差別如下。「封鎖字詞」與「個人資料(PII)」「正規表達式規則」是直接比對,不受層級影響。

選項 適合 說明
傳統 只服務英文、法文、西班牙文的情境 僅判讀這三種語言。中文等其他語言的內容不會被檢查,也不會有任何提示。 不需額外設定。
標準 中文客服等多語情境 支援包含中文在內的多國語言,防規避能力也較強。需要填「跨區設定檔 ID」(選了「標準」之後那一欄旁邊會出現提示「標準層級以跨區推論運作,因此必須指定設定檔。」,這是畫面上唯一說明「為什麼突然多一個必填」的地方),而且只有部分地區提供——所選地區不支援時,這個選項在下拉裡是灰的、選不了,欄位下方會出現「目前選擇的地區不支援標準層級。」。另外,選「標準」時「拒絕的主題」每筆定義的字數上限會從 200 放寬到 1,000。

改「地區」時,若新地區不支援標準層級,兩個層級欄位會自動被退回「傳統」。

中文客服請認真考慮「標準」

「傳統」層級不判讀中文,所以一份只設了「內容篩選條件」又停在「傳統」的防護機制,對中文對話幾乎等於沒有作用——而畫面上不會有任何錯誤或警告。要擋中文的有害內容,就得選「標準」並補上「跨區設定檔 ID」;若所選地區不支援標準層級,就改用「拒絕的主題」「封鎖字詞」「正規表達式規則」這幾項不受層級影響的條件。

內容篩選條件

點表格下方中央的 開啟「新增有害內容類別」對話框,一次設定一個類別。已經加過的類別不會再出現在下拉裡,所以同一類不會重複設定。列尾的 可回頭修改該列、 刪掉該列。

「新增有害內容類別」對話框,有害內容類別為「仇恨」,輸入強度與輸出強度都是「高」

欄位 必填 預設 說明
有害內容類別 要擋哪一類內容,六個選項:「仇恨」、「侮辱」、「不當行為」、「提示詞攻擊」、「性內容」、「暴力」。
輸入強度 檢查使用者輸入的嚴格程度:「無」、「低」、「中」、「高」。越高越容易判定為違規,也越容易誤擋。
輸出強度 檢查模型輸出的嚴格程度,選項同上。

「提示詞攻擊」只檢查輸入

類別選「提示詞攻擊」時,「輸出強度」會被鎖成「無」且不能改,欄位下方顯示「提示詞攻擊只會在輸入時檢查。」。改回其他類別時,原本填的輸出強度會自己回來。

整張表不能全是「無」

每一列的兩個強度都可以是「無」,但整張表不能每一列都是無/無——那等於沒有啟用內容篩選。這種情況「內容篩選條件」欄位下方會出現紅字「至少要有一項內容篩選條件的輸入或輸出強度不是「無」」,儲存不會過。

拒絕的主題

用來描述「不要談的話題」。點 開啟「新增拒絕的主題」對話框。

「新增拒絕的主題」對話框,名稱為 competitor pricing,定義描述競品價格比較,範例欄有一個 chip

欄位 必填 預設 說明
名稱 這個主題的代號。只能用英文字母、數字、空格與 - _ . ! ?,不能用中文,最多 100 個字。填了中文會立刻出現紅字「此欄位只能包含英文字母、數字、空格與下列符號:- _ . ! ?」。
定義 空白 用一段話說明這個主題涵蓋什麼,讓防護機制判斷得出來。這一欄可以用中文。 字數上限跟著「拒絕主題層級」走:「傳統」為 200 字、「標準」為 1,000 字。寫超過時對話框裡的紅字是「此欄位必須小於或等於 200 個字元」(與下方降級時外層那句用字不同,說的是同一件事)。
範例 空白 屬於這個主題的範例句子,打一句按 Enter 新增一句,最多 5 句、每句最多 100 個字。給了範例,判斷會更準。

名稱寫代號、定義寫中文

「名稱」只是給 Bedrock 用的識別字,使用者看不到,所以寫 competitor pricinglegal advice 這種英文代號就好;真正決定擋不擋的是「定義」,那一欄請用中文把範圍寫清楚,例如「與其他廠牌產品的價格、優惠或折扣比較,以及對競爭對手報價的評論。」。

把層級從「標準」降回「傳統」時要回頭檢查定義

「標準」層級的定義上限是 1,000 字,降回「傳統」後上限變成 200 字。已經寫超過的那幾列不會自動被截短,而是在「拒絕的主題」欄位下方出現紅字「此欄位的每個定義都不能超過 200 個字元」,要自己把過長的定義改短才能儲存。

個人資料(PII)

開啟對話框,一次挑一種類型。已經加過的類型不會再出現在下拉裡。

個人資料(PII)新增對話框,類型為 Email,處理方式為「去識別化」,選項下方有說明文字

欄位 必填 預設 說明
類型 要偵測的個人資料類型,共 31 種,選項一律以英文顯示(它們多半是某國證號的專有名稱,翻譯反而看不出在抓什麼)。常用的有 EmailPhoneNameAddressCredit/Debit Card NumberPasswordIP AddressURL;另有 AWS Access KeyAWS Secret Key 這類憑證,以及美國、英國、加拿大的證號與稅號。
處理方式 偵測到之後怎麼處理,兩個選項:「封鎖」=偵測到時直接封鎖整個請求,模型不會收到這則訊息;「去識別化」=只遮蔽偵測到的那一段,其餘內容照常送給模型。

國別證號只涵蓋美國、英國與加拿大

清單裡的證號類型只有這三國。台灣的身分證號、健保卡號等不在其中,請改用下方的正規表達式規則自己定義。

正規表達式規則

抓內建類型涵蓋不到的敏感內容,例如公司內部編號、其他國家的證號。點 開啟「新增正規表達式規則」對話框。

「新增正規表達式規則」對話框,名稱為 employee id,正規表達式為 EMP-[0-9]{6},處理方式為「封鎖」,描述說明格式

欄位 必填 預設 說明
名稱 這條規則的識別名稱,最多 100 個字。
正規表達式 空白 用來比對敏感內容的正規表達式,最多 500 個字。例如 EMP-[0-9]{6} 抓「EMP- 加六位數字」的員工編號。
處理方式 個人資料(PII):「封鎖」整個請求,或「去識別化」只遮蔽命中的那一段。
描述 空白 說明這條規則在抓什麼,最多 1,000 個字。

看到「瀏覽器無法解析這個語法」還是可以存

語法有問題時欄位下方會出現灰字「瀏覽器無法解析這個語法,請確認;若確定 Amazon Bedrock 支援,仍可直接儲存。」。這只是瀏覽器先幫你看一眼,不是錯誤——Bedrock 支援的語法比瀏覽器多,確定沒寫錯就照樣儲存。

進階設定

摺疊區塊,改過裡面任一欄時標題旁會出現「已變更」標籤。

欄位 必填 預設 說明
串流處理模式 同步 模型逐字輸出(串流)時,這道關卡怎麼介入。「同步」=每個區塊都先檢查再輸出,違規內容不會傳到使用者端,但串流較不流暢、延遲較高;「非同步」=立即輸出每個區塊、防護機制並行檢查,回應較即時,但違規內容可能短暫出現後才被中斷。
輸入封鎖訊息 「抱歉,您的輸入違反使用政策,無法處理。」 Amazon Bedrock 在串流中途封鎖輸入時顯示的訊息,最多 500 個字。可改成貼合自家品牌口吻的說法。
輸出封鎖訊息 「抱歉,此回應已被使用政策封鎖。」 模型輸出被擋下時顯示的訊息,最多 500 個字。只在 Agent 對話中看得到;工作流程的大型語言模型任務沒有對象可顯示,會直接以錯誤中止。
KMS 金鑰 ID 空白 用來加密這份防護機制設定本身的 AWS KMS 金鑰。留空就用 AWS 的預設加密,多數情況不需要填。

預設的兩則封鎖訊息會跟著建立時的介面語言

表單一開啟就預先帶入目前介面語言的版本(正體中文介面即上表的中文句子)。訊息是存下來的固定文字,不會隨看到它的使用者的語言改變,所以服務多語使用者時請自行決定要寫哪一種語言。

在對話裡被擋下時,看到的不一定是這兩句

這兩欄是給 Bedrock 在串流過程中替換內容用的。送出訊息時就直接被擋的情況(最常見的那種)走的是另一條路:對話裡出現的是一則錯誤,而不是這兩句話,見下方使用效果

掛到 Agent 或任務上

防護機制自己不會做任何事,要被挑選才會生效。兩個掛法:

掛在哪 位置 檢查範圍
Agent Agent 建立/編輯表單的「防護機制」欄位(在「大型語言模型」與「描述」之間) 使用者輸入、模型輸出,以及工具的輸入與輸出都會經過檢查。
大型語言模型 (LLM) 任務結構化大型語言模型 (Structured LLM) 任務 任務設定面板「進階任務設定」裡的「防護機制」欄位 該次呼叫的輸入與模型輸出。

兩處都是資源挑選欄位:點欄位開啟挑選清單(欄位表格有「名稱」「ID」「類型」「狀態」「最後更新」),選一筆按「儲存」;欄位右側的 可清空選擇(這顆鈕平常是隱形的,把滑鼠移到欄位上才浮現)。用法見通用介面元件 — 資源挑選欄位

地區必須一致

模型與防護機制的地區必須一致

Bedrock 的防護機制是綁地區的,所以搭配的 Bedrock 大型語言模型必須位於同一個地區。實務上你不會真的看到「儲存失敗」——Agent 表單會先把不同地區的防護機制停用(選不了),或在你換掉模型時直接把選擇清掉。實際規則是:

  • Agent 上,不只主要的「大型語言模型」,開了「啟用大型語言模型切換」之後可切換的每一個模型都要與防護機制同地區。要注意「可切換的大型語言模型」那份挑選清單不會把不同地區的模型停用——你照樣勾得起來,平台是改用「把防護機制清掉」來擺平衝突(見下方)。
  • 已填「跨區設定檔 ID」的防護機制不受這個限制。
  • 非 Bedrock 供應商的模型(例如 OpenAI、Gemini、Ollama)不受限制。
  • 想知道某個模型在哪個地區,到大型語言模型清單點進那一筆,看詳細頁「一般」頁籤的「地區」欄——清單頁上沒有這一欄

畫面上會這樣提示你:挑選清單裡地區不符的防護機制是停用的,滑過去會顯示「Bedrock 大型語言模型必須與防護機制在同一個地區,可切換的大型語言模型也包含在內。已設定跨區設定檔的防護機制則不受此限。」。

如果是先選好防護機制、之後才把模型換成別的地區,原本的選擇會自動被取消。這時編輯既有 Agent 的畫面上會在欄位下方出現「防護機制與目前的大型語言模型不在同一個地區,已取消選取。」;但建立新 Agent 的畫面不會有任何提示,欄位就這樣靜靜地空掉。所以換過模型之後,一定要自己回頭看一眼「防護機制」欄位是不是空了——沒發現就等於這個 Agent 上線時完全沒有防護。

防護機制詳細頁

詳細頁上方有兩個頁籤:

頁籤 內容
一般 上半是「詳細資料」卡片:ID、名稱、標籤、類型、描述、地區、串流處理模式、輸入封鎖訊息、輸出封鎖訊息、KMS 金鑰 ID、跨區設定檔 ID、系統資訊、狀態、建立者、更新者、最後更新。下半接著把設定好的檢查條件一項一項列出來(內容篩選層級與其表格、拒絕主題層級與其表格、封鎖字詞、受管字詞清單、個人資料(PII)表格、正規表達式規則表格)。沒設定的條件是整段不出現,不是顯示 -——例如一份沒設「拒絕的主題」的防護機制,詳細頁上連「拒絕主題層級」都看不到(即使那一欄是必填、有值)。- 只出現在上方「詳細資料」卡片裡沒填的欄位(標籤、描述、KMS 金鑰 ID、跨區設定檔 ID)與表格中的空儲存格。卡片右上角的圖示鈕可編輯()、複製()或刪除()。
被依賴資源 有哪些 Agent 或工作流程正在用這道關卡。刪除前先看這裡——還有人在用就先把那邊改掉。

「系統資訊」那一坨 JSON 不用理它

「詳細資料」卡片裡的「系統資訊」是平台記下來的 Bedrock 端識別資料(guardrail_identifierguardrail_arnguardrail_version),只有在需要跟 AWS 那邊對帳、或請管理員協助查問題時才會用到,日常操作不必看。其中 guardrail_version每編輯儲存一次就加一(第一次建立是 1,改過一次變 2),數字跳動是正常的,不代表你設定錯了。

防護機制沒有「驗證」功能

詳細頁不提供「驗證憑證/測試連線」按鈕。要確認它有沒有生效,就掛到一個 Agent 上實際問一句會被擋的話,見下方使用效果

編輯時有幾欄是鎖住的

「類型」與「地區」建立後不能改(編輯表單裡呈現為停用)。要換地區只能重新建立一份新的防護機制,再把 Agent/任務改指到新的那一份。

使用效果

把防護機制掛到 Agent 之後,違規的訊息會在送進模型之前就被擋下來。對話裡看到的長這樣:一則「發生錯誤,請稍後再試。」,下面接一行英文說明哪一類條件被踩到,再下面是一顆「重試」按鈕。

Agent 對話畫面,使用者送出一句違規訊息後,Agent 這一側顯示「發生錯誤,請稍後再試。」與「Guardrail blocked the input. Tripped policies: word.」,下方有「重試」按鈕

那行英文的 Tripped policies: 後面就是踩到的條件類別,據此可以知道是哪一項設定攔下來的:

顯示 對應的設定
content 內容篩選條件
word 封鎖字詞、受管字詞清單
topic 拒絕的主題
sensitive_information 個人資料(PII)、正規表達式規則

判讀時注意三件事:

  • 這是一則錯誤,不是模型的回答,所以按「重試」再送一次也一樣會被擋——內容沒改就不會過。看到它就表示這道關卡有作用。
  • 「輸入封鎖訊息」「輸出封鎖訊息」那兩句自訂文字不會出現在這裡。它們是給 Bedrock 在串流過程中替換內容用的,跟這條「送出就被擋」的路徑不同。
  • 工作流程的大型語言模型任務被擋時沒有對象可顯示,該任務會直接失敗,處理方式見錯誤處理

想確認自己設對了,用「封鎖字詞」試最省事

「封鎖字詞」是逐字比對,不受「內容篩選層級」影響、中文也擋得到,所以最適合拿來做一次「有沒有生效」的確認:

  1. 另外建一份防護機制,只填一項「封鎖字詞」,字詞用一個平常不會打到的詞(例如下面這個)。
  2. 把它掛到一個 Agent 上(見掛到 Agent 或任務上),儲存。
  3. 開這個 Agent 的對話:儲存後畫面會停在編輯頁,回到該 Agent 的詳細頁,按右上角的「前往聊天」。在對話裡把那個字詞單獨送出去(前後不要接其他中文字,原因見下方那則警示)。
測試封鎖詞彙

看到「發生錯誤,請稍後再試。」加上 Tripped policies: word. 就表示這道關卡確實掛上、也確實在檢查了。確認完把這份測試用的防護機制刪掉即可。

中文的「封鎖字詞」只在前後有空白或獨立成句時才擋得到

實測同一份設定(封鎖字詞為 保證最低價):送「保證最低價」或「請問 保證最低價 嗎」都被擋下(Tripped policies: word.),但送「你們可以保證最低價嗎?」沒有被擋——字詞黏在其他中文字之間就比對不到。

所以「封鎖字詞」用在中文上並不可靠,別把它當成唯一防線。要擋一個中文說法,改用拒絕的主題(靠語意判斷,不是逐字比對)或正規表達式規則(自己決定要不要管前後字元)。

下一步