创建自动推理策略 - 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,并包含每条规则的元数据。这种方法可以生成更丰富的输出,可以帮助您审计每条规则来自文档的哪些部分、提取的可信度以及哪些规则是推断出来的,而不是直接陈述的。它还要求法学硕士生成理智规则——诸如 “年龄必须为非负数” 之类的常识性边界限制,这些限制直接转化为自动推理策略使用的边界规则。有关边界规则的更多信息,请参阅验证数值的范围

提示示例:

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. 集中精力提取。如果您的文档涵盖多个主题,请告诉 Automated Reasoning 会检查要重点关注哪些部分,哪些要忽略。例如:“重点关注涵盖休假政策的第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. 对于 S ourc e,请提供描述知识领域规则和政策的文档。执行以下操作:

    1. 对于摄取方法,执行以下操作之一:

      1. 选择上传文档,然后选择选择文件。上传源内容的 PDF 文档。

      2. 选择输入文本。粘贴或输入您的源内容。

    2. (推荐)有关说明,请提供有关如何处理源文档的指导。有关要包含写出有效的指令的内容,请参阅。

  5. (可选)对于标签,请选择添加新标签,将标签添加到策略中。

  6. (可选)对于加密,选择用于加密策略的 KMS 密钥。您可以使用默认的服务拥有的密钥或选择客户管理的密钥。

  7. 选择创建策略

提示

如果您的应用程序需要一组特定的变量,则可以在导入内容之前预先定义架构。使用 CreateAutomatedReasoningPolicy API 或 CloudFormation 创建包含所需变量和类型但不包含规则的策略。policyDefinition然后使用导迭代策略构建入您的源文档。自动推理将使用您的预定义架构作为起点,并添加引用您的变量的规则。

使用 API 创建策略

自动推理策略是您的 AWS 账户中由亚马逊资源名称 (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:启动生成工作流程以提取规则

使用第 1 步中带有策略 ARN 的 StartAutomatedReasoningPolicyBuildWorkflow API,从源文档中提取规则和变量。

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)裸露的断言会产生公理,即始终正确的陈述,这使得某些条件在逻辑上是不可能的,并在验证期间导致意想不到的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 的语句,以确定文档的哪些部分被遗漏,并考虑使用迭代策略构建来添加缺失的内容。请参阅迭代策略构建

  • 个别规则的准确性分数很低。每条规则都有自己的准确度分数和理由。准确性分数较低的规则可能无法忠实地代表原始资料。使用规则过滤器隔离特定规则的基础陈述,并将它们与规则的形式逻辑进行比较以识别误解。

  • 没有根据的规则或变量。缺少基础陈述的规则或变量可能是推断出来的,而不是直接从文档中提取出来的。请验证这些内容是否正确,如果它们不能反映您的意图,则将其删除。

提示

保真度报告对于与撰写源文档的领域专家合作特别有用。与他们共享 S ource Doc ument 视图,这样他们就可以验证策略是否正确捕捉了他们的意图,而无需直接阅读正式的逻辑规则。

迭代策略构建

对于复杂的域名,请逐步制定策略,而不是尝试在单个文档上传中捕获所有内容。从规则的重点子集开始,创建并测试策略,然后在后续迭代中添加更多内容。

在控制台中添加内容

  1. 在控制台中打开您的自动推理策略。

  2. 在 “定义” 页面上,选择 “导入”。

  3. 选择将新内容与现有策略定义合并的选项。

  4. 上传或粘贴其他源内容。

  5. 查看更新的政策定义并解决任何新的冲突或重复项。

使用 API 添加内容

致电 StartAutomatedReasoningPolicyBuildWorkflowINGEST_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 个构建工作流程,任何时候都只允许 1 个构建工作流程。IN_PROGRESS如果您需要启动一个新版本并且已经有 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

  • 值:您的自动推理策略的亚马逊资源名称 (ARN)