aws-genai-llm-chatbot
AWS CDK 一键部署的企业级多 LLM 多 RAG 聊天机器人,支持 Bedrock/Llama
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
AWS CDK 一键部署的企业级多 LLM 多 RAG 聊天机器人,支持 Bedrock/Llama
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
张明是某制造业上市公司的 CTO,2024 年初公司决定在内部系统引入 AI 助手。一番调研后他犯了难:自研 RAG 系统需要招聘向量数据库工程师;LangChain 文档读了三遍依然不知道生产环境怎么配;开源聊天机器人 Demo 跑得欢,上生产后对话质量断崖式下跌。更头疼的是,公司的合同文档存在 S3,技术文档在 Confluence,产品规格在 ERP 系统——数据孤岛让 RAG 成了无米之炊。
AWS 官方仓库 aws-genai-llm-chatbot 正是为解决这类困境而生。它不是又一个 LangChain Demo,而是一套经过生产验证的完整参考架构——一条命令拉起从身份认证到前端界面、从多 RAG 引擎到多 LLM 调度的全套 AWS 基础设施。这正是它区别于其他开源聊天机器人项目的核心价值:开箱即生产。
大语言模型在通用对话场景表现出色,但一旦接入企业真实数据环境,就会面临三个根本性挑战。
第一,数据源碎片化。 企业数据往往分散在多个系统:结构化数据在 Aurora/PostgreSQL,半结构化文档在 S3,搜索日志在 OpenSearch,技术文档可能在 AWS Kendra。这种多源异构数据的统一检索,是单个向量数据库无法解决的问题。
第二,LLM 选择困难症。 Claude 3.5 Sonnet 强在代码理解,GPT-4o 强在多模态,Llama 3 成本最低适合内部场景——没有一个模型能在所有场景最优。企业需要的是灵活切换而非被迫押注。
第三,安全合规门槛。 对话日志留痕、敏感信息过滤、基于角色的访问控制(RBAC)……这些在开源 Demo 里几乎不存在,却是企业 IT 审计的必答题。
aws-genai-llm-chatbot 从设计之初就针对这三个挑战构建,这也是它被标记为 MIT-0 许可(可免费商用)的底气所在——AWS 希望用它推广 Bedrock 和自家 AI 服务生态,而非作为一道技术门槛。
项目的技术架构采用 CDK(Cloud Development Kit)声明式基础设施代码,通过 TypeScript 定义所有 AWS 资源。核心栈文件 lib/aws-genai-llm-chatbot-stack.ts(约 30KB)是整个系统的架构蓝图,其结构按功能模块清晰分层:
代码定义了 ModelInterface 枚举,支持两种核心接入方式:
LangChain 接口:通过 LangChain 库与 SageMaker 端点或 Bedrock 模型通信。LangChainInterface 构建包含 Lambda 函数(接收 WebSocket 消息)、SQS 队列(异步任务分发)、DynamoDB 会话表(对话历史持久化)的完整事件链路。MultiModal 接口:支持多模态模型(如 Idefics),通过 IdeficsInterface 构建专门的多模态推理管道。这种接口抽象的设计极为巧妙——切换底层模型只需修改配置,无需改动代码。新增一个模型只需实现对应接口,事件路由会自动将请求分发到正确的处理函数。
项目支持四种 RAG 引擎,开发者可根据数据源特性自由选择:
这种多引擎架构在代码层面通过 RagEngines 父类 + 各子类插件实现(lib/rag-engines/ 目录),体现了策略模式的设计思路。
Web UI 位于 lib/user-interface/react-app/,使用 React 18 + Vite 构建。关键依赖包括 AWS Amplify(身份认证和 API 调用)、Tailwind CSS(样式)。前端通过 WebSocket 与后端 Lambda 建立实时对话连接,支持流式输出(Streaming Response)。
前端还区分了 public-website.ts(公开访问)和 private-website.ts(Cognito 认证保护)两种部署模式,满足企业内部工具和公开 API 产品的不同需求。
系统使用 Amazon SNS + SQS 实现消息分发:WebSocket 消息经 API Gateway -> SNS Topic -> SQS 队列 -> Lambda 处理器。这套模式的优势在于:发送方和接收方完全解耦,不同接口(LangChain/Bedrock Agents/Idefics)可以各自消费同一 Topic,无需修改上游代码。这正是企业级系统避免接口腐化的关键架构决策。
认证模块 lib/authentication/ 基于 Amazon Cognito,支持用户名密码登录、MFA 多因素认证、Cognito Federation(可对接企业 IdP)。结合 IAM 角色和 DynamoDB 行级权限,实现用户级别的数据隔离。
从 pyproject.toml 可以完整看到项目的 Python 依赖图谱:
langchain-aws、langchain-community、langchain-openai 分别对接 Bedrock、社区工具和 OpenAI。opensearch-py(OpenSearch)、psycopg2-binary + pgvector(Aurora PostgreSQL)。pdfplumber(PDF 解析)、beautifulsoup4(HTML 解析)、feedparser(RSS 源接入),覆盖企业常见文档格式。boto3、aws-lambda-powertools(Lambda 开发最佳实践)、aws_xray_sdk(分布式追踪)。TypeScript 端(CDK 层)的依赖通过 package.json 管理,核心是 aws-cdk-lib 2.206.0 和 constructs。
部署分三步走:
第一步,环境准备。 需要 AWS Account + IAM 具备 CDK 部署权限(通常需要 AdministratorAccess 或至少 PowerUserAccess),本地安装 Node.js >= 18、Python >= 3.9、AWS CDK CLI。
第二步,配置自定义参数。 编辑 bin/default-config.json 或运行 npm run create 交互式创建配置。最关键的两个开关是:bedrock.enabled: true(启用 Bedrock)和 rag.enabled: true(启用 RAG)。LLM 和 embedding 模型配置也在此文件。
第三步,一键部署。
cdk bootstrap # 首次使用 CDK,初始化云端资源
cdk deploy # 自动化部署全套架构(预计 30-60 分钟)
CDK 会依次创建 VPC、Lambda 函数、DynamoDB 表、API Gateway、S3 Bucket、CloudFront 分布等约 50+ AWS 资源,所有资源通过 CloudFormation 统一管理,rollback 机制保证部署失败自动回滚。
项目优点明确,但部署门槛也不低。主要挑战集中在以下几点:
成本不可忽视。 一个完整部署(含 Bedrock 访问权限、OpenSearch Serverless、Aurora PostgreSQL、CloudFront)的基础月费用保守估计在 $500-2000/月,取决于 RAG 查询量和模型调用频率。SageMaker 端点模式更贵,需预置 ml.g5 系列 GPU 实例。
CDK 版本强耦合。 当前锁定 aws-cdk-lib 2.206.0,升级 CDK 版本需要同步升级所有依赖,操作不当容易触发 Cloud assembly schema version mismatch 错误。企业长期维护需要专门有人负责 CDK 版本管理。
LangChain 本身的风险。 项目重度依赖 LangChain 0.3.x,而 LangChain 历史上曾多次发生破坏性变更。虽然当前 LTS 版本相对稳定,但企业接入前应评估 LangChain 变更日志跟踪机制。
冷启动延迟。 Lambda + SQS 的事件驱动架构适合高并发场景,但首次冷启动 P95 延迟可达 5-10 秒。生产环境需要预置并发或开启 Lambda Provisioned Concurrency,这又是一笔额外费用。
aws-genai-llm-chatbot 在 GitHub 获得 1401 颗星(数据截至 2026 年中),在 AWS Samples 官方仓库中属于明星项目。与同类方案相比,它的差异化在于:
对于需要快速验证企业 AI 助手可行性的团队,这个项目是一个高质量起点。但它本质上是一套参考架构而非托管服务——生产落地仍需要 DevOps 团队深度参与。
项目最新更新持续跟进 AWS 新模型发布(如 Claude 4、Llama 4),维护活跃度较高。这在 AWS 官方 Sample 项目中并不常见,侧面说明其背后的业务价值——它是 AWS Bedrock 推广策略的重要组成部分。