建立自動推理政策 - Amazon Bedrock

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

建立自動推理政策

當您建立自動推理政策時,您的來源文件會翻譯成一組正式邏輯規則,以及變數和類型的結構描述。此頁面會逐步引導您準備文件、建立政策,以及檢閱結果。

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

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

準備您的來源文件

在您開啟主控台或呼叫 API 之前,請準備自動化理由將用於擷取規則和變數的文件。政策的品質直接取決於此輸入的品質。

文件結構和清晰度

自動化推理檢查最適合使用包含明確、不明確規則的文件。每個規則都應陳述條件和結果。避免模糊的語言、主觀標準或依賴文件中不存在的外部內容的規則。

範例:清除與模糊規則

清除 (適合擷取) 模糊 (難以擷取)
「連續服務至少 12 個月的全職員工有資格申請親職休假。」 「符合資格的員工可以申請親職休假,但需經過主管核准。」
「退款請求必須在購買後 30 天內提交。項目必須採用原始封裝。」 「退款會依case-by-case處理。」

大小限制和分割大型文件

來源文件的大小限制為 5 MB 和 50,000 個字元。文件中的影像和資料表也會計入字元限制。

如果您的文件超過這些限制,或涵蓋多個不相關的網域,請將其分割為重點區段。例如,將員工手冊分割成休假政策、福利資格和費用補償的個別文件。使用第一個區段建立您的政策,然後使用反覆政策建置 (本頁稍後說明) 將其他區段合併至相同的政策。

預先處理複雜的文件

包含許多樣板、法律免責聲明或內容的文件與您要強制執行的規則無關,會產生具有不必要的變數和規則的雜訊政策。上傳之前,請考慮:

  • 移除不包含規則的標頭、頁尾、目錄和附錄。

  • 僅擷取包含與您使用案例相關規則的區段。

  • 盡可能將複雜資料表簡化為純文字陳述式。

提示

從規則的重點子集開始。徹底建立和測試政策,然後在後續反覆運算中逐漸新增更多內容。此方法可協助您及早識別和解決問題,並讓您更輕鬆地進行故障診斷。

(選用) 使用 LLM 將文件重寫為邏輯規則

對於包含敘述性說法、法律語言或複雜格式的文件,請考慮使用具有進階推理功能的前沿模型來重寫內容,然後再將其上傳至自動推理檢查。此一次性預處理步驟會將文字轉換為自動化原因檢查可以更準確地從中擷取的格式,從而產生具有較少未使用變數和裸露聲明的更高品質政策。

注意

使用 LLM 做為來源文字之前,請務必針對原始文件檢閱 LLM 的輸出。

LLM 預先處理有兩種方法,取決於文件的複雜性,以及您希望對擷取的控制程度。

方法 1:純文字規則擷取

要求 LLM 將文件重寫為 if-then 規則的編號清單。這種方法非常簡單,適用於來源中規則相對清晰的簡短、重點文件。

範例提示:

You are a logical reasoning expert. Your task is to analyze the provided source text and rewrite it as a set of clear, logical rules using if-then statements. Instructions: 1. Extract the key relationships, conditions, and outcomes from the source text. 2. Convert these into logical implications using "if-then" format. 3. Use clear, precise language that captures the original meaning. 4. Number each rule for easy reference. 5. Ensure rules are mutually consistent and non-contradictory. Format: - Rule [N]: If [condition], then [consequence]. - Use "and" to combine multiple conditions. - Use "or" for alternative conditions. - Include negations when relevant: If not [condition], then [consequence]. Example: Source: "Students who complete all assignments and attend at least 80% of classes will pass the course." Rule 1: If a student completes all assignments and attends at least 80% of classes, then they will pass the course. Source Text: [Paste your document here]

方法 2:結構化規則擷取

對於複雜或冗長的文件,請要求 LLM 擷取具有每個規則中繼資料的結構化 JSON 規則。此方法會產生更豐富的輸出,協助您稽核每個規則來源文件的哪些部分、擷取的可信度,以及推斷出哪些規則,而不是直接陳述。它還要求 LLM 產生健全性規則 — 常見的邊界限制條件,例如「年齡必須為非負數」 — 直接轉換為自動化理由政策使用的邊界規則。如需邊界規則的詳細資訊,請參閱 驗證數值的範圍

範例提示:

You are a logical reasoning expert. Extract formal logical rules from the provided text. Output Format: For each rule, provide: - Rule ID: [unique identifier] - Conditions: [ALL preconditions — preserve compound conditions with AND/OR/NOT] - Consequence: [the outcome/action] - Confidence: [high/medium/low based on text clarity] - Source Reference: [quote or paraphrase from source] - Rule Type: [explicit/implicit/sanity] Critical Guidelines: 1. PRESERVE ALL CONDITIONS: Do not drop or simplify conditions. 2. PRESERVE LOGICAL OPERATORS: Maintain AND, OR, NOT relationships exactly. 3. PRESERVE QUANTIFIERS: Keep "all", "any", "at least", numeric thresholds. 4. PRESERVE EXCEPTIONS: Include "unless", "except when" clauses. 5. Make implicit conditions explicit only when clearly implied by context. 6. Use consistent terminology across rules. 7. Flag ambiguities such as unclear, incomplete, or contradictory statements. 8. Add sanity rules for common-sense constraints: - Numeric ranges (e.g., "age must be between 0 and 150") - Temporal constraints (e.g., "start date must be before end date") - Physical limits (e.g., "quantity cannot be negative") - Mutual exclusivity (e.g., "status cannot be both active and inactive") Output Requirements: - Produce final JSON only (no text or markdown). - Use the following JSON keys: - "rules" for the rules array - "ambiguities" for the ambiguities array Source Text: [Paste your document here]

執行結構化擷取之後,請檢閱 JSON 輸出。請特別注意:

  • 使用 的規則 confidence: low — 這些規則可能需要對來源文件進行手動驗證。

  • 規則 ruleType: implicit- 這些是推斷的,而不是直接陳述的。確認它們準確反映來源的意圖。

  • ambiguities 陣列:這些反白來源文件不清楚的區域,可能需要在擷取之前重寫。

將檢閱的 JSON 規則轉換為純文字 if-then 陳述式,以在建立自動化原因政策時用作您的來源文件。

撰寫有效指示

建立政策時,您可以提供選用的指示,引導自動化理由如何處理您的來源文件。雖然是選用的,但良好的指示可大幅改善擷取規則和變數的品質。

有效指示應涵蓋三件事:

  1. 描述使用案例。說明您的應用程式執行的操作,以及政策將驗證的內容類型。例如:「此政策將驗證人力資源聊天機器人,回答員工有關休假資格的問題。」

  2. 描述使用者將詢問的問題類型。提供逼真的使用者問題範例。例如:「如果我在這裡工作了 9 個月,使用者將詢問類似「我是否符合休親假的資格?」的問題 或「我可以休多少天的喪假?」

  3. 集中擷取。如果您的文件涵蓋多個主題,請指示自動推理檢查要專注於哪些部分,以及要忽略哪些部分。例如:「第 3 到第 5 節的重點涵蓋休假政策。忽略第 1 節中的一般公司概觀,以及第 2 節中的組織圖表。」

範例說明:

This policy will validate HR questions about leave eligibility. The document has sections on different leave types (parental, medical, bereavement, personal). Users will ask questions like "Am I eligible for parental leave if I've worked here for 9 months?" or "Can part-time employees take bereavement leave?" Focus on the eligibility criteria for each leave type. Capture variables that help determine whether an employee is eligible for a specific type of leave.

在主控台中建立政策

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

  2. 輸入政策的名稱

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

  4. 對於來源,請提供說明知識網域規則和政策的文件。請執行下列操作:

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

      1. 選取上傳文件,然後選取選擇檔案。上傳來源內容的 PDF 文件。

      2. 選取輸入文字。貼上或輸入您的來源內容。

    2. (建議) 針對指示,提供如何處理來源文件的指引。如需包含的內容撰寫有效指示,請參閱 。

  5. (選用) 對於標籤,選擇新增標籤來標記政策。

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

  7. 選擇建立政策

提示

如果您的應用程式預期有一組特定的變數,您可以在匯入內容之前預先定義結構描述。使用 CreateAutomatedReasoningPolicy API 或 CloudFormation 建立具有 的政策policyDefinition,其中包含所需的變數和類型,但不包含規則。然後使用 反覆政策建置 匯入來源文件。自動化推理會使用您預先定義的結構描述做為起點,並新增參考變數的規則。

使用 API 建立政策

自動化理由政策是您 AWS 帳戶中以 Amazon Resource Name (ARN) 識別的資源。透過 API 建立政策是一個兩步驟的程序:首先建立政策資源,然後啟動建置工作流程,從文件中擷取規則。

步驟 1:建立政策資源

使用 CreateAutomatedReasoningPolicy API 建立政策資源。

name (必要)

政策的名稱。在您的 AWS 帳戶和區域中必須是唯一的。

description (選用)

政策用途的描述。

policyDefinition (選用)

具有規則、變數和自訂類型的初始政策定義。如果您已經有要開始的結構描述,請使用此選項。

kmsKeyId (選用)

用於加密政策的 KMS 金鑰識別符。如果未指定,Amazon Bedrock 會使用服務擁有的金鑰。

tags (選用)

要與政策建立關聯的標籤。

clientRequestToken (選用)

等冪字符,以確保操作完成不超過一次。

範例

aws bedrock create-automated-reasoning-policy \ --name "MyHRPolicy" \ --description "Validates HR chatbot responses about leave eligibility" \ --kms-key-id arn:aws:kms:us-east-1:111122223333:key/12345678-1234-1234-1234-123456789012

回應範例:

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

步驟 2:啟動建置工作流程以擷取規則

使用 StartAutomatedReasoningPolicyBuildWorkflow API 搭配步驟 1 的政策 ARN,從您的來源文件中擷取規則和變數。

policyArn (必要)

步驟 1 中建立的政策資源 ARN。

buildWorkflowType (必要)

將 設定為 從文件中INGEST_CONTENT擷取規則。

sourceContent (必要)

包含要處理的文件和選用的開始政策定義。

範例

# Encode your PDF to base64 PDF_BASE64=$(base64 -i your-policy.pdf | tr -d '\n') # Start the build workflow 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\": \"HR Leave Policy\", \"documentDescription\": \"Validates HR chatbot responses about leave eligibility. Users ask questions like 'Am I eligible for parental leave?'\" } ] } }"

回應範例:

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

使用 檢查建置狀態ListAutomatedReasoningPolicyBuildWorkflows

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

檢閱解壓縮的政策

建置完成後,請先檢閱解壓縮的政策定義,再開始測試。與稍後透過失敗的測試發現問題相比,此階段的快取問題可節省時間。

在 主控台中,開啟您的政策並前往定義頁面。透過 API,GetAutomatedReasoningPolicyBuildWorkflowResultAssets搭配 使用 --asset-type POLICY_DEFINITION 來擷取擷取的定義,以及--asset-type QUALITY_REPORT擷取品質報告。您可以使用 --asset-type ASSET_MANIFEST 參數查看工作流程期間產生的資產完整清單,例如保真度報告。

檢查是否有下列問題:

  1. 未使用的變數。在 主控台中,尋找變數旁的警告指標。這些標記變數未由任何規則參考。刪除未使用的變數 — 它們會增加轉譯程序的雜訊,並可能導致TRANSLATION_AMBIGUOUS結果。在 API 中,未使用的變數會列在QUALITY_REPORT資產中。

  2. 重複或幾乎重複的變數。掃描變數清單是否有具有重疊含義的變數,例如 tenureMonthsmonthsOfService。重複變數會混淆轉譯程序,因為自動推理檢查無法判斷要用於指定概念的變數。合併或刪除重複項目。

  3. 裸露聲明 (規則不是 if-then 格式)。略過規則並尋找不是 if-then 格式的規則,例如 (= eligibleForParentalLeave true)。裸露聲明會建立軸 – 一律為 true 的陳述式 – 這使得某些條件在邏輯上不可能,並在驗證期間導致非預期IMPOSSIBLE的結果。將它們重寫為條件式 (例如 (=> (and isFullTime (> tenureMonths 12)) eligibleForParentalLeave)) 或刪除。裸露聲明僅適用於 等邊界條件(>= accountBalance 0)

  4. 衝突規則。品質報告會標記相互矛盾的規則。衝突規則會導致您的政策IMPOSSIBLE針對涉及衝突規則的所有驗證請求傳回 。透過合併規則或刪除其中一個規則來解決衝突。

  5. 缺少規則或變數。將解壓縮的政策與您的來源文件進行比較。如果缺少重要的規則或概念,您可以手動新增這些規則或概念,或使用更好的說明重新建立政策。

提示

品質報告也會識別解除聯結規則集 — 不共用任何變數的規則群組。解除聯結規則集不一定是問題 (您的政策可能涵蓋獨立主題),但它們可以指出變數缺少相關規則之間的連線。

檢閱保真度報告

當您從來源文件建立政策時,系統會隨著擷取的政策自動產生保真度報告。保真度報告會測量政策代表您來源內容的準確度,並提供詳細的基礎,將每個規則和變數連結回文件中的特定陳述式。如需保真度報告概念的詳細資訊,請參閱 富達報告

在主控台中檢閱保真度報告

在 主控台中,開啟您的政策,然後選擇來源文件索引標籤 (定義旁)。來源內容檢視會將從文件中擷取的每個原子陳述式顯示為資料表中的編號列。每一列顯示:

  • 陳述式編號和擷取的文字。

  • 來源 陳述式來自的文件。

  • 以該陳述式為基礎之規則的數量。

  • 以該陳述式為基礎之變數的數量。

使用資料表頂端的規則變數下拉式清單篩選條件,以專注於基於特定規則或變數的陳述式。使用搜尋列在擷取的陳述式中尋找特定內容。

如果您在初始擷取之後編輯政策,例如修改規則或新增變數,請選擇重新產生按鈕來更新逼真度報告,以便反映您目前的政策定義。

使用 API 檢閱保真度報告

使用 GetAutomatedReasoningPolicyBuildWorkflowResultAssets搭配 --asset-type FIDELITY_REPORT來擷取保真度報告。若要在政策變更後重新產生報告,請使用 StartAutomatedReasoningPolicyBuildWorkflow搭配建置工作流程類型,GENERATE_FIDELITY_REPORT並在 generateFidelityReportContent 欄位中提供來源文件。工作流程會根據目前的政策定義重新分析文件,並產生新的逼真度報告。您也可以使用 --asset-type SOURCE_DOCUMENT搭配 --asset-id 參數從先前的建置工作流程擷取原始來源文件 (從資產資訊清單取得資產 ID)。

要尋找的內容

從 APIs 檢閱保真度報告時,請注意:

  • 低涵蓋範圍分數。低涵蓋範圍分數表示您的來源文件的重要部分未在政策中擷取。在來源內容檢視中尋找具有 0 個規則和 0 個變數的陳述式,以識別遺漏文件的哪些部分,並考慮使用疊代政策建置來新增缺少的內容。請參閱 反覆政策建置

  • 個別規則的準確度分數低。每個規則都有自己的準確性分數和理由。精確度分數低的規則可能不會忠實地代表來源材料。使用規則篩選條件隔離特定規則的接地陳述式,並將其與規則的正式邏輯進行比較,以識別錯誤解譯。

  • 未接地的規則或變數。可能已推斷缺少基礎陳述式的規則或變數,而不是直接從文件中擷取。驗證這些內容是否正確,如果它們未反映您的意圖,請將其移除。

提示

保真度報告特別適用於與撰寫來源文件的網域專家合作。與他們共用來源文件檢視,以便他們可以驗證政策是否正確擷取其意圖,而無需直接讀取正式的邏輯規則。

反覆政策建置

對於複雜的網域,請逐步建置您的政策,而不是嘗試在單一文件上傳中擷取所有內容。從規則的重點子集開始,建立和測試政策,然後在後續反覆運算中新增更多內容。

在主控台中新增內容

  1. 在 主控台中開啟您的自動化理由政策。

  2. 定義頁面上,選擇匯入

  3. 選取 選項,將新內容與現有政策定義合併。

  4. 上傳或貼上其他來源內容。

  5. 檢閱更新的政策定義,並解決任何新的衝突或重複。

使用 API 新增內容

StartAutomatedReasoningPolicyBuildWorkflow 使用 呼叫 INGEST_CONTENT,將完整的目前政策定義與新文件一起傳遞。您必須包含完整的現有定義 — 規則、變數和類型 —,以便新內容與現有政策合併,而不是取代它。

# First, retrieve the current policy definition aws bedrock get-automated-reasoning-policy \ --policy-arn arn:aws:bedrock:us-east-1:111122223333:automated-reasoning-policy/lnq5hhz70wgk # Encode the new document PDF_BASE64=$(base64 -i additional-rules.pdf | tr -d '\n') # Start a build workflow with the existing definition + new document 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\": EXISTING_POLICY_DEFINITION_JSON, \"workflowContent\": { \"documents\": [ { \"document\": \"$PDF_BASE64\", \"documentContentType\": \"pdf\", \"documentName\": \"Additional Benefits Rules\", \"documentDescription\": \"Additional rules covering medical and bereavement leave eligibility.\" } ] } }"
重要

API 支援每個政策最多 2 個建置工作流程,IN_PROGRESS且隨時僅允許 1 個建置工作流程。如果您需要啟動新的組建,且已有 2 個工作流程,請先使用 刪除舊的組建DeleteAutomatedReasoningPolicyBuildWorkflow

自動推理政策的 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 會使用下列加密內容:

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

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