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 버킷에 대해 임시 쿼리 실행 가능.

시작하기(빠른 시작 단계)

  1. 대상 리전(예: us-east-1)에서 Bedrock 모델 액세스를 활성화합니다.
  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 더 빠른 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 애플리케이션을 구축하기 위한 실용적인 프로덕션급 예제입니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트