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 存储桶运行即席查询。

入门指南(快速启动步骤)

  1. 启用 Bedrock 模型访问权限(在目标区域,例如 us-east-1)。
  2. 在该区域打开 CloudShell 并运行:
    git clone https://github.com/aws-samples/bedrock-chat.git
    cd bedrock-chat
    chmod +x bin.sh
    ./bin.sh   # 回答提示,可选择添加标志如 --disable-self-register
    
  3. 约 35 分钟后,脚本将打印一个 Frontend URL (CloudFront)。打开它,注册(或由管理员创建用户),即可看到聊天 UI。
  4. 使用 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 应用的实用、生产级示例。

相关