建立自動推理政策 - Amazon Bedrock

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

建立自動推理政策

當您建立自動推理政策時,系統會將輸入來源文件轉譯為一組正式邏輯規則,以及變數和類型的結構描述。

Amazon Bedrock 會使用 AWS Key Management Service (KMS) 加密自動推理政策。根據預設,Amazon Bedrock 會使用服務擁有的金鑰。您可以選擇性地指定客戶自管 KMS 金鑰,以額外控制政策資料的加密。

範例:如果來源文件包含 HR 政策,指出「已工作至少 1 年的全職員工符合休育嬰假的資格」,自動推理會擷取 IsFullTime (布林值)、YearsOfService (整數) 和 EligibleForParentalLeave (布林值) 等變數,以及擷取與這些變數連結的規則。

注意

教學影片:如需建立自動推理政策的逐步演練,請觀看下列教學課程:

教學課程示範 1:在自動推理檢查中的政策建立

若要測試和使用您的自動化理由政策,請確定您擁有適當的許可

在主控台中建立自動推理政策

  1. 在左側導覽中,選擇自動推理,然後選擇建立政策

  2. 輸入政策的名稱

  3. (選用) 輸入政策的描述

  4. 針對來源,您需要提供文件,該文件會說明知識領域的規則和政策。本文件應包含您想要驗證自動推理的商業規則、政策或指導方針。例如,您可以上傳定義員工福利資格的 HR 政策文件、概述法規要求的合規手冊,或描述系統限制的技術規格。文件應完整且清楚撰寫,因為自動推理會從此內容擷取正式的邏輯規則。

    注意

    最佳實務:對於複雜的政策,最好將內容分割為易於理解的區塊,並逐步將新內容匯入政策,使其更為複雜。從規則的重點子集開始,徹底建立和測試政策,然後在後續迭代中逐步新增更多內容。此方法可協助您及早識別和解決問題,確保每個新增項目都能正確與現有規則搭配使用,並在發生問題時更輕鬆地進行疑難排解。

    請執行下列操作:

    1. 對於擷取方法,請執行下列其中一項操作:

      1. 選取上傳文件,然後選取選擇檔案。上傳來源內容的 PDF 文件,其來源內容將作為政策的基礎。

      2. 選取輸入文字。貼上或輸入將作為政策基礎的來源內容。

    2. (建議) 針對指示,指定如何處理來源文件的其他資訊。選用時,提供如何使用政策的資訊,以及應注重或忽略文件的哪些部分,有助於邏輯擷取程序。

      注意

      指示應說明政策將驗證哪些類型的問題、描述輸入文件的結構,並提供使用者將詢問的問題類型範例。例如:「此政策將驗證 HR 有關休假資格的問題。文件具有不同休假類型的區段。使用者將詢問類似「如果我在這裡工作了 9 個月,我是否符合休育嬰假的資格?」等問題

  5. (選用) 對於標籤,選擇新增標籤來標記政策。標籤可協助您管理、篩選和搜尋 AWS 資源。

  6. (選用) 針對加密,選擇 KMS 金鑰來加密政策。您可以使用預設的服務擁有金鑰,或從帳戶中選取客戶自管金鑰。

  7. 選擇建立政策

使用 API 建立自動推理政策

自動化理由政策是您 AWS 帳戶中可使用 Amazon Resource Name (ARN) 參考的資源。自動化理由政策是用於建置工作流程的容器,可產生政策定義和政策版本。政策定義包含變數的結構描述,以及在變數上操作的一組規則。政策版本是預設 DRAFT 版本的不可變快照。自動化推理政策最多可以有兩個建置工作流程。每個建置工作流程都會輸出三個資產:政策定義、政策定義的品質報告,以及建置日誌。

自動化推理政策可以包含透過呼叫 CreateAutomatedReasoningPolicyVersion API 動作建立之定義的編號、不可變版本。自動化理由政策支援名為 的特殊版本DRAFT,在 AWS 主控台中顯示為「工作草稿」。

若要建立新的政策,第一步是使用 CreateAutomatedReasoningPolicy API 來建立政策資源。然後,使用新的政策 Amazon Resource Name (ARN),您可以呼叫 從具有變數和規則結構描述的文件StartAutomatedReasoningPolicyBuildWorkflow填入政策組建。

建立自動原因政策請求參數

建立自動推理政策時,下列為必要或選用參數:

name (必要)

自動推理政策的名稱。名稱在 AWS 帳戶和區域內必須是唯一的。

description (選用)

自動推理政策的描述。使用此選項提供內容,該內容與政策用途及其執行之驗證類型有關。

clientRequestToken (選用)

唯一且區分大小寫的識別碼,以確保操作完成的次數不超過一次。如果此字符符合先前的請求,Amazon Bedrock 會忽略請求,但不會傳回錯誤。

policyDefinition (選用)

包含正式邏輯規則、變數和自訂變數類型的政策定義,用於驗證應用程式中的基礎模型回應。

tags (選用)

要與自動推理政策建立關聯的標籤清單。標籤可協助您組織和管理政策。

kmsKeyId (選用)

用於加密自動推理政策的 KMS 金鑰識別碼。您可以使用金鑰 ID、金鑰 ARN、別名名稱或別名 ARN。如果您未指定 KMS 金鑰,Amazon Bedrock 會使用服務擁有的金鑰來加密政策。

建立自動推理政策回應元素

API 會傳回下列資訊:

policyArn

您建立的自動推理政策的 Amazon Resource Name (ARN)。

version

自動推理政策的版本。初始版本為 DRAFT

name

自動推理政策的名稱。

範例

下列範例示範如何使用 AWS CLI 建立自動推理政策:

aws bedrock create-automated-reasoning-policy \ --name "DeleteMe" \ --kms-key-id arn:aws:kms:us-east-1:111122223333:key/12345678-1234-1234-1234-123456789012

回應範例:

{ "createdAt": "2025-07-21T14:43:52.692Z", "definitionHash": "f16ba1ceca36e1d21adce559481add6a4998b79ae203d933fd0206a28d5c2896513dd62f57b293cba282441269a72063b1d9da02fcf2b421e9bf8495ff8c87af", "name": "DeleteMe", "policyArn": "arn:aws:bedrock:us-east-1:111122223333:automated-reasoning-policy/lnq5hhz70wgk",, "updatedAt": "2025-07-21T14:43:52.692Z", "version": "DRAFT" }

啟動自動化原因政策建置工作流程請求參數

啟動自動化原因政策的建置工作流程時,需要或選用下列參數:

policyArn (必要)

在上一個步驟中建立的自動化理由政策資源的 Amazon Resource Name (ARN)。

buildWorkflowType (必要)

您正在啟動的工作流程類型。選項為 INGEST_CONTENTREFINE_POLICYIMPORT_POLICY。若要從文件或文字建立新的政策定義,請使用 INGEST_CONTENT

sourceContent (必要)

用來擷取變數和規則的來源檔案。

clientRequestToken (選用)

唯一且區分大小寫的識別碼,以確保操作完成的次數不超過一次。如果此字符符合先前的請求,Amazon Bedrock 會忽略請求,但不會傳回錯誤。

建立自動推理政策回應元素

API 會傳回下列資訊:

policyArn

您建立的自動化理由政策的 Amazon Resource Name (ARN)。

buildWorkflowId

新建置工作流程的唯一識別符。

範例

下列範例示範如何使用 啟動匯入工作流程AWS CLI。您可以使用選用policyDefinition屬性來指定起始變數結構描述或規則集,例如,如果您已有預期特定變數集的應用程式。

# Step 1: Encode PDF to base64 (remove newlines) PDF_BASE64=$(base64 -i your-policy.pdf | tr -d '\n') # Step 2: Create policy from base64-encoded content aws bedrock start-automated-reasoning-policy-build-workflow \ --policy-arn arn:aws:bedrock:us-east-1:111122223333:automated-reasoning-policy/lnq5hhz70wgk \ --build-workflow-type INGEST_CONTENT \ --source-content "{ \"policyDefinition\": { \"version\": \"1.0\", \"types\": [], \"rules\": [], \"variables\": [] }, \"workflowContent\": { \"documents\": [ { \"document\": \"$PDF_BASE64\", \"documentContentType\": \"pdf\", \"documentName\": \"Company Policy Document\", \"documentDescription\": \"I'm building a chatbot that answers user questions about my leave of absence HR policy, capture rules and variables that help users determine whether they are eligible for leave of absence.\" } ] } }"

回應範例:

{ "policyArn": "arn:aws:bedrock:us-east-1:111122223333:automated-reasoning-policy/lnq5hhz70wgk", "buildWorkflowId": "d40fa7fc-351e-47d8-a338-53e4b3b1c690" }

啟動文件擷取工作流程後,您可以使用 ListAutomatedReasoningPolicyBuildWorkflows 來檢查匯入工作流程的狀態,以及政策 ARN。

aws bedrock list-automated-reasoning-policy-build-workflows \ --policy-arn arn:aws:bedrock:us-east-1:111122223333:automated-reasoning-policy/lnq5hhz70wgk

自動推理政策的 KMS 許可

如果您指定客戶自管 KMS 金鑰來加密自動推理政策,則必須設定許可,那些許可會允許 Amazon Bedrock 代表您使用金鑰。

金鑰政策許可

將下列陳述式新增至 KMS 金鑰政策,以允許 Amazon Bedrock 使用自動推理政策的金鑰:

{ "Sid": "PermissionsForAutomatedReasoningPolicy", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/role" }, "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:bedrock:automated-reasoning-policy": [ "arn:aws:bedrock:us-east-1:111122223333:automated-reasoning-policy/policy-id", "arn:aws:bedrock:us-east-1:111122223333:automated-reasoning-policy/policy-id:*" ], "kms:ViaService": "bedrock.us-east-1.amazonaws.com" } } }

IAM 許可

IAM 主體必須具有下列許可,才能使用客戶自管 KMS 金鑰搭配自動推理政策:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowKMSForAutomatedReasoningPolicy", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:bedrock:automated-reasoning-policy": [ "arn:aws:bedrock:us-east-1:111122223333:automated-reasoning-policy/policy-id", "arn:aws:bedrock:us-east-1:111122223333:automated-reasoning-policy/policy-id:*" ], "kms:ViaService": "bedrock.us-east-1.amazonaws.com" } } } ] }

加密內容

Amazon Bedrock 使用加密內容來為自動推理政策提供額外的安全性。加密內容是一組金鑰值對,Amazon Bedrock 會在加密和解密政策時用作額外的驗證資料。

對於自動推理政策,Amazon Bedrock 會使用下列加密內容:

  • 索引鍵aws:bedrock:automated-reasoning-policy

  • 值:自動推理政策的 Amazon Resource Name (ARN)

檢視自動推理政策詳細資訊

建立政策後,您可以在政策的定義頁面上檢視其轉譯的邏輯和變數。

政策建立最佳實務

良好的自動推理政策會擷取在驗證應用程式內容所需的所有必要資訊。就高層級來說,當您認為 LLM 的答案有效且完整時,政策應傳回 VALID 的驗證結果。

建立變數,這些變數會擷取使用者意圖並使用影響 (=>) 來建構關係

使用布林值變數來擷取使用者正在歸納的結論,例如「我是否可以提交此表格」或「此付款是否合規」,然後使用變數來建立遵循 if/then「隱含表單」的規則。您可以在建立政策時使用內容描述欄位,提供使用者將詢問的問題類型範例,或直接指導這些變數應該是什麼內容。

範例

✓ Good: (=> isPaymentCompliant (<= paymentAmount 10000)) ✗ Poor: (<= paymentAmount 10000)

針對非專屬狀態使用布林值 (而非列舉)

代表可作為個別布林值變數 (而非互斥列舉值) 共存的特性。當可同時套用多個條件時,這可防止邏輯矛盾。例如,使用者可以是資深人員和老師。兩個布林值變數允許將兩者設為 true。使用列舉值將 customerType 設為 TEACHER,將 customerType 設為 VETERAN 會導致矛盾,因為變數只能具有單一值。

範例

✓ Good: isTeacher, isVeteran ✗ Poor: customerType = {TEACHER, VETERAN, OTHER}

在變數描述中明確指定單位和格式

在其描述中清楚記錄所有數值的單位和格式。這可減少以不同格式解譯文字時的差異,並防止單位轉換錯誤,進而產生更可預測的驗證結果。

範例

  • 「discountRate:百分比的十進位表示法 (0.15 表示 15%)」

  • 「refundTimeframeInDays:退款請求允許的天數」

  • 「temperatureInCelsius:以攝氏為單位的整數值」

驗證數值的範圍

使用規則來驗證變數值,以確保其有效。為數值變數設定這些限制可以防止無意義輸入,並在發生時將其標示為「不可能」。

範例

✓ Good: (> patientAge 0) ✓ Good: (and (> creditScore 300) (< creditScore 1100))

使用中繼變數來建立不同層級的模型並建立抽象

使用有意義的中繼變數來表示複雜的概念,並將其明確連結至實作詳細資訊。使用概念變數 (而非明確表達式) 可建立模組化,使得從政策概念到特定成果的邏輯流程變得明確。這也允許對不存在明確輸入的一般案例進行驗證,例如:「付費福利是否包含免費升級?」

範例

(=> (or (> membershipDurationYears 10) lifeTimeStatusGranted) hasLifetimeStatus) (= qualifiesForPremiumBenefits (or isPlatinumMember hasLifetimeStatus)) (=> qualifiesForPremiumBenefits freeUpgrade)

使用列舉進行分類和主觀評估

定義列舉類型,以分類問題或代表主觀判斷 (而不是使用數字量表)。離散類別允許為每個嚴重性指派明確的定義。數值量表不提供一致的分類方法。如果變數可能沒有列舉的值,請在可能的值中包含 OTHERNONE

範例

type "Severity" with values "CRITICAL", "MAJOR", "MINOR"

邏輯必須是宣告式 (而非程序式)

標準電腦程式碼會依指定順序執行,但政策會指定未依指定順序執行的規則。設計規則和變數,以允許單一規則中的 if/then/else 邏輯。此方法可讓規則保持解耦狀態,並避免規則衝突,同時仍能清楚地代表政策的邏輯結構。

範例

✗ Poor: (=> conditionA (= outcome VALUE_1)) ✗ Poor: (=> conditionB (= outcome VALUE_2)) ✓ Good: (=> (and conditionA conditionB) (= outcome VALUE_1)) // A takes precedence when both apply ✓ Good: (=> (and (not conditionA) conditionB) (= outcome VALUE_2)) ✓ Good: (=> (and (not conditionA) (not conditionB)) (= outcome DEFAULT_VALUE))

使用清楚且一致的命名慣例

在變數命名中套用可預測模式,以增強可讀性和一致性的解譯。

範例

  • 布林值變數:使用「is」或「has」字首

  • 分類變數:使用實質性名詞

  • 數值變數:適時包含單位