Amazon Bedrock 에이전트 및 지식 베이스를 사용하여 완전 자동화된 채팅 기반 도우미를 개발하십시오. - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon Bedrock 에이전트 및 지식 베이스를 사용하여 완전 자동화된 채팅 기반 도우미를 개발하십시오.

작성: 준둥 차오 (AWS), 카라 양 (AWS), 키오와 잭슨 (AWS), 노아 해밀턴 (AWS), 프라빈 쿠마르 제야라잔 (AWS), 슈아이 카오 (AWS)

코드 리포지토리: genai-bedrock-agent-chatbot

환경: PoC 또는 파일럿

기술: 기계 학습 및 AI, 서버리스

AWS 서비스: 아마존 베드락, AWS CDK, AWS Lambda

요약

많은 조직이 다양한 데이터 소스를 조정하여 포괄적인 답변을 제공할 수 있는 채팅 기반 어시스턴트를 만드는 데 어려움을 겪고 있습니다. 이 패턴은 간단한 배포를 통해 문서와 데이터베이스의 쿼리에 응답할 수 있는 채팅 기반 도우미를 개발하는 솔루션을 제공합니다.

Amazon Bedrock을 시작으로 이 완전 관리형 제너레이티브 인공 지능 (AI) 서비스는 다양한 고급 기반 모델 (FM) 을 제공합니다. 이를 통해 개인 정보 보호 및 보안에 중점을 둔 제너레이티브 AI 애플리케이션을 효율적으로 만들 수 있습니다. 문서 검색의 관점에서 볼 때 검색 증강 세대 (RAG) 는 매우 중요한 기능입니다. 지식 베이스를 사용하여 외부 소스의 상황에 맞는 관련 정보로 FM 프롬프트를 보강합니다. Amazon OpenSearch 서버리스 인덱스는 Amazon Bedrock의 지식 베이스를 뒷받침하는 벡터 데이터베이스 역할을 합니다. 이러한 통합은 부정확성을 최소화하고 응답이 사실에 입각한 문서에 반영되도록 세심하고 신속한 엔지니어링을 통해 향상되었습니다. 데이터베이스 쿼리의 경우 Amazon Bedrock의 FM은 텍스트 쿼리를 특정 파라미터를 통합하여 구조화된 SQL 쿼리로 변환합니다. 이를 통해 AWS Glue 데이터베이스에서 관리되는 데이터베이스에서 데이터를 정확하게 검색할 수 있습니다. Amazon Athena는 이러한 쿼리에 사용됩니다.

더 복잡한 쿼리를 처리하려면 문서와 데이터베이스에서 모두 가져온 정보가 있어야 포괄적인 답변을 얻을 수 있습니다. Amazon Bedrock용 에이전트는 복잡한 작업을 이해하고 오케스트레이션을 위해 이를 간단한 작업으로 분류할 수 있는 자율 에이전트를 구축하는 데 도움이 되는 생성형 AI 기능입니다. Amazon Bedrock 자율 에이전트가 지원하는 간소화된 작업에서 얻은 통찰력을 조합하면 정보 합성이 향상되어 더 철저하고 철저한 해답을 얻을 수 있습니다. 이 패턴은 Amazon Bedrock과 자동화된 솔루션 내에서 관련 제너레이티브 AI 서비스 및 기능을 사용하여 채팅 기반 어시스턴트를 구축하는 방법을 보여줍니다.

사전 조건 및 제한 사항

사전 조건

제한 사항

제품 버전

  • 라마 인덱스 버전 0.10.6 이상

  • 알케미 버전 2.0.23 이상

  • 오픈서치-PY 버전 2.4.2 이상

  • 요청_AWS4Auth 버전 1.2.3 이상

  • 파이썬용 AWS SDK (Boto3) 버전 1.34.57 이상

아키텍처

대상 기술 스택

AWS Cloud Development Kit (AWS CDK) 는 코드로 클라우드 인프라를 정의하고 AWS를 통해 프로비저닝하기 위한 오픈 소스 소프트웨어 개발 프레임워크입니다. CloudFormation 이 패턴에 사용된 AWS CDK 스택은 다음 AWS 리소스를 배포합니다. 

  • AWS Key Management Service (AWS KMS)

  • Amazon Simple Storage Service(S3)

  • AWS Glue 데이터베이스 구성 요소용 AWS Glue 데이터 카탈로그

  • AWS Lambda

  • AWS Identity and Access Management(IAM)

  • 아마존 OpenSearch 서버리스

  • Amazon Elastic Container Registry(Amazon ECR) 

  • Amazon Elastic Container Service(Amazon ECS)

  • AWS Fargate

  • Amazon Virtual Private Cloud(VPC)

  • Application Load Balancer

대상 아키텍처·

Amazon Bedrock 지식 베이스 및 에이전트를 사용한 아키텍처 다이어그램

다이어그램은 여러 AWS 서비스를 사용하는 단일 AWS 지역 내에서 포괄적인 AWS 클라우드 네이티브 설정을 보여줍니다. 채팅 기반 어시스턴트의 기본 인터페이스는 Amazon ECS 클러스터에서 호스팅되는 Streamlit 애플리케이션입니다. Application Load Balancer는 접근성을 관리합니다. 이 인터페이스를 통해 이루어진 쿼리는 Invocation Lambda 함수를 활성화하고, 이 함수는 Amazon Bedrock용 에이전트와 인터페이스합니다. 이 에이전트는 Amazon Bedrock의 지식 베이스를 참조하거나 Lambda 함수를 호출하여 사용자 문의에 응답합니다. Agent executor 이 함수는 사전 정의된 API 스키마에 따라 에이전트와 관련된 일련의 작업을 트리거합니다. Amazon Bedrock의 지식 기반은 OpenSearch 서버리스 인덱스를 벡터 데이터베이스 기반으로 사용합니다. 또한 이 Agent executor 함수는 Amazon Athena를 통해 AWS Glue 데이터베이스에 대해 실행되는 SQL 쿼리를 생성합니다.

도구

서비스

  • Amazon Athena는 표준 SQL을 사용하여 Amazon Simple Storage Service(S3)에 있는 데이터를 직접 간편하게 분석할 수 있는 대화형 쿼리 서비스입니다.

  • Amazon Bedrock은 선도적인 AI 스타트업과 Amazon의 고성능 기초 모델 (FM) 을 통합 API를 통해 사용할 수 있게 해주는 완전관리형 서비스입니다.

  • AWS Cloud Development Kit(AWS CDK)는 AWS 클라우드 인프라를 코드로 정의하고 프로비저닝하는 데 도움이 되는 소프트웨어 개발 프레임워크입니다.

  • AWS 명령줄 인터페이스 (AWS CLI) 는 명령줄 셸의 명령을 통해 AWS 서비스와 상호 작용하는 데 도움이 되는 오픈 소스 도구입니다.

  • Amazon Elastic Container Service(Amazon ECS)는 클러스터에서 컨테이너를 실행, 중지 및 관리하는 데 도움이 되는 빠르고 확장 가능한 컨테이너 관리 서비스입니다.

  • Elastic Load Balancing(ELB)은 들어오는 애플리케이션 또는 네트워크 트래픽을 여러 대상에 분산합니다. 예를 들어 하나 이상의 가용 영역에 있는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스, 컨테이너, IP 주소 전반에 걸쳐 트래픽을 분산할 수 있습니다.

  • AWS Glue는 완전 관리형 추출, 전환, 적재(ETL) 서비스입니다. 이를 통해 데이터 스토어와 데이터 스트림 간에 데이터를 안정적으로 분류, 정리, 보강하고 이동할 수 있습니다. 이 패턴은 AWS Glue 크롤러와 AWS Glue 데이터 카탈로그 테이블을 사용합니다.

  • AWS Lambda는 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행할 수 있도록 도와주는 컴퓨팅 서비스입니다. 필요할 때만 코드를 실행하며 자동으로 확장이 가능하므로 사용한 컴퓨팅 시간만큼만 비용을 지불합니다.

  • 아마존 OpenSearch 서버리스는 아마존 서비스를 위한 온디맨드 서버리스 구성입니다. OpenSearch 이 패턴에서 OpenSearch 서버리스 인덱스는 Amazon Bedrock의 지식 베이스를 위한 벡터 데이터베이스 역할을 합니다.

  • Amazon Simple Storage Service(S3)는 원하는 양의 데이터를 저장, 보호 및 검색하는 데 도움이 되는 클라우드 기반 객체 스토리지 서비스입니다.

기타 도구

  • Streamlit은 데이터 애플리케이션을 만들기 위한 오픈 소스 Python 프레임워크입니다.

코드 리포지토리

이 패턴의 코드는 GitHub genai-bedrock-agent-chatbot리포지토리에서 사용할 수 있습니다. 코드 리포지토리에는 다음 파일과 폴더가 포함되어 있습니다.

  • assets폴더 - 정적 자산 (예: 아키텍처 다이어그램, 공개 데이터셋).

  • code/lambdas/action-lambda폴더 — Amazon Bedrock 에이전트의 작업 역할을 하는 Lambda 함수의 Python 코드입니다.

  • code/lambdas/create-index-lambda폴더 — 서버리스 인덱스를 생성하는 OpenSearch Lambda 함수의 Python 코드입니다.

  • code/lambdas/invoke-lambda폴더 — Amazon Bedrock 에이전트를 호출하는 Lambda 함수의 Python 코드로, Streamlit 애플리케이션에서 직접 호출됩니다.

  • code/lambdas/update-lambda폴더 — AWS CDK를 통해 AWS 리소스를 배포한 후 리소스를 업데이트하거나 삭제하는 Lambda 함수의 Python 코드입니다.

  • code/layers/boto3_layer폴더 — 모든 Lambda 함수에서 공유되는 Boto3 계층을 생성하는 AWS CDK 스택입니다.

  • code/layers/opensearch_layer폴더 — 모든 종속성을 설치하여 OpenSearch 인덱스를 생성하는 서버리스 계층을 생성하는 AWS CDK 스택입니다.

  • code/streamlit-app폴더 — Amazon ECS에서 컨테이너 이미지로 실행되는 Python 코드

  • code/code_stack.py— AWS CDK는 AWS 리소스를 생성하는 Python 파일을 구성합니다.

  • app.py— 대상 AWS 계정에 AWS 리소스를 배포하는 AWS CDK 스택 Python 파일.

  • requirements.txt— AWS CDK에 설치해야 하는 모든 Python 종속성 목록입니다.

  • cdk.json— 리소스를 생성하는 데 필요한 값을 제공하는 입력 파일입니다. 또한 context/config 필드에서 솔루션을 적절하게 사용자 지정할 수 있습니다. 사용자 지정에 대한 자세한 내용은 추가 정보 섹션을 참조하십시오.

모범 사례

에픽

작업설명필요한 기술

계정 및 지역의 내보내기 변수.

환경 변수를 사용하여 AWS CDK에 대한 AWS 자격 증명을 제공하려면 다음 명령을 실행합니다.

export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number> export CDK_DEFAULT_REGION=<Region>
AWS DevOps, DevOps 엔지니어

AWS CLI 명명된 프로파일을 설정합니다.

계정에 대해 AWS CLI 명명된 프로필을 설정하려면 구성 및 자격 증명 파일 설정의 지침을 따르십시오.

AWS DevOps, DevOps 엔지니어
작업설명필요한 기술

리포지토리를 로컬 워크스테이션에 복제합니다.

리포지토리를 복제하려면 터미널에서 다음 명령을 실행합니다.

git clone https://github.com/awslabs/genai-bedrock-agent-chatbot.git
DevOps 엔지니어, AWS DevOps

Python 가상 환경을 설정합니다.

다음 명령을 실행하여 Python 가상 환경을 설정합니다.

cd genai-bedrock-agent-chatbot python3 -m venv .venv source .venv/bin/activate

필요한 종속성을 설정하려면 다음 명령을 실행합니다.

pip3 install -r requirements.txt
DevOps 엔지니어, AWS DevOps

AWS CDK 환경을 설정합니다.

코드를 AWS CloudFormation 템플릿으로 변환하려면 명령을 실행합니다cdk synth.

AWS DevOps, DevOps 엔지니어
작업설명필요한 기술

계정에 리소스를 배포하십시오.

AWS CDK를 사용하여 AWS 계정에 리소스를 배포하려면 다음을 수행하십시오.

  1. 복제된 리포지토리의 루트에 있는 cdk.json 파일에서 로깅 파라미터에 대한 입력을 제공합니다. 예제 값은INFO, DEBUGWARN, 및 ERROR 입니다.

    이러한 값은 Lambda 함수 및 Streamlit 애플리케이션에 대한 로그 수준 메시지를 정의합니다.

  2. 복제된 리포지토리의 루트에 있는 cdk.json 파일에는 배포에 사용된 AWS CloudFormation 스택 이름이 들어 있습니다. 기본 스택 이름은 입니다. chatbot-stack 기본 Amazon Bedrock 에이전트 이름은 이고 기본 Amazon Bedrock 에이전트 별칭은 입니다ChatbotBedrockAgent. Chatbot_Agent

  3. 리소스를 배포하려면 cdk deploy 명령을 실행합니다.

    cdk deploy 명령은 레이어 3 구조를 사용하여 문서 및 CSV 데이터세트 파일을 S3 버킷으로 복사하기 위한 여러 Lambda 함수를 생성합니다. 또한 Amazon 베드락 에이전트, 지식 베이스 및 Amazon 베드락 에이전트를 위한 Action group Lambda 함수를 배포합니다.

  4. AWS 관리 콘솔에 로그인한 다음 https://console.aws.amazon.com/cloudformation/ 에서 CloudFormation 콘솔을 엽니다.

  5. 스택이 성공적으로 배포되었는지 확인합니다. 지침은 AWS CloudFormation 콘솔에서의 스택 검토를 참조하십시오.

배포에 성공하면 콘솔의 출력 탭에 제공된 URL을 사용하여 채팅 기반 어시스턴트 애플리케이션에 액세스할 수 있습니다. CloudFormation

DevOps 엔지니어, AWS DevOps
작업설명필요한 기술

AWS 리소스를 제거합니다.

솔루션을 테스트한 후, 리소스를 정리하려면 명령을 실행합니다cdk destroy.

AWS DevOps, DevOps 엔지니어

관련 리소스

AWS 설명서

기타 AWS 리소스

기타 리소스

추가 정보

자체 데이터로 채팅 기반 어시스턴트를 사용자 지정하세요.

솔루션 배포를 위해 사용자 지정 데이터를 통합하려면 다음과 같은 구조화된 지침을 따르세요. 이러한 단계는 원활하고 효율적인 통합 프로세스를 보장하도록 설계되었으며, 이를 통해 맞춤형 데이터를 사용하여 솔루션을 효과적으로 배포할 수 있습니다.

지식창고 데이터 통합용

데이터 준비

  1. assets/knowledgebase_data_source/디렉토리를 찾으세요.

  2. 데이터세트를 이 폴더에 넣으세요.

구성 조정

  1. cdk.json 파일을 엽니다.

  2. context/configure/paths/knowledgebase_file_name필드로 이동한 다음 그에 따라 업데이트하십시오.

  3. bedrock_instructions/knowledgebase_instruction필드로 이동한 다음 새 데이터셋의 뉘앙스와 컨텍스트를 정확하게 반영하도록 업데이트하세요.

구조적 데이터 통합용

데이터 구성

  1. 디렉터리 내에 하위 assets/data_query_data_source/ 디렉터리 (예tabular_data:) 를 생성합니다.

  2. 구조화된 데이터세트 (CSV, JSON, ORC, Parquet 등 허용되는 형식) 를 새로 만든 이 하위 폴더에 넣으세요.

  3. 기존 데이터베이스에 연결하는 경우 함수를 업데이트하여 데이터베이스에 연결하세요create_sql_engine(). code/lambda/action-lambda/build_query_engine.py

구성 및 코드 업데이트

  1. cdk.json파일에서 context/configure/paths/athena_table_data_prefix 필드를 업데이트하여 새 데이터 경로에 맞춥니다.

  2. 데이터셋에 맞는 새로운 Text to SQL 예제를 code/lambda/action-lambda/dynamic_examples.csv 통합하여 수정하세요.

  3. 구조화된 데이터세트의 속성을 code/lambda/action-lambda/prompt_templates.py 반영하도록 수정하세요.

  4. cdk.json파일에서 context/configure/bedrock_instructions/action_group_description 필드를 업데이트하여 Action group Lambda 함수의 목적과 기능을 설명하십시오.

  5. assets/agent_api_schema/artifacts_schema.json파일에서 Action group Lambda 함수의 새로운 기능을 설명하십시오.

일반 업데이트

cdk.json파일의 context/configure/bedrock_instructions/agent_instruction 섹션에는 새로 통합된 데이터를 고려하여 Amazon Bedrock 에이전트의 의도된 기능 및 설계 목적에 대한 포괄적인 설명을 제공합니다.