本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建自动推理策略
创建自动推理策略时,您的源文档将转换为一组形式逻辑规则以及变量和类型的架构。此页面引导您准备文档、创建策略和查看结果。
Amazon Bedrock 使用 AWS Key Management Service(KMS)对自动推理策略进行加密。默认情况下,Amazon Bedrock 使用服务拥有的密钥。您可以选择指定客户自主管理型 KMS 密钥,以进一步控制策略数据的加密。
要测试和使用您的自动推理政策,请确保您拥有相应的权限。
准备您的源文档
在打开控制台或调用 API 之前,请准备好自动推理用于提取规则和变量的文档。您的政策质量直接取决于这些输入的质量。
文件结构和清晰度
自动推理检查最适合包含明确、明确规则的文档。每条规则都应说明条件和结果。避免使用模糊的语言、主观标准或依赖于文档中未存在的外部背景的规则。
示例:明确与模糊的规则
| 透明(适合提取) | 模糊(不适合提取) |
|---|---|
| “连续工作至少12个月的Full-time 员工有资格享受育儿假。” | “符合条件的员工可以申请育儿假,但须经经理批准。” |
| “退款申请必须在购买后 30 天内提交。商品必须使用原包装。” | “退款是根据具体情况处理的。” |
大小限制和拆分大型文档
源文档的大小限制为 5 MB 和 50,000 个字符。文档中的图像和表格也计入字符限制。
如果您的文档超过了这些限制,或者涵盖了多个无关的领域,请将其拆分为重点部分。例如,将员工手册拆分为休假政策、福利资格和费用报销的单独文档。使用第一部分创建您的策略,然后使用迭代策略构建(本页稍后将介绍)将其他部分合并到同一策略中。
Pre-process 复杂的文档
包含大量样板、法律免责声明或与您要执行的规则无关的内容的文档将产生带有不必要变量和规则的杂乱政策。在上传之前,请考虑:
-
删除不包含规则的页眉、页脚、目录和附录。
-
仅提取包含与您的用例相关的规则的部分。
-
尽可能将复杂的表格简化为纯文本语句。
提示
从规则的重点子集开始。全面创建和测试策略,然后在后续迭代中逐步添加更多内容。这种方法可以帮助您及早发现和解决问题,并简化故障排除。
(可选)使用 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 语句,以便在创建自动推理策略时用作源文档。
撰写有效的指令
创建策略时,您可以提供可选说明来指导自动推理如何处理您的源文档。尽管是可选的,但好的指令可以显著提高提取的规则和变量的质量。
有效的说明应涵盖三件事:
-
描述用例。解释您的应用程序的用途以及该政策将验证的内容类型。例如:“该政策将验证回答员工有关休假资格问题的人力资源聊天机器人。”
-
描述用户将要问的问题类型。举例说明真实的用户问题。例如:“用户会问诸如'如果我在这里工作了9个月,我有资格享受育儿假吗?' 或者'我能休多少天的丧亲假?'”
-
聚焦提取。如果您的文档涵盖多个主题,请告诉自动推理会检查要重点关注哪些部分和忽略哪些部分。例如:“重点关注涵盖休假政策的第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.
在控制台中创建策略
-
在左侧导航中,选择自动推理,然后选择创建策略。
-
输入策略的名称。
-
(可选)输入策略的描述。
-
对于来源,请提供描述知识领域规则和策略的文档。执行以下操作:
-
对于摄取方法,执行以下操作之一:
-
选择上传文档,然后选择选择文件。上传源内容的 PDF 文档。
-
选择输入文本。粘贴或输入您的源内容。
-
-
(推荐)有关说明,请提供有关如何处理源文档的指导。查看撰写有效的指令要包含的内容。
-
-
(可选)对于标签,请选择添加新标签,将标签添加到策略中。
-
(可选)对于加密,选择用于加密策略的 KMS 密钥。您可以使用默认的服务拥有的密钥或选择客户管理的密钥。
-
选择创建策略。
提示
如果您的应用程序需要一组特定的变量,则可以在导入内容之前预定义架构。使用 CreateAutomatedReasoningPolicy API 或 CloudFormation 创建policyDefinition包含所需变量和类型但不包含规则的策略。然后使用导迭代政策制定入您的源文档。自动推理将使用您的预定义架构作为起点,并添加引用您的变量的规则。
使用 API 创建策略
自动推理政策是您 AWS 账户中由亚马逊资源名称 (ARN) 标识的资源。通过 API 创建策略分为两个步骤:首先创建策略资源,然后启动构建工作流程以从文档中提取规则。
步骤 1:创建策略资源
使用 CreateAutomatedReasoningPolicy API 创建策略资源。
name(必需)-
策略的名称。在您的 AWS 账户和地区中必须是唯一的。
description(可选)-
对政策目的的描述。
policyDefinition(可选)-
包含规则、变量和自定义类型的初始策略定义。如果您已经有了想要启动的架构,请使用此方法。
kmsKeyId(可选)-
用于加密策略的 KMS 密钥标识符。如果未指定,则亚马逊 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为可从文档中提取规则。您还可以使用将从文档中提取的内容合并INGEST_CONTENT到现有策略中:将当前策略定义与新文档sourceContent一起包括在内,提取的规则、变量和类型将合并到现有定义中,而不是替换现有定义。请参阅迭代政策制定。 sourceContent(必需)-
包含要处理的文档和可选的启动策略定义。
示例:
# Encode your PDF to base64 PDF_BASE64=$(base64 -iyour-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?'\" } ] } }"
注意
在policyDefinition对象中,该version字段为必填字段,必须设置为1.0。它标识策略定义架构的版本,与策略资源版本(DRAFT或编号版本)不同。
示例响应:
{ "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参数查看工作流程中生成的资产的完整列表,例如保真度报告。
检查有无以下问题:
-
未使用的变量。在控制台中,查找变量旁边的警告指示器。这些标记未被任何规则引用的变量。删除未使用的变量——它们会给翻译过程增加噪音,并可能导致
TRANSLATION_AMBIGUOUS结果。在 API 中,QUALITY_REPORT资产中列出了未使用的变量。 -
重复或接近重复的变量。扫描变量列表中是否存在含义重叠的变量,例如
tenureMonths和monthsOfService。重复的变量会混淆翻译过程,因为自动推理检查无法确定对给定概念使用哪一个变量。合并或删除重复项。 -
纯粹的断言(规则不是 if-then 格式)。浏览规则,寻找不是 if-then 格式的规则,例如。
(= eligibleForParentalLeave true)裸露的断言会产生公理——这些陈述永远是正确的——这使得某些条件在逻辑上变得不可能,并在验证期间导致意想不到IMPOSSIBLE的结果。将它们重写为条件(例如,(=> (and isFullTime (> tenureMonths 12)) eligibleForParentalLeave))或将其删除。裸露的断言仅适用于边界条件,例如(>= accountBalance 0)。 -
相互冲突的规则。质量报告标记了相互矛盾的规则。规则冲突会导致您的政策返回
IMPOSSIBLE所有涉及冲突规则的验证请求。通过合并规则或删除其中一个规则来解决冲突。 -
缺少规则或变量。将提取的策略与您的源文档进行比较。如果缺少重要的规则或概念,您可以手动添加它们或使用更好的说明重新创建策略。
提示
质量报告还确定了不相交的规则集,即不共享任何变量的规则组。不相交的规则集不一定是问题(您的政策可能涵盖独立的主题),但它们可能表明变量在相关规则之间缺少联系。
查看保真度报告
当您从源文档创建策略时,保真度报告将与提取的策略一起自动生成。保真度报告衡量政策代表您的源内容的准确程度,并提供了详细的依据,将每条规则和变量与文档中的特定陈述联系起来。有关保真度报告概念的更多信息,请参阅富达报告。
在控制台中查看保真度报告
在控制台中,打开您的策略并选择 “源文档” 选项卡(在 “定义” 旁边)。源内容视图将从文档中提取的每条原子语句显示为表格中的编号行。每行显示:
-
报表编号和提取的文本。
-
该声明的来源文件。
-
该声明所依据的规则数量。
-
以该语句为基础的变量数量。
使用规则和变量下拉过滤器将重点放在基于特定规则或变量的语句上。使用搜索栏在提取的语句中查找特定内容。
如果您在初始提取后编辑策略(例如,通过修改规则或添加变量),请选择 “重新生成” 按钮来更新保真度报告,使其反映您当前的策略定义。
使用 API 查看保真度报告
GetAutomatedReasoningPolicyBuildWorkflowResultAssets与一起使用--asset-type FIDELITY_REPORT可检索保真度报告。要在更改策略后重新生成报告,请StartAutomatedReasoningPolicyBuildWorkflow与生成工作流程类型一起使用,GENERATE_FIDELITY_REPORT并在generateFidelityReportContent字段中提供源文档。该工作流程根据当前的策略定义重新分析文档,并生成新的保真度报告。您还可以使用--asset-type SOURCE_DOCUMENT--asset-id参数检索先前构建工作流程中的原始源文档(从资产清单中获取资产 ID)。
要查找的内容
在查看 API 的保真度报告时,请注意:
-
覆盖率分数低。较低的覆盖率分数表示您的原始文档的很大一部分未包含在保单中。在源内容视图中查找规则为 0、变量为 0 的语句,以确定文档的哪些部分被遗漏了,并考虑使用迭代策略构建来添加缺失的内容。请参阅迭代政策制定。
-
单个规则的准确度得分较低。每条规则都有自己的准确度分数和理由。准确度分数较低的规则可能无法忠实地代表原始资料。使用规则筛选器隔离特定规则的基础陈述,并将其与规则的形式逻辑进行比较以识别误解。
-
没有根据的规则或变量。缺乏基础陈述的规则或变量可能是推断出来的,而不是直接从文档中提取的。验证这些内容是否正确,如果它们不反映您的意图,则将其删除。
提示
保真度报告对于与撰写源文档的领域专家的合作特别有用。与他们共享 “源文档” 视图,这样他们就可以验证策略是否正确反映了他们的意图,而无需直接阅读正式的逻辑规则。
迭代政策制定
对于复杂的域名,应逐步制定策略,而不是尝试在单个文件上传中捕获所有内容。从规则的重点子集开始,创建和测试策略,然后在后续迭代中添加更多内容。
在控制台中添加内容
-
在控制台中打开您的自动推理策略。
-
在 “定义” 页面上,选择 “导入” 。
-
选择将新内容与现有策略定义合并的选项。
-
上传或粘贴其他源内容。
-
查看更新的策略定义并解决任何新的冲突或重复问题。
使用 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 -iadditional-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。
使用 API 导入策略定义
如果您已经有 JSON 格式的策略定义,IMPORT_POLICY请StartAutomatedReasoningPolicyBuildWorkflow使用和直接导入。这将跳过文档提取步骤并按原样加载定义。
aws bedrock start-automated-reasoning-policy-build-workflow \ --policy-arn arn:aws:bedrock:us-east-1:111122223333:automated-reasoning-policy/lnq5hhz70wgk\ --build-workflow-type IMPORT_POLICY \ --source-content "{ \"policyDefinition\": { \"version\": \"1.0\", \"variables\": [ { \"name\": \"isFullTime\", \"type\": \"BOOL\", \"description\": \"Whether the employee works full-time.\" } ], \"rules\": [ { \"id\": \"A1B2C3D4E5F6\", \"expression\": \"(=> isFullTime eligibleForBenefits)\" } ], \"types\": [] } }"
使用 API 以迭代方式完善策略
StartAutomatedReasoningPolicyBuildWorkflow与一起使用ITERATIVELY_REFINE_POLICY,使用源文档和可选的自然语言反馈来完善现有政策。与从文档INGEST_CONTENT中提取新规则不同,此工作流程使用文档作为上下文来改进现有策略。常见使用案例包括:
-
修复失败的测试。当测试返回意外结果时,提供描述预期行为的源文档和反馈,以完善政策规则。
-
解决有关缺失概念的反馈。提供有关当前未包含在政策中的概念的自然语言反馈,并将源文档作为上下文。
-
在源文档更改后更新。修订源文件时,提供更新的文档并描述要纳入的具体更改。
policyDefinition(必需)-
完整的当前政策定义有待完善。
workflowContent.iterativeRefinementContent.documents(必需)-
用作改进上下文的源文档。
workflowContent.iterativeRefinementContent.feedback(可选)-
描述您想要的具体更改或改进的自然语言说明。例如,“添加丧亲假资格规则” 或 “根据新政策修订将任期门槛从 12 个月更新为 6 个月”。
# Encode your updated policy document PDF_BASE64=$(base64 -iupdated-policy.pdf| tr -d '\n') aws bedrock start-automated-reasoning-policy-build-workflow \ --policy-arn arn:aws:bedrock:us-east-1:111122223333:automated-reasoning-policy/lnq5hhz70wgk\ --build-workflow-type ITERATIVELY_REFINE_POLICY \ --source-content "{ \"policyDefinition\":EXISTING_POLICY_DEFINITION_JSON, \"workflowContent\": { \"iterativeRefinementContent\": { \"documents\": [ { \"document\": \"$PDF_BASE64\", \"documentContentType\": \"pdf\", \"documentName\": \"Updated HR Policy v2\", \"documentDescription\": \"Revised HR leave policy with updated eligibility criteria.\" } ], \"feedback\": \"Update the tenure requirement for parental leave from 12 months to 6 months, as specified in section 3 of the revised document.\" } } }"
提示
在源文档已更新且您希望政策反映变化ITERATIVELY_REFINE_POLICY时使用,或者当您想通过具体说明指导改进时使用。当你想从新文档中添加全新内容时,请INGEST_CONTENT改用。
针对自动推理策略的 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)