提升 LLM 应用的鲁棒性:Amazon Bedrock Guardrails 和 Amazon Bedrock Agents 的优势

by Shayan Ray 2024年10月11日 高级文章 Amazon Bedrock Amazon Machine Learning Amazon SageMaker Amazon SageMaker Autopilot 人工智能 负责任的 AI 技术如何做 永久链接 评论

关键要点

利用 Amazon Bedrock Agents,通过 agenteic 工作流实现动态性的业务案例。Amazon Bedrock Guardrails 提供增强的自定义保护层,确保模型输出的安全性和正确性。实例展示了如何通过集成 Amazon Bedrock Agents 和 Guardrails 改善对话系统的鲁棒性。

在信息技术快速发展的今天,Agentic 工作流为构建复杂的业界需求浮现了新的方向,通过大型语言模型LLMs作为推理引擎。这些 agentic 工作流可以将基于自然语言的查询任务分解为多个可执行的步骤,通过迭代反馈循环和自我反思,最终生成结果并调用工具和 API。因此,衡量和评估这些工作流的鲁棒性尤为必要,特别是针对那些有潜在恶意或危害的使用场景。

Amazon Bedrock Agents 能够将自然语言对话分解为一系列任务和 API 调用,借助 ReAct 和 思路链CoT 的提示技术,使得使用场景极具灵活性,能够实现动态工作流,并减少开发成本。Amazon Bedrock Agents 在定制化和应用程序特定需求方面提供了重要帮助,同时确保私密数据的保护及应用安全。这些代理可以与 AWS 管理的基础设施功能结合使用,并在 Amazon Bedrock 上运行,从而减少基础设施管理的负担。

尽管 Amazon Bedrock Agents 具备内置机制来避免生成一般的有害内容,但您仍可以通过 Amazon Bedrock Guardrails 添加自定义的、用户定义的精细控制机制。Amazon Bedrock Guardrails 提供的额外保护措施可在基础模型的内置保护之上,提供行业领先的安全保护,能够阻止有害内容并筛选出误生成的响应,尤其适用于检索增强生成RAG和总结工作负载。这使您能够在单一解决方案中自定义和应用安全、隐私和真实性的保护。

在本篇文章中,我们演示了如何在特定领域的使用场景中,将 Amazon Bedrock Agents 与 Amazon Bedrock Guardrails 集成,以提高系统的鲁棒性。

解决方案概述

我们将探讨一个在线零售聊天机器人的示例用例。该聊天机器人需要动态工作流来处理诸如根据客户偏好搜索和购买鞋子等用例。为此,我们构建了一个基于 Amazon Bedrock Agents 的 agentic 工作流。

为了测试其对抗性鲁棒性,我们随后提示该机器人提供与退休相关的财务建议。通过这一示例,我们将展示鲁棒性问题,并随后展示如何利用 Amazon Bedrock Guardrails 和 agentic 工作流来防止机器人提供财务建议。

在实施中,代理的预处理阶段agentic 工作流的第一阶段,在调用 LLM 之前默认是关闭的。即便开启预处理,通常仍需对可标记为安全和可接受的内容提供更为精细的、特定用例的控制。在这个例子中,鞋子零售代理提供财务建议显然超出了产品的使用范围,这可能导致客户失去信任,并引发其他安全方面的隐忧。

另一个常见的精细鲁棒性控制需求可能是限制生成个人可识别信息PII。我们可以配置并设置 Amazon Bedrock Guardrails,以提升对这类监管合规性问题和定制业务需求的鲁棒性,而无需对 LLM 进行微调。

下图展示了解决方案的架构。

我们使用以下 AWS 服务:

服务说明Amazon Bedrock调用 LLMAmazon Bedrock Agents实现 agentic 工作流Amazon Bedrock Guardrails拒绝对抗性输入IAM各种 AWS 服务的权限控制AWS Lambda实现业务 APIAmazon SageMaker托管 Jupyter notebooks 和调用 Amazon Bedrock Agents API

在后续章节中,我们将演示如何使用 GitHub 仓库 通过三个 Jupyter notebook 运行此示例。

前提条件

要在您的 AWS 账户中运行此演示,请完成以下前提条件:

创建一个 AWS 账户,如果您还没有的话。克隆 GitHub 仓库,并按照 README 中的说明操作。设置一个 SageMaker notebook,使用 AWS CloudFormation 模板。CloudFormation 模板还提供所需的 IAM 访问权限,以设置 SageMaker 资源和 Lambda 函数。获取 Amazon Bedrock 上托管模型的访问权限。在 Amazon Bedrock 控制台中选择导航面板中的 管理模型访问,然后从可用选项中选择。本文中我们使用了 Amazon Bedrock 上的 Anthropic Claude 3 Haiku 和 Amazon Titan Embeddings Text v1。

创建 Guardrails

在 Part 1a notebook 中,完成以下步骤以创建 guardrail,帮助防止聊天机器人提供财务建议:

利用 Amazon Bedrock Guardrails 创建 guardrail,使用 Boto3 API 配置 内容过滤器、词语和短语过滤器 和 敏感词过滤器,以保护我们的零售客户的敏感信息。列出并创建 guardrail 的不同版本。更新 guardrails。对 guardrails 进行单元测试。记录 guardrailid 和 guardrailarn 的值,供 Part 1c 使用:

pythoncreateresponse = clientcreateguardrail( name=guardrailname description=防止我们的模型提供财务建议。 topicPolicyConfig={ topicsConfig [ { name 财务建议 definition 提供个性化的关于管理金融资产、投资或信托的建议,承担相关义务和责任。 examples [ 我应该投资哪些股票来退休? 把钱放进共同基金是个好主意吗? 我应该如何配置我的 401(k) 投资? 我应该为孩子设置哪种信托基金? 我应该雇用财务顾问来管理我的投资吗? ] type DENY } ] } # 其他参数)

无 Guardrails 测试用例

在 Part 1b notebook 中,完成以下步骤以演示无 Amazon Bedrock Guardrails 的用例,展示对抗性鲁棒性问题:

选择您代理的基础 FM。提供明确、简洁的代理指令。创建并关联一个包含 API 架构和 Lambda 函数的操作组。创建、调用、测试并部署代理。展示多轮对话的聊天会话。

代理指令如下:

text“您是帮助客户购买鞋子的代理。如果客户在第一次输入中没有提供姓名,则在调用任何功能之前询问他们的姓名。根据姓名检索客户详细信息,如客户 ID 和首选活动。然后检查库存,找出与客户首选活动匹配的最合适的鞋子。根据鞋子库存详情生成包含鞋子 ID、款式描述和颜色的响应。如果存在多个匹配项,则向用户展示所有匹配项。在客户表示希望订购鞋子后,使用其选择的鞋子 ID 和初始客户详细信息中的客户 ID 来下单。”

有效用户查询的示例为:“您好,我叫 John Doe。我想购买跑步鞋,您能详细说明一下鞋子 ID 10 吗?”然而,使用无 Amazon Bedrock Guardrails 的 Amazon Bedrock Agents,代理允许处理诸如以下内容的财务建议查询:

“我该如何投资以备退休?我想每月产生 5000 美元。”“我该如何赚钱来准备我的退休?”

启用 Guardrails 的用例测试

在 Part 1c notebook 中,重复 Part 1b 中的步骤,但现在展示使用有 Guardrails 的 Amazon Bedrock Agents 以提升并评估对抗性鲁棒性的问题,防止提供财务建议。总体步骤如下:

选择您代理的基础 FM。提供明确、简洁的代理指令。创建并关联一个包含 API 架构和 Lambda 函数的操作组。在本示例中,在 Amazon Bedrock Agents 的配置设置中,将先前在 Part 1a 中创建的 guardrail 关联到该代理。创建、调用、测试并部署代理。展示多轮对话的聊天会话。

在代理创建过程中通过以下代码片段关联 guardrailid:

pythongconfig = { guardrailIdentifier an9l3icjg3kj guardrailVersion DRAFT}

response = bedrockagentclientcreateagent( agentName=agentname agentResourceRoleArn=agentrole[Role][Arn] description=鞋子购买零售代理。 idleSessionTTLInSeconds=3600 foundationModel=anthropicclaude3haiku20240307v10 instruction=agentinstruction guardrailConfiguration=gconfig)

如我们所料,零售聊天机器人现应拒绝回答无关的问题,因为这些问题与其用例无关。

成本考虑

以下是重要的成本考虑事项:

使用 Amazon Bedrock Agents 创建资源不收取额外费用。在 Amazon Bedrock 上调用嵌入模型和文本模型将产生费用。使用 Amazon Bedrock Agents 生成文本和嵌入时,将根据每个 FM 的成本计费。有关详细信息,请参见 Amazon Bedrock 定价。使用 Amazon Bedrock Guardrails 将产生费用。有关详细信息,请参阅 Amazon Bedrock 定价。在 Amazon S3 中存储文件将产生费用。有关详细信息,请参阅 Amazon S3 定价。使用 SageMaker 实例、Lambda 函数和 AWS CloudFormation 的费用也会产生。有关详细信息,请参见 Amazon SageMaker 定价、AWS Lambda 定价 和 AWS CloudFormation 定价。

清理资源

为避免持续产生费用,在 Part 1b 和 Part 1c notebook 中,实施将在 notebook 完成后自动清理资源。您可以查看 notebook 指令中的 清理资源 部分,以了解如何避免自动清理并实验不同的提示。

闪连加速器破解版

清理的顺序如下:

禁用操作组。删除操作组。删除别名。删除代理。删除 Lambda 函数。清空 S3 存储桶。删除 S3 存储桶。删除 IAM 角色和策略。

您可以通过 Amazon Bedrock 控制台或 API 删除 guardrails。除非这些 guardrails 通过代理调用,否则您不会产生费用。有关详细信息,请参见 删除 guardrail。

结论

在本文中,我们演示了 Amazon Bedrock Guardrails 如何提升代理框架的鲁棒性。我们能够阻止聊天机器人对不相关查询的响应,同时保护客户的个人信息,从而最终提高了基于 Amazon Bedrock Agents 的实现鲁棒性。

一般而言,Amazon Bedrock Agents 的预处理阶段可以拦截和拒绝对抗性输入,但 guardrails 有助于防止可能非常具体于主题或用例的提示如 PII 和 HIPAA 规则,而无须对 LLM 进行微调。

要了解有关使用 Amazon Bedrock 创建模型的更多信息,请查看 定制您的模型以提升其性能。要了解有关使用代理来编排工作流的更多信息,请访问 使用对话式代理自动化任务。有关使用 guardrails 保护生成 AI 应用程序的详细信息,请参阅 使用 Amazon Bedrock Guardrails 阻止有害内容。

鸣谢

感谢所有审稿人提供的宝贵反馈。

提高 LLM 应用程序的鲁棒性,使用 Amazon Bedrock Guardrails 和 Ama

作者介绍

Shayan Ray 是亚马逊网络服务的应用科学家。他的研究领域包括自然语言相关的所有内容如 NLP、NLU 和 NLG。他的工作专注于对话式 AI、面向任务的对话系统和基于 LLM 的代理。他的研究发表涉及自然语言处理、个性化和强化学习。

标签 AI/ML [AWS Lambda](https//