模型 / 数据集
aws-samples/bedrock-chat avatar
aws-samples/bedrock-chat

bedrock-chat:把 Amazon Bedrock 封装成一套可部署的多租户聊天平台

AWS-native chatbot using Bedrock

1,324 个 Star535 个 ForkTypeScriptMIT-0
GitHub

秒懂

它是什么?
这是 AWS 官方样例仓库,用 CDK 把 Bedrock、Cognito、DynamoDB、OpenSearch Serverless 组装成一个带 RAG、Bot 商店和 Agent 的聊天系统。它解决的是从零搭建的工程量,代价是把你锁进 AWS 的一整套服务里。
适合谁用?
如果你已经在 AWS 上运行、需要给内部用户一个带权限控制和知识库的聊天入口,并且接受 OpenSearch Serverless 的固定成本,bedrock-chat 能省掉大量胶水代码,值得部署一套试跑。如果你只是想在自己的应用里调用一次 Bedrock 模型,或者团队不在 AWS 上,这个仓库的体量完全是负担,直接调 Bedrock API 更合适。
能商用吗?
可以。MIT-0 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库在最近一天内有新的提交。
用什么语言写的?
主要是 TypeScript(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

它补的是从模型到产品之间那一段空白

调用 Bedrock 的 Converse API 只需要几十行代码。难的是后面那些事:谁能用、每个用户能建几个 Bot、Bot 之间怎么共享、上传的文档怎么向量化、对话历史存哪里、前端怎么流式接收 token。bedrock-chat 把这些一起打包了。README 描述它是一个多语言生成式 AI 平台,支持聊天、带知识的自定义 Bot(RAG)、通过 Bot 商店共享 Bot,以及用 Agent 做任务自动化。目标读者是需要在组织内部署一套受管控的 AI 入口的团队,而不是想学 Bedrock 调用的个人开发者。仓库标签里同时出现 react、fastapi、lambda、docker、websockets,说明它是一个完整的前后端系统,不是一个库。这一点决定了评估方式:你不可能把它 import 进现有项目,只能整体部署或者只借鉴其中某一部分。

CDK 是骨架,Cognito 是权限的落点

部署入口是 CDK。README 给出的路径是克隆仓库后执行 chmod +x bin.sh 和 ./bin.sh,脚本会询问是新用户还是沿用 v3,并允许通过可选参数指定部署版本或安全策略。CloudFormation 栈名是 BedrockChatStack,其 Outputs 里能查到 AuthUserPoolIdxxxx 这类值,也就是 Cognito 用户池的 ID。权限模型不是自建的用户表,而是直接挂在 Cognito 上:README 明确说明,出于治理原因,只有被允许的用户才能创建自定义 Bot,条件是用户属于名为 CreatingBotAllowed 的组,该组可以在管理控制台或通过 aws cli 在 Cognito 用户池里配置。这个设计的好处是复用 AWS 原生的身份体系,坏处是权限变更必须走 Cognito,代码里没有第二套开关。如果你所在的组织已经有自己的 SSO 和权限系统,就得先想清楚怎么和 Cognito 对接,README 没有展开这部分。

多租户知识库是冲着配额去的

这是整个仓库里设计意图最明确的一处。README 指出,Amazon Bedrock Knowledge Bases 在单个 AWS 账户下默认最多创建 100 个,这个数字对多用户场景很快就不够用。解决方案是 shared 模式:多个 Bot 共用一个使用通用设置的知识库,每个 Bot 上传的文件通过附带 Bot ID 作为元数据来隔离。新建的 Bot 默认启用多租户模式,已有 Bot 需要把知识设置改成「在共享知识库中创建租户」。批量迁移的做法 README 也给了,用 aws dynamodb execute-statement 把 BotTableNameV3 里对应记录的 BedrockKnowledgeBase.type 改成 shared,同时把 SyncStatus 置为 QUEUED,再通过 aws stepfunctions start-execution 触发 EmbeddingStateMachineArn 重新同步。这里能看出数据模型:Bot 定义存在 DynamoDB 里,向量化是异步的 Step Functions 流程。元数据过滤能不能做到严格隔离,取决于 OpenSearch 侧的过滤实现,README 只描述了机制,没有给出隔离强度的保证,这一点在合规敏感的场景里需要自己去验证。

区域和模型访问是部署前绕不开的前置条件

README 把前置条件写得很直白:如果要用 Bot 和创建知识库(默认走 OpenSearch Serverless),必须部署在同时提供 OpenSearch Serverless 和 Ingestion API 的区域。截至 2025 年 8 月,README 列出的支持区域包括 us-east-1、us-east-2、us-west-1、us-west-2、ap-south-1、ap-northeast-1、ap-northeast-2、ap-southeast-1、ap-southeast-2、ca-central-1、eu-central-1、eu-west-1、eu-west-2、eu-south-2、eu-north-1、sa-east-1。另外 bedrock-region 参数需要单独选择一个 Bedrock 可用的区域,也就是说这两个区域可以不一致。部署前还要在 Bedrock 控制台的 Model access 里勾选并保存要用的模型,这一步不做,后面的调用会失败。这些限制不是设计缺陷,是 AWS 服务可用性的现实,但如果不提前核对,部署脚本跑到一半失败会很难排查。

V3 的迁移是硬门槛,不是可选项

README 顶部用了一个警告框,措辞相当不客气:V3 已发布,升级前请仔细阅读 docs/migration/V2_TO_V3.md,如果不加处理,V2 的 Bot 会变得不可用。这句话的信息量比它看起来大。默认分支是 v3,最近的发布节奏是 v3.17.0(2026 年 6 月)、v3.16.0(2026 年 4 月)、v3.15.6(2026 年 4 月),版本号推进得比较频繁,说明项目仍在活跃维护,但也意味着跨大版本升级时有真实的数据结构变更。对于已经用 V2 跑了一段时间、积累了大量 Bot 和知识库的团队,升级不是 git pull 加重新部署那么简单,需要按迁移文档处理存量数据。反过来,全新部署的用户不受这条影响,直接落在 v3 上即可。

和直接调 Bedrock API 相比,差别在控制面和数据面

最现实的替代方案不是另一个聊天框架,而是自己写一层薄封装直接调用 Bedrock。两者的差别不在模型能力上,模型是同一个。差别在于 bedrock-chat 已经替你实现了控制面:用户身份、Bot 的增删改查、Bot 商店的共享逻辑、API 发布(docs/PUBLISH_API.md 描述了把定制 Bot 发布成独立 API)、管理员的 API 管理和用量分析(docs/ADMINISTRATOR.md)。如果你要的东西只有对话本身,自建一层几十行的服务更轻,也不用背上 OpenSearch Serverless 和 Cognito 的固定成本。如果你要的是「给全公司开一个受管控的 AI 入口」,那自建控制面的工作量会远超你的预期,这时候用现成的更划算。判断标准很简单:数一数你需要 README 里列出的功能有几项,超过三项就别自己造了。

MIT-0 的授权范围和它不承诺的东西

仓库采用 MIT-0,这是 MIT 的变体,去掉了署名要求,允许自由使用、修改和再分发,也不需要保留版权声明。对企业内部部署来说,这个授权几乎没有摩擦。但要注意两点,这里只做事实陈述,不构成法律意见。第一,MIT-0 覆盖的是这个仓库的代码,不覆盖它调用的 AWS 服务,Bedrock、OpenSearch Serverless、Cognito 都按各自的计费方式收费,部署一套完整栈的持续成本主要来自这些服务,而不是代码本身。第二,仓库名为 aws-samples,README 也没有承诺生产级 SLA 或长期支持策略,它是官方样例而非受支持的产品。升级成本方面,从最近的发布节奏看,版本更新比较频繁,跟进意味着要定期重新部署 CDK 栈,并且在大版本之间预留迁移窗口。

文档没有回答的那几个问题

README 覆盖了部署、多租户知识库、管理功能和 Agent,但有几处明显留白。多租户模式下的隔离强度只描述了「用 Bot ID 作为元数据过滤」,没有说明过滤失败时的行为,也没有给出跨租户泄漏的测试方法。Cognito 之外的权限体系如何对接,没有提及。OpenSearch Serverless 的容量和成本随用户规模如何变化,README 没有给任何数字。这些不是指责,样例仓库本来就不会写成运维手册,但它们决定了你能否把它直接推到生产。可行的做法是先按 README 的 CloudShell 流程在测试账号部署一套,用 CreatingBotAllowed 组建两个 Bot、各传一份文档,然后确认其中一个 Bot 检索不到另一个的文件。这一步能验证的东西,比读十遍 README 都多。

编辑结论

如果你已经在 AWS 上运行、需要给内部用户一个带权限控制和知识库的聊天入口,并且接受 OpenSearch Serverless 的固定成本,bedrock-chat 能省掉大量胶水代码,值得部署一套试跑。如果你只是想在自己的应用里调用一次 Bedrock 模型,或者团队不在 AWS 上,这个仓库的体量完全是负担,直接调 Bedrock API 更合适。动手之前先确认三件事:目标区域是否同时支持 OpenSearch Serverless 与 Bedrock,Cognito 用户池里是否已经建好 CreatingBotAllowed 组,以及你从 V2 升级时是否按 docs/migration/V2_TO_V3.md 处理了旧 Bot 数据,因为 README 明确写着不按迁移指南操作会导致 V2 的 Bot 无法使用。

官方来源

  1. aws-samples/bedrock-chat on GitHub
  2. Issues
  3. License: MIT-0
  4. README
  5. Releases
社区笔记

社区笔记