기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
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 서비스 및 기능을 사용하여 채팅 기반 어시스턴트를 구축하는 방법을 보여줍니다.
사전 조건 및 제한 사항
사전 조건
제한 사항
이 솔루션은 단일 AWS 계정에 배포됩니다.
이 솔루션은 Amazon Bedrock과 Amazon OpenSearch 서버리스가 지원되는 AWS 지역에만 배포할 수 있습니다. 자세한 내용은 Amazon Bedrock 및 Amazon 서버리스 설명서를 참조하십시오. OpenSearch
제품 버전
라마 인덱스 버전 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)
대상 아키텍처·
![Amazon Bedrock 지식 베이스 및 에이전트를 사용한 아키텍처 다이어그램](images/pattern-img/15372718-3a5d-4918-9cfa-422c455f288d/images/ff19152e-0bb6-4758-a6dd-4f6140e55113.png)
다이어그램은 여러 AWS 서비스를 사용하는 단일 AWS 지역 내에서 포괄적인 AWS 클라우드 네이티브 설정을 보여줍니다. 채팅 기반 어시스턴트의 기본 인터페이스는 Amazon ECS 클러스터에서 호스팅되는 StreamlitInvocation
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
필드에서 솔루션을 적절하게 사용자 지정할 수 있습니다. 사용자 지정에 대한 자세한 내용은 추가 정보 섹션을 참조하십시오.
모범 사례
여기에 제공된 코드 예제는 proof-of-concept (PoC) 또는 파일럿 용도로만 사용됩니다. 코드를 프로덕션에 적용하려면 다음 모범 사례를 사용하십시오.
Amazon S3 액세스 로깅 활성화
VPC 흐름 로그 활성화
Lambda 함수에 대한 모니터링 및 알림을 설정합니다. 자세한 내용은 Lambda 함수 모니터링 및 문제 해결을 참조하십시오. 모범 사례는 AWS Lambda 함수 사용에 대한 모범 사례를 참조하십시오.
에픽
작업 | 설명 | 필요한 기술 |
---|---|---|
계정 및 지역의 내보내기 변수. | 환경 변수를 사용하여 AWS CDK에 대한 AWS 자격 증명을 제공하려면 다음 명령을 실행합니다.
| AWS DevOps, DevOps 엔지니어 |
AWS CLI 명명된 프로파일을 설정합니다. | 계정에 대해 AWS CLI 명명된 프로필을 설정하려면 구성 및 자격 증명 파일 설정의 지침을 따르십시오. | AWS DevOps, DevOps 엔지니어 |
작업 | 설명 | 필요한 기술 |
---|---|---|
리포지토리를 로컬 워크스테이션에 복제합니다. | 리포지토리를 복제하려면 터미널에서 다음 명령을 실행합니다.
| DevOps 엔지니어, AWS DevOps |
Python 가상 환경을 설정합니다. | 다음 명령을 실행하여 Python 가상 환경을 설정합니다.
필요한 종속성을 설정하려면 다음 명령을 실행합니다.
| DevOps 엔지니어, AWS DevOps |
AWS CDK 환경을 설정합니다. | 코드를 AWS CloudFormation 템플릿으로 변환하려면 명령을 실행합니다 | AWS DevOps, DevOps 엔지니어 |
작업 | 설명 | 필요한 기술 |
---|---|---|
계정에 리소스를 배포하십시오. | AWS CDK를 사용하여 AWS 계정에 리소스를 배포하려면 다음을 수행하십시오.
배포에 성공하면 콘솔의 출력 탭에 제공된 URL을 사용하여 채팅 기반 어시스턴트 애플리케이션에 액세스할 수 있습니다. CloudFormation | DevOps 엔지니어, AWS DevOps |
작업 | 설명 | 필요한 기술 |
---|---|---|
AWS 리소스를 제거합니다. | 솔루션을 테스트한 후, 리소스를 정리하려면 명령을 실행합니다 | AWS DevOps, DevOps 엔지니어 |
관련 리소스
AWS 설명서
아마존 베드락 리소스:
AWS CDK 리소스:
기타 AWS 리소스
기타 리소스
추가 정보
자체 데이터로 채팅 기반 어시스턴트를 사용자 지정하세요.
솔루션 배포를 위해 사용자 지정 데이터를 통합하려면 다음과 같은 구조화된 지침을 따르세요. 이러한 단계는 원활하고 효율적인 통합 프로세스를 보장하도록 설계되었으며, 이를 통해 맞춤형 데이터를 사용하여 솔루션을 효과적으로 배포할 수 있습니다.
지식창고 데이터 통합용
데이터 준비
assets/knowledgebase_data_source/
디렉토리를 찾으세요.데이터세트를 이 폴더에 넣으세요.
구성 조정
cdk.json
파일을 엽니다.context/configure/paths/knowledgebase_file_name
필드로 이동한 다음 그에 따라 업데이트하십시오.bedrock_instructions/knowledgebase_instruction
필드로 이동한 다음 새 데이터셋의 뉘앙스와 컨텍스트를 정확하게 반영하도록 업데이트하세요.
구조적 데이터 통합용
데이터 구성
디렉터리 내에 하위
assets/data_query_data_source/
디렉터리 (예tabular_data
:) 를 생성합니다.구조화된 데이터세트 (CSV, JSON, ORC, Parquet 등 허용되는 형식) 를 새로 만든 이 하위 폴더에 넣으세요.
기존 데이터베이스에 연결하는 경우 함수를 업데이트하여 데이터베이스에 연결하세요
create_sql_engine()
.code/lambda/action-lambda/build_query_engine.py
구성 및 코드 업데이트
cdk.json
파일에서context/configure/paths/athena_table_data_prefix
필드를 업데이트하여 새 데이터 경로에 맞춥니다.데이터셋에 맞는 새로운 Text to SQL 예제를
code/lambda/action-lambda/dynamic_examples.csv
통합하여 수정하세요.구조화된 데이터세트의 속성을
code/lambda/action-lambda/prompt_templates.py
반영하도록 수정하세요.cdk.json
파일에서context/configure/bedrock_instructions/action_group_description
필드를 업데이트하여Action group
Lambda 함수의 목적과 기능을 설명하십시오.assets/agent_api_schema/artifacts_schema.json
파일에서Action group
Lambda 함수의 새로운 기능을 설명하십시오.
일반 업데이트
cdk.json
파일의 context/configure/bedrock_instructions/agent_instruction
섹션에는 새로 통합된 데이터를 고려하여 Amazon Bedrock 에이전트의 의도된 기능 및 설계 목적에 대한 포괄적인 설명을 제공합니다.