aws-samples/bedrock-chat
AWS-native chatbot using Bedrock
Bedrock Chat (BrChat) – 简介
Bedrock Chat 是一个基于 Amazon Bedrock 和其他 AWS 托管服务构建的、开箱即用的多租户聊天机器人平台。它允许您:
- 创建并运行聊天机器人,使用基础模型(Claude, Amazon Nova, Llama 3, Mistral 等)。
- 添加私有知识:通过检索增强生成 (RAG) 为机器人添加知识,既可以通过上传文档,也可以导入现有的 Bedrock Knowledge Base。
- 发布机器人:发布到 bot store,以便同一 AWS 账户下的其他用户可以发现并使用它们,或者将机器人作为独立的 API 公开。
- 运行代理 (Agents):调用外部工具或将请求分解为多个步骤。
- 控制权限:通过 Amazon Cognito 组 (
CreatingBotAllowed) 控制谁可以创建机器人。 - 分析使用情况:标记“必要”机器人以供管理员监督。
核心优势
- 全 AWS 技术栈 – 无需管理服务器;该解决方案整合了 DynamoDB, API Gateway, Lambda (FastAPI), OpenSearch Serverless, Cognito, WAF, Step Functions, EventBridge Pipes, Athena 等。
- 多租户知识库 – 单个共享的 Bedrock Knowledge Base 可服务于多个机器人,每个机器人的文档通过元数据隔离,避免了每个账户 100-KB 的限制。
- 生产级安全 – 可选的 IP 范围限制、IPv6 开关、自助注册控制、用于低延迟的 Lambda SnapStart 以及细粒度的 IAM。
- 可扩展的模型列表 – 可通过配置将下拉菜单限制为 Bedrock 模型的一个子集(Claude, Nova, Llama 3, Mistral, DeepSeek)。
- 轻松部署 – 一键式 CloudShell 脚本 (
bin.sh) 或完整的 CDK 部署;支持多种环境(dev, prod 等),并提供类型安全的parameter.ts。
核心组件(高层架构)
| 组件 | 角色 |
|---|---|
| Amazon Bedrock | 提供用于聊天和生成 RAG 嵌入的大型语言模型。 |
| Bedrock Knowledge Bases + OpenSearch Serverless | 存储文档,运行用于 RAG 的向量和全文搜索。 |
| DynamoDB | 持久化对话历史和机器人元数据。 |
| Lambda + API Gateway (FastAPI) | React 前端调用的后端 API。 |
| Cognito | 用户注册/登录和基于组的权限管理。 |
| CloudFront + S3 | 提供 React/Tailwind UI。 |
| WAF | 可选的 IP 地址允许/拒绝列表。 |
| Step Functions | 编排文档摄取和嵌入管道。 |
| EventBridge Pipes | 监听机器人删除事件并销毁相关的 CloudFormation 堆栈。 |
| Athena | 允许管理员对存储原始数据的 S3 存储桶运行即席查询。 |
入门指南(快速启动步骤)
- 启用 Bedrock 模型访问权限(在目标区域,例如 us-east-1)。
- 在该区域打开 CloudShell 并运行:
git clone https://github.com/aws-samples/bedrock-chat.git cd bedrock-chat chmod +x bin.sh ./bin.sh # 回答提示,可选择添加标志如 --disable-self-register - 约 35 分钟后,脚本将打印一个 Frontend URL (CloudFront)。打开它,注册(或由管理员创建用户),即可看到聊天 UI。
- 使用 UI 创建机器人,上传文档或导入知识库,然后开始聊天。您还可以将机器人发布到商店或作为 API 使用。
自定义选项(可选参数)
| 标志 | 功能 |
|---|---|
--disable-self-register |
关闭公共注册;仅限 Cognito 创建的用户登录。 |
--enable-lambda-snapstart |
启用 SnapStart 以实现更快的 Lambda 冷启动响应。 |
--ipv4-ranges / --ipv6-ranges |
将 UI/API 访问限制为特定的 IP CIDR 块。 |
--disable-ipv6 |
完全禁用 IPv6 流量。 |
--allowed-signup-email-domains |
限制注册到特定的电子邮件域。 |
--bedrock-region |
选择调用 Bedrock 模型的区域。 |
--globalAvailableModels |
为整个部署列出 Bedrock 模型 ID 的白名单。 |
--cdk-json-override |
直接 JSON 覆盖任何 CDK 上下文值(例如启用 RAG 副本,更改徽标)。 |
适用场景
- 企业:希望拥有内部、安全的聊天机器人平台,而无需从头构建基础设施。
- 开发人员:寻找在 AWS 上构建全栈 LLM 应用的参考实现。
- 产品团队:需要一个机器人商店,供多个团队发布和共享专业助手。
- 数据工程师:希望使用 Bedrock Knowledge Bases 试验 RAG 管道。
限制与注意事项
- 该解决方案仅适用于提供 Bedrock、OpenSearch Serverless 及其他所列服务的 AWS 区域。
- 默认情况下,任何拥有 URL 的人都可以自助注册;生产部署应使用提供的标志锁定此功能。
- 多租户知识库依赖于元数据过滤 – 请确保您的文档摄取添加了正确的 Bot-ID 标签。
- 从 V2 升级到 V3 需要遵循迁移指南;否则 V2 创建的机器人将无法使用。
了解更多
- 研讨会 – 提供分步动手实验(README 中有链接)。
- 架构图 –
docs/imgs/arch.png可视化了 AWS 服务图。 - 代理文档 –
docs/AGENT.md解释了如何启用工具调用/多步推理。 - 管理员指南 –
docs/ADMINISTRATOR.md涵盖了机器人分析、必要机器人标志和 API 管理。
总结
Bedrock Chat 是一个 AWS 原生、多租户聊天机器人平台,具有 RAG、机器人市场和可选的代理功能。通过单个脚本进行部署,然后通过简单的 CLI 标志或 CDK 上下文自定义安全性、模型访问和环境。它是构建 Amazon Bedrock 生成式 AI 应用的实用、生产级示例。
相关
- 项目
- 项目
- 项目
- 项目
- 项目