创建自动推理策略 - Amazon Bedrock

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建自动推理策略

创建自动推理策略时,您的输入源文档将转换为一组形式逻辑规则以及包含变量和类型的架构。

Amazon Bedrock 使用 AWS Key Management Service(KMS)对自动推理策略进行加密。默认情况下,Amazon Bedrock 使用服务拥有的密钥。您可以选择指定客户自主管理型 KMS 密钥,以进一步控制策略数据的加密。

示例:如果您的源文档包含 HR 策略,指出“工作已满至少 1 年的全职员工可以享受育儿假”,则自动推理将提取诸如 IsFullTime(布尔值)、YearsOfService(整数)和 EligibleForParentalLeave(布尔值)等变量,以及将它们联系起来的规则。

注意

教程视频:要了解如何创建自动推理策略,请观看以下教程: step-by-step

教程演示 1 – 自动推理检查功能中的策略创建

要测试和使用您的自动推理策略,请确保您拥有相应的权限

在控制台中创建自动推理策略

  1. 在左侧导航中,选择自动推理,然后选择创建策略

  2. 输入策略的名称

  3. (可选)输入策略的描述

  4. 对于来源,您需要提供一份描述知识领域规则和策略的文档。该文档应包含您希望自动推理进行验证时依据的业务规则、策略或指南。例如,您可以上传定义员工福利资格的 HR 策略文档、概述监管要求的合规性手册或描述系统限制的技术规范。文档的内容应全面且清晰,因为自动推理将从这些内容中提取形式逻辑规则。

    注意

    最佳实践:对于复杂的策略,最好将内容拆分为可提取的块,然后逐步将新内容导入策略,来一步步地复杂化。从规则的重点子集开始,全面创建和测试策略,然后在后续迭代中逐步添加更多内容。这种方法可以帮助您尽早发现和解决问题,确保每次添加的内容能够正确地使用现有规则,并且在出现问题时更轻松地进行故障排除。

    执行以下操作:

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

      1. 选择上传文档,然后选择选择文件。上传源内容的 PDF 文档,将其作为策略的基础内容。

      2. 选择输入文本。粘贴或输入将用作策略基础内容的源内容。

    2. (推荐)对于说明,请指定有关如何处理源文档的其他信息。尽管非必需,但提供有关如何使用策略以及要重点关注或忽略文档哪些部分的信息,有助于完成逻辑提取过程。

      注意

      说明应解释策略将核实哪种类型的问题,描述输入文档的结构,并举例说明用户将提出的问题类型。例如:“此策略将核实有关休假资格的 HR 问题。文件包含了关于不同休假类型的章节。用户会问诸如‘如果我在这里工作了 9 个月,可以享受育儿假吗?’”

  5. (可选)对于标签,请选择添加新标签,将标签添加到策略中。标签可帮助您管理、筛选和搜索 AWS 资源。

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

  7. 选择创建策略

使用 API 创建自动推理策略

自动推理策略是您的 AWS 账户中的一种资源,可以使用 Amazon 资源名称 (ARN) 进行引用。自动推理策略是生成策略定义和策略版本的生成工作流程的容器。策略定义由变量架构和一组对变量进行操作的规则组成。策略版本是默认 DRAFT 版本的不可变快照。自动推理策略最多可以有两个生成工作流程。每个生成工作流程都会输出三项资产:策略定义、策略定义质量报告和生成日志。

自动推理策略可以包含通过调用 CreateAutomatedReasoningPolicyVersion API 操作创建的定义的编号且不可变的版本。自动推理策略支持名为的特殊版本DRAFT,该版本在 AWS 控制台中以 “工作草稿” 的形式呈现。

要创建新策略,第一步是使用 CreateAutomatedReasoningPolicy API 创建策略资源。然后,使用新策略 Amazon 资源名称 (ARN),您可以调用,使用变量和规则架构从文档中填充策略构建。StartAutomatedReasoningPolicyBuildWorkflow

创建自动推理策略请求参数

创建自动推理策略时,有以下必需或可选的参数:

name(必需)

自动推理策略的名称。该名称在 AWS 账户和区域中必须唯一。

description(可选)

自动推理策略的描述。使用此项提供有关策略目的及其执行的验证类型的背景信息。

clientRequestToken(可选)

区分大小写的唯一标识符,用于确保操作不会多次执行。如果此令牌与之前的请求匹配,Amazon Bedrock 将忽略请求,但不会返回错误。

policyDefinition(可选)

策略定义,包含形式逻辑规则、变量和自定义变量类型,用于验证应用程序中基础模型的响应。

tags(可选)

与自动推理策略关联的标签列表。标签可帮助您组织和管理策略。

kmsKeyId(可选)

用于加密自动推理策略的 KMS 密钥标识符。您可以使用密钥 ID、密钥 ARN、别名名称或别名 ARN。如果您不指定 KMS 密钥,则 Amazon Bedrock 会使用服务拥有的密钥对您的策略进行加密。

创建自动推理策略响应元素

此 API 会返回以下信息:

policyArn

您创建的自动推理策略的 Amazon 资源名称(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(必需)

在上一步中创建的自动推理策略资源的亚马逊资源名称 (ARN)。

buildWorkflowType(必需)

您正在启动的工作流程类型。选项是INGEST_CONTENTREFINE_POLICY、或IMPORT_POLICY。要根据文档或文本创建新的策略定义,请使用INGEST_CONTENT

sourceContent(必需)

用于提取变量和规则的源文件。

clientRequestToken(可选)

区分大小写的唯一标识符,用于确保操作不会多次执行。如果此令牌与之前的请求匹配,Amazon Bedrock 将忽略请求,但不会返回错误。

创建自动推理策略响应元素

此 API 会返回以下信息:

policyArn

您创建的自动推理策略的亚马逊资源名称 (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" }

启动文档提取工作流程后,您可以使用使用策略 ARN 检查导入工作流程的状态。ListAutomatedReasoningPolicyBuildWorkflows

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

  • 值:您的自动推理策略的亚马逊资源名称 (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%)"

  • “refundTimeframeIn天数:允许申请退款的天数”

  • “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”前缀

  • 类别变量:使用实体性名词

  • 数值变量:在合适时,应包括单位