为了提高客户体验、团队协作与数据整合效率,我们需要构建支持知识型生产力提升的系统。在这篇文章中,我们将向您展示如何将流行的Slack消息服务与服务集成,搭建一个可以处理非结构化数据集查询的自然语言助手。
我们将实现一个支持生成式AI的Slack助手,并集成,借以展示的综合知识,同时通过实施安全保护和责任AI策略。
是一项完全托管的服务,提供来自领先AI公司的高性能基础模型(FMs)选择,例如AI21Labs、Anthropic、Cohere、Meta、Stability AI与Amazon。
AmazonBedrock知识库提供了一个完全托管的增强检索生成(RAG)工作流程,它可以从公司数据源中提取数据,并丰富提示内容,以提供更相关和准确的自然语言查询响应。这使得在产品和服务中整合高级生成AI能力不再需要深厚的机器学习专业知识。
Amazon BedrockGuardrails使您能够实施安全措施,为生成式AI应用程序自定义安全、隐私和真实性保护,确保与负责任的AI政策一致。Guardrails可以帮助防止不当内容、禁用提示注入,并去除敏感信息以保护隐私,从而维护公司品牌和声誉。
本文的内容基础上,我们将在的基础上,添加对AmazonBedrock知识库和Amazon Bedrock Guardrails的集成,通过Bolt for Python库简化Slack消息确认和身份验证的要求。
在本文提到的GitHub仓库中,我们提供的代码使您能够自动部署Amazon Bedrock知识库、Amazon BedrockGuardrails及所需资源,从而将Amazon Bedrock知识库API集成到使用Bolt for Python库的Slack斜杠命令助手中。
在示例中,我们将AWS Well-Architected Framework的文档导入知识库。然后,我们利用与AmazonBedrock知识库API的集成提供一个能够回答用户关于AWS架构最佳实践问题的Slack助手。您可以用您的企业数据集替换例子文档,例如公司、HR、IT或安全政策,或者设备使用或维护指南。
下图展示了整体解决方案架构。

接下来,我们将详细讨论关键组件。
Slack集成通过实现,运行在请求处理器功能中。Slack BoltLibrary处理Slack应用程序的身份验证和权限管理,并内置支持异步请求处理。SlackBolt还提供了一份,供在Lambda函数中部署和运行。
Amazon Bedrock知识库为FMs提供来自您私有数据源的上下文信息,以便RAG提供更相关、准确和定制的响应。
RAG工作流程包括两个关键组件:数据摄取和文本生成。

Amazon Bedrock知识库提供了一套完全托管的RAG工作流程,通过两个主要API进行访问:
本文中的解决方案调用RetrieveAndGenerate
API以返回自然语言响应到Slack Bolt集成库。
Amazon Bedrock Guardrails提供了可自定义的额外安全措施,超出FMs提供的内置保护,提供行业中最好的安全功能。
在这个解决方案中,我们配置了Amazon Bedrock Guardrails,实施内容过滤器、敏感信息过滤器及单词过滤器。
内容过滤器帮助检测和过滤有害用户输入及模型生成的输出,涵盖六个类别:提示注入、行为不当、侮辱、仇恨、暴力及性暗示内容。在本方案中,我们使用所有六个内容过滤器类别。
敏感信息过滤器用于检测提示或模型响应中是否存在个人可识别信息(PII)数据。为了适应您的具体情况,您可以通过定义正则表达式(regex)使用自定义的敏感信息过滤器。
在本方案中,我们将敏感信息过滤器配置如下:
Email
采取 匿名化
操作Phone
采取 匿名化
操作Name
采取 匿名化
操作Credit_Debit_Card_Number
采取 屏蔽
操作单词过滤器用于屏蔽输入提示和模型响应中的单词和短语。本方案中,我们启用了AWS提供的脏话过滤器。您也可以根据用例创建自定义单词过滤器。
Slack通过简单的REST API与之接口,通过配置Lambda代理集成,进而与Amazon Bedrock知识库API交互。
该解决方案是通过以下高层步骤部署的:
要实现此解决方案,您需要以下前提条件:
本文假设读者具备以上列出的AWS服务的基本知识。对向量数据库、向量化和RAG有一定理解将是一个加分项,但并非必要。
登录到您的Slack工作区后,请完成以下步骤:
删除)
aws-war-bot
。删除)
删除)
calls:write
commands
incoming-webhook
删除)
完成以下步骤以:
US-EAST-1
AWS 区域的RAG查询模型。若您未使用 US-EAST-1
区域,所请求的模型可能会有所不同。
访问请求完成后,您将看到选定模型的状态为 访问已授予 。
在本节中,您将把本文提供的伴随代码部署到AWS账户中,这将部署一个API在API Gateway上,一个Lambda函数,以及一个带有OpenSearchServerless的Amazon Bedrock知识库作为向量数据库。
本节需要在本地集成开发环境(IDE)中安装AWS CDK和TypeScript,并且AWS账户必须已经完成引导。如果您尚未完成此操作,请参考。
bash git clone https://github.com/aws-samples/amazon-bedrock-knowledgebase- slackbot.git
amazon-bedrock-knowledgebase-slackbot
目录,在您喜欢的IDE中打开 lib/amazon-bedrock-knowledgebase-slackbot-stack.ts
文件。typescript const RAG_MODEL_ID = "anthropic.claude-3-sonnet-20240229-v1:0" const EMBEDDING_MODEL = "amazon.titan-embed-text-v2:0"
npm install
。cdk synth
以执行AWS CDK代码的基本验证。这将从AWS CDK堆栈生成CloudFormation模板,可在代码库根目录创建的 cdk.out
目录中查看。bash cdk deploy --context slackBotToken=%slackBotToken% --contextslackSigningSecret=%slackSigningSecret%
AWS CDK将根据CloudFormation模板部署堆栈。您可以在AWS CloudFormation控制台上监控部署的进度。
此外,AWS CDK还将尝试使用默认凭证文件配置,将应用程序堆栈部署到默认账户和区域。如果要更改配置文件,请添加 profile
标志。例如:
bash cdk deploy --profile [my-profile]
部署完成后,您将看到类似下面屏幕截图的输出,提供了刚刚部署的API端点的详细信息。
8
Leave a Reply