构建基于Confluence的安全Slack聊天机器人
随着生成式AI的兴起,将数据与AI服务集成变得前所未有的简单,但许多公司因信任问题而犹豫。核心关切在于AI服务是否能确保机密数据的安全。
如果你计划将AI集成到内部工具中,但又对安全风险持怀疑态度,本指南提供了全面的步骤,帮助你在自己的AWS环境中部署一个完全由你掌控和保护的、由AI驱动的聊天服务。
虽然建立此类解决方案通常需要专业知识,但本指南将引导你采用一种低代码的AWS方法,任何人无需具备先验专业知识或深入了解AWS服务即可跟随操作。
最终,你将拥有一个与Slack集成的、由Confluence知识库驱动的聊天服务,所有数据和组件都安全地存放在你自己的AWS账户中。
让我们开始吧!
你需要准备:
- 一个具有管理员权限的AWS账户
- 具有管理员权限的Slack Pro账户
- 一个Confluence工作空间,必须具有空间访问权限(管理员权限可选)
配置Confluence
要设置Confluence,你需要准备以下详细信息:
- 空间名称
- Confluence邮箱
- 访问令牌
获取访问令牌的步骤:
- 访问相关网站链接。
- 点击“创建API令牌”,选择过期日期,复制新生成的密钥,并将其保存在安全的地方。
配置Bedrock
确保你在AWS Bedrock中能够访问Nova Pro和Titan Text Embeddings V2 AI模型。
准备你的知识库(核心部分!)
在开始设置聊天服务之前,先为其准备大脑——知识库。此步骤有助于AWS安全地连接到你的Confluence数据,以便你的聊天服务在需要时能够获取准确且最新的信息。
步骤:
- 在AWS Secrets Manager中存储你的Confluence凭据
* 创建一个“其他类型的密钥”,将你的Confluence邮箱作为用户名,令牌作为密码。
* 为其命名,其余保持默认设置,并记下密钥ARN。ARN格式如下:
arn:aws:secretsmanager:us-east-1:XXXXXXXXXXXX:secret:AmazonBedrock-confluence-xxxxx-yenhPh - 在Bedrock中创建你的知识库
- 前往Bedrock知识库,创建一个新的“带有向量存储的知识库”。
- 在“数据”部分,选择“Confluence — 预览”。
- 将Confluence配置为你的数据源:
- 输入你的Confluence URL。
- 使用你刚刚创建的密钥ARN作为凭据。
- 如果需要,你还可以按特定的Confluence空间进行筛选。
- 选择你的嵌入模型:
- 对于数据存储,选择“Titan Text Embeddings V2”作为你的嵌入模型。
- 查看并创建:
- 快速浏览你的设置,大部分可以保持默认,然后点击“创建”。
- 完成后,打开你的新知识库并记下其ID,以备后用。
- 前往“数据源”并点击“同步”。这需要一点时间。
你的AI知识库已准备就绪。
准备Slack
- 在Slack上访问“你的应用”(
https://api.slack.com/apps)。 - 从头开始创建一个“新应用”。
- 为你的应用起一个酷炫的名字,并选择你的工作空间。
- 创建完成后,你需要生成一个Slack OAuth令牌:
- 进入 OAuth & Permissions > Scopes。
- 在 Bot Token Scopes 下添加
chat:write和im:history。
- 在“OAuth Tokens”部分,点击“Install to <你的工作空间>”。
- 完成安装以获取你的OAuth令牌(可能以
xoxb-开头)。
注意: 我们稍后将返回Slack进行最后的集成。
网关(你的Lambda函数)
在创建Lambda函数之前,先创建一个Lambda层:
- 转到Lambda层(
https://console.aws.amazon.com/lambda/home?#/layers)。 - 创建一个层:命名为
slack_bot_layer,上传提供的.zip文件,并将兼容架构设置为arm64,运行时设置为Python 3.13。
现在,创建一个新的Lambda函数(https://console.aws.amazon.com/lambda/home?#/functions):
-
函数名称:
slack_bot -
运行时:Python 3.13
-
架构:arm64
-
执行角色:创建一个具有基本Lambda权限的新角色(稍后你将调整此角色)。
-
在“其他配置”中,将“身份验证类型”设置为“无”,并启用“配置跨源资源共享 (CORS)”。
-
创建后,将默认的Python代码替换为提供的代码并进行部署。
注意: 下面的代码及相关详细信息也可在此GitHub仓库中找到。
- 将你的
slack_bot_layer添加到Lambda函数:- 从底部的“层”部分,点击“添加层”。
- 选择“自定义层”,然后选择
slack_bot_layer。
- 更新一些配置:
- 进入“配置”选项卡,然后进入“常规配置”,将“超时”设置为30秒。
- 添加Bedrock权限:打开分配给你的Lambda函数的IAM角色(在“权限”中找到),并附加
AmazonBedrockFullAccess策略。
- 更新Lambda函数的环境变量:
- 进入“配置选项卡” > “环境变量”。
- 添加以下变量:
SLACK_BOT_TOKEN: 来自Slack设置的xoxb-令牌。KB_ID: 你的知识库ID。MODEL_ID:us.amazon.nova-pro-v1:0(适用于Nova Pro)。
- 复制Lambda函数URL(格式类似
https://gq6hvgxh*********.lambda-url.us-east-1.on.aws/)。
将Slack连接到你的机器人
- 进入你的Slack应用的“事件订阅”。
- 启用事件。
- 将“请求URL”设置为
{Lambda Function URL}/slack/events(例如,https://gq6hvgxh*********.lambda-url.us-east-1.on.aws/)。 - 订阅机器人事件:在“添加机器人用户事件”下添加
message.channels、message.groups、message.im和message.mpim。 - 保存并重新安装应用。
- 启用消息传递:
- 进入“应用主页” > “显示选项卡”。
- 确保“消息选项卡”和“允许用户发送斜杠命令”已启用。
全部设置完成! 前往Slack,找到你的新机器人,给它发条消息吧!
准备好探索和扩展
整个设置使用低代码方法来连接Confluence和Slack。虽然这涵盖了基础知识,但你始终可以增强它以获得更高的安全性、成本效益和可靠性。你可以调整系统提示。
此外,如果Lambda部署让你头疼,还有CloudFormation堆栈和CDK脚本可用,可以让AWS端的事情变得更简单!该仓库还有一个支持更多功能(如后续问题)的Python代码。
本指南应该能帮助你启动并运行,即使你不是技术专家。请记住,你可以将这些想法应用到其他数据源(如网站、SharePoint或Salesforce)以及其他聊天客户端(如MS Teams或WhatsApp)。
祝你探索愉快!