aws-samples/bedrock-chat
AWS-native chatbot using Bedrock
Bedrock Chat (BrChat) – 소개
Bedrock Chat은 Amazon Bedrock 및 기타 AWS 관리형 서비스 위에 구축된 즉시 사용 가능한 멀티 테넌트 챗봇 플랫폼입니다. 다음과 같은 기능을 제공합니다:
- 챗봇 생성 및 실행: 파운데이션 모델(Claude, Amazon Nova, Llama 3, Mistral 등)을 사용합니다.
- 개인 지식 추가: RAG(Retrieval-Augmented Generation)를 통해 봇에 지식을 추가합니다. 문서를 업로드하거나 기존 Bedrock Knowledge Base를 가져올 수 있습니다.
- 봇 게시: bot store에 게시하여 동일한 AWS 계정 내의 다른 사용자가 검색하고 사용할 수 있게 하거나, 봇을 독립형 API로 노출할 수 있습니다.
- 에이전트 실행: 외부 도구를 호출하거나 요청을 여러 단계로 나눌 수 있습니다.
- 권한 제어: Amazon Cognito 그룹(
CreatingBotAllowed)을 통해 봇 생성 권한을 제어합니다. - 사용량 분석: 관리 감독을 위해 봇을 "필수(essential)"로 표시할 수 있습니다.
주요 특징
- All-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 배포를 지원하며, 타입 안전한parameter.ts를 통해 여러 환경(dev, prod 등)을 지원합니다.
핵심 구성 요소(상위 아키텍처)
| 구성 요소 | 역할 |
|---|---|
| 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 버킷에 대해 임시 쿼리 실행 가능. |
시작하기(빠른 시작 단계)
- 대상 리전(예: us-east-1)에서 Bedrock 모델 액세스를 활성화합니다.
- 해당 리전에서 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 |
더 빠른 Lambda 콜드 스타트 응답을 위해 SnapStart 활성화. |
--ipv4-ranges / --ipv6-ranges |
UI/API 액세스를 특정 IP CIDR 블록으로 제한. |
--disable-ipv6 |
IPv6 트래픽을 완전히 비활성화. |
--allowed-signup-email-domains |
특정 이메일 도메인으로 가입 제한. |
--bedrock-region |
Bedrock 모델을 호출할 리전 선택. |
--globalAvailableModels |
전체 배포에 대해 Bedrock 모델 ID의 하위 집합을 화이트리스트화. |
--cdk-json-override |
CDK 컨텍스트 값을 직접 JSON으로 덮어쓰기(예: 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은 RAG, 봇 마켓플레이스, 선택적 에이전트 기능을 갖춘 AWS 네이티브 멀티 테넌트 챗봇 플랫폼입니다. 단일 스크립트로 배포하고, CLI 플래그나 CDK 컨텍스트를 통해 보안, 모델 액세스 및 환경을 사용자 지정할 수 있습니다. Amazon Bedrock에서 생성형 AI 애플리케이션을 구축하기 위한 실용적인 프로덕션급 예제입니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트