本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用情境依據檢查來篩選回應中的幻覺
Amazon Bedrock 防護機制支援情境依據檢查,可在提供參考來源和使用者查詢時,偵測和篩選模型回應中的幻覺。支援的使用案例包括摘要、複寫和問題回答,如電腦科學學科所定義。(不支援轉換 QA/聊天機器人使用案例。)
情境依據檢查會檢查每個已處理區塊的相關性。如果任何一個區塊被視為相關,則整個回應會被視為相關,因為它有使用者查詢的答案。對於串流 API,這可能會導致不相關的回應傳回給使用者的情況,並且僅在整個回應串流之後才會標記為不相關。
內容接地會檢查下列範例:
-
依據 – 這會檢查模型回應是否根據來源而符合事實,並且以來源為依據。回應中引入的任何新資訊都會被視為未依據。
-
關聯性 – 這會檢查模型回應是否與使用者查詢相關。
請考慮參考來源包含「倫敦是英國的首都」的範例。東京是日本的首都」,而使用者查詢是「日本的首都是什麼?」。「日本的首都為倫敦」等回應將被視為無根據且事實上不正確,其中「英國的首都為倫敦」等回應將被視為不相關,即使其正確且以來源為基礎。
注意
當請求包含多個 grounding_source 標籤時,防護機制會合併並評估所有提供的 grounding_source 值,而不是分別考慮每個 grounding_source。此行為對於 query 標籤是相同的。
注意
情境依據政策目前支援最多 100,000 個字元的依據來源、1,000 個字元的查詢,以及 5,000 個字元的回應。
可信度分數和閾值
情境依據檢查會產生可信度分數,對應到根據提供的來源和使用者查詢處理的每個模型回應的依據和相關性。您可以設定閾值,根據產生的分數篩選模型回應。篩選閾值會決定模型回應的最低允許可信度分數,以便在生成式 AI 應用程式中將其視為依據且相關。例如,如果您的依據閾值和相關性閾值都設定為 0.7,則依據或相關性分數小於 0.7 的所有模型回應都會偵測為幻覺,並在您的應用程式中予以封鎖。隨著篩選閾值的增加,封鎖未依據和不相關情境的可能性會增加,且在應用程式中看到幻覺情境的可能性也會降低。您可以設定 0 到 0.99 之間的依據和相關性閾值。閾值 1 無效,因為這會封鎖所有情境。
情境依據檢查需要 3 個元件才能執行檢查:依據來源、查詢和要防護的情境 (或模型回應)。根據您是使用調用 API、Converse API 或直接使用 ApplyGuardrail,這些設定會有所不同。
-
依據來源 – 回答任何使用者查詢所需的情境資訊。例如,「倫敦是英國的首都。東京是日本的首都。」
-
查詢 – 使用者可能提出的問題。例如,「日本的首都是什麼?」。
-
要防護的情境 – 應該相對於依據來源和查詢進行防護的文字。對於調用和 Converse API,這是模型回應。例如,這可以是「日本的首都是東京」。
未依據範例
-
接地來源 -「倫敦是英國的首都。東京是日本的首都。」
-
查詢 -「日本的首都是什麼?」
-
要保護的內容 -「日本的首都是倫敦。」
在此範例中,要防護的情境與查詢相關,但由於未正確使用依據來源,因此未依據。這將具有較低的依據分數。
不相關範例
-
接地來源 -「倫敦是英國的首都。東京是日本的首都。」
-
查詢 -「日本的首都是什麼?」
-
要保護的內容 -「英國的首都是倫敦。」
在此範例中,依據要防護的情境,但不相關。它使用來自依據來源的資訊,但不回答查詢。這個為低相關性分數。
未依據和不相關範例
-
接地來源 -「倫敦是英國的首都。東京是日本的首都。」
-
查詢 -「日本的首都是什麼?」
-
要保護的內容 -「它在外面下雨」。
在這個範例中,未依據要防護的情境,也不相關。它既未使用來自依據來源的資訊,也未回答查詢。這個為低依據和相關性分數。
更多範例
考慮一個旨在回答與費用相關問題的銀行應用程式。
來源:
-
開立支票帳戶不會產生相關費用。
-
維護支票帳戶的每月費用為 10 美元。
-
國外轉帳需支付 1% 的交易費用。
-
國內轉帳不會產生相關費用。
-
與信用卡帳單延遲繳費相關的費用為 23.99%。
根據上述來源,根據使用者的查詢,可能會有四種情況。
已依據且相關
-
問:與支票帳戶相關的費用是多少?
-
答:維護支票帳戶的每月費用為 10 美元。國內轉帳不會產生相關費用。不過,國外轉帳需支付 1% 的交易費用。開立支票帳戶不會產生相關費用。
未依據但相關
-
問:與信用卡相關聯的交易費用是多少。
-
答:與信用卡相關聯的交易費用為 23.99%。
已依據但不相關
-
問:使用支票銀行帳戶的費用是多少?
-
答:根據提供的資訊,信用卡的遲繳費用為 23.99%。
未依據且不相關
-
問:使用支票銀行帳戶的費用是多少?
-
答:每次交易證券帳戶的費用為 0.5 美元。
使用主控台新增情境依據檢查
AWS 管理主控台 使用具有使用 Amazon Bedrock 主控台之許可的 IAM 身分登入 。接著,開啟位於 https://console.aws.amazon.com/bedrock
的 Amazon Bedrock 主控台。 -
從左側導覽窗格中,選擇防護機制,然後選擇建立防護機制。
-
在提供防護機制詳細資訊頁面中,執行下列動作:
-
在防護機制詳細資訊區段中,提供防護機制的名稱和選用的描述。
-
在封鎖提示的訊息中,輸入套用防護機制時顯示的訊息。選取為回應套用相同的封鎖訊息核取方塊,以在將防護機制套用至回應時,使用相同的訊息。
-
(選用) 若要為您的防護機制啟用跨區域推論,請展開跨區域推論,然後選取為您的防護機制啟用跨區域推論。選擇護欄設定檔,定義可路由護欄推論請求 AWS 區域 的目的地。
-
(選用) 根據預設,您的防護機制會使用 AWS 受管金鑰進行加密。若要使用您自己的客戶受管 KMS 金鑰,請展開 KMS 金鑰選取範圍,然後選取自訂加密設定 (進階) 核取方塊。
您可以選取現有的 AWS KMS 金鑰,或選取建立金鑰以建立新的 AWS KMS 金鑰。
-
(選用) 若要將標籤新增至防護機制,請展開標籤,然後為您定義的每個標籤選取新增標籤。
如需詳細資訊,請參閱標記 Amazon Bedrock 資源。
-
選擇下一步。
-
-
在新增情境依據檢查頁面上,設定閾值以封鎖未依據或不相關的資訊。
注意
對於每種類型的檢查,您可以移動滑桿或輸入閾值,從 0 到 0.99。為您的使用選取適當的閾值。較高的閾值需要以高度信賴為依據或相關的回應才能允許。低於閾值的回應將遭篩選掉。
-
在依據欄位中,選取啟用依據檢查,以是否已依據檢查模型回應。
-
在關聯性欄位中,選取啟用關聯性檢查,以檢查模型回應是否相關。
-
當您完成設定敏感資訊篩選條件時,請選取下一步或跳至檢閱和建立。
-
使用調用 API 呼叫情境依據檢查
若要在輸入中標記接地來源和查詢,請使用與輸入標籤相同的下列標籤。這些標籤是 amazon-bedrock-guardrails-groundingSource_xyz和 amazon-bedrock-guardrails-query_xyz,其中 xyz是標籤尾碼。例如:
{ "text": """ <amazon-bedrock-guardrails-groundingSource_xyz>London is the capital of UK. Tokyo is the capital of Japan. </amazon-bedrock-guardrails-groundingSource_xyz> <amazon-bedrock-guardrails-query_xyz>What is the capital of Japan?</amazon-bedrock-guardrails-query_xyz> """, "amazon-bedrock-guardrailConfig": { "tagSuffix": "xyz", }, }
請注意,需要模型回應才能執行情境式依據檢查,因此檢查只會在輸出上執行,而不會在提示上執行。
這些標籤可與guardContent標籤搭配使用。除了內容基礎 (字詞篩選條件、主題篩選條件、內容篩選條件、敏感資訊偵測), groundingSource和 query 標籤中的內容會排除在政策評估之外。
其餘政策的行為取決於您是否使用guardContent標籤:
-
沒有
guardContent標籤 – 其他政策使用預設行為:系統提示不會進行調查,訊息也會進行調查。 -
使用
guardContent標籤 – 其他政策只會調查guardContent標籤中的內容。任何標籤之外的內容 (未標記的文字) 和groundingSource或query標籤內的內容都會略過。
若要讓其餘政策也評估接地來源或查詢內容,請在標籤內巢狀內容接地guardContent標籤:
<amazon-bedrock-guardrails-guardContent_xyz><amazon-bedrock-guardrails-groundingSource_xyz>London is the capital of UK. Tokyo is the capital of Japan.</amazon-bedrock-guardrails-groundingSource_xyz></amazon-bedrock-guardrails-guardContent_xyz> <amazon-bedrock-guardrails-query_xyz>What is the capital of Japan?</amazon-bedrock-guardrails-query_xyz>
在此範例中,接地來源內容都用作內容式接地參考來源,並由其他政策評估,因為它也包裝在guardContent標籤中。
使用 Converse 調用 API 呼叫情境依據檢查
若要標記 Converse API 的依據來源和查詢,請使用每個防護情境區塊中的限定詞欄位。例如:
[ { "role": "user", "content": [ { "guardContent": { "text": { "text": "London is the capital of UK. Tokyo is the capital of Japan", "qualifiers": ["grounding_source"], } } }, { "guardContent": { "text": { "text": "What is the capital of Japan?", "qualifiers": ["query"], } } }, ], } ]
請注意,需要模型回應才能執行情境式依據檢查,因此檢查只會在輸出上執行,而不會在提示上執行。
內容式接地以外的政策行為取決於指派給每個guardContent區塊的限定詞:
-
["grounding_source"]– 內容僅用於內容接地參考來源。其他政策不會評估它。 -
["query"]– 內容僅用於內容基礎使用者查詢。其他政策不會評估它。 -
["guard_content"]– 內容由內容基礎檢查 (做為要保護的內容) 和所有其他政策評估。 -
無限定詞 (不合格) – 內容會透過內容基礎檢查 (做為要保護的內容) 和所有其他政策進行評估。
-
["grounding_source", "guard_content"]– 內容提供兩種角色:用作情境接地參考來源,並由其他政策評估。 -
["query", "guard_content"]– 內容提供兩種角色:用作內容基礎查詢,並由其他政策評估。
如果您希望其他護欄政策也評估您的接地來源或查詢內容,請將 guard_content新增至限定詞清單以及內容式接地限定詞。
使用 ApplyGuardrail API 呼叫情境依據檢查
搭配 ApplyGuardrail 使用情境依據檢查類似於搭配 Converse API 使用。若要標記 ApplyGuardrail 的依據來源和查詢,請使用每個情境區塊中的限定詞欄位。不過,由於並未使用 ApplyGuardrail 調用模型,因此您還必須提供額外的情境區塊,其中包含要防護的情境。此情境區塊可以選擇性地符合 guard_content 的資格,相當於 Invoke* 或 Converse* API 中的模型回應。例如:
[ { "text": { "text": "London is the capital of UK. Tokyo is the capital of Japan", "qualifiers": [ "grounding_source" ] } }, { "text": { "text": "What is the capital of Japan?", "qualifiers": [ "query" ] } }, { "text": { "text": "The capital of Japan is Tokyo." } } ]
請注意,需要模型回應才能執行情境式依據檢查,因此檢查只會在輸出上執行,而不會在提示上執行。
限定詞如何影響政策評估
具有 query grounding_source或 限定詞的內容區塊只會透過內容式接地檢查進行評估。這些區塊會從所有其他護欄政策評估 (字詞篩選條件、主題篩選條件、內容篩選條件、敏感資訊偵測和提示攻擊偵測) 中排除。
若要讓內容區塊同時透過情境接地檢查和其他護欄政策進行評估,請同時使用這兩個限定詞。例如,指定 ["grounding_source", "guard_content"]將內容區塊標記為也受所有其他設定政策約束的接地來源。
對於內容基礎以外的政策來評估內容,至少一個內容區塊必須使用 不符合資格或明確符合資格guard_content。當內容區塊沒有qualifiers欄位時,即不符合資格。
下表摘要說明每個限定詞組合如何影響政策評估。
| 限定詞 | 內容接地檢查 | 其他護欄政策 |
|---|---|---|
|
已評估 (做為參考) |
未評估 |
|
已評估 (做為查詢) |
未評估 |
|
已評估 (做為回應) |
已評估 |
無限定詞 (不符合資格) |
已評估 (做為回應) |
已評估 |
|
已評估 (做為參考) |
已評估 |
|
已評估 (做為查詢) |
已評估 |