본문 바로가기

Azure AI

RAG 챗봇 빌드 실습 (2)

 

프로젝트 초기화

실습에 사용할 Python용 Azure SDK와 함께 NoSQL용 Azure Cosmos DB 사용하기 위한 라이브러리를 설치합니다. 

아직도 본론에 들어가려면 멀었나 봅니다... 

 

Azure Developer CLI(Command Line Interface)를 제대로 설치하느라 오래 걸렸습니다. 

Azure Dev CLI를 사용하는 방법이 다양한데 Azure 문서는 이해하기 어렵게 쓰여있어서 한참을 헤맸네요. 

 

저는 Visual Studio Code에서 하는 것으로 선택하고 Visual Studio Code에서 Azure Developer CLI Extension을 설치했습니다. 

View > Extensions > Azure Developer CLI검색 > Install 클릭

 

 Azure Developer CLI Extension을 설치하면 VS Code 터미널에서 Azure 명령어가 작동합니다. 

VS Code에서 터미널을 열려면 View > Terminal하면 됩니다. 

 

터미널에서 아래 명령문을 순서대로 실행시키면 됩니다.

 

1. 빈 디렉토리에서 터미널을 엽니다. 저는 새 디렉토리를 만들었어요

mkdir azure
cd azure

 

2. Azure Login

azd auth login

로그인하는 브라우저 창이 뜨면 Azure 계정으로 로그인합니다. 

 

3. 프로젝트 초기화 

azd init --template cosmos-db-nosql-python-quickstart

명령문 실행 후 환경이름을 입력해 줍니다.

 

4. Azure Cosmos DB 계정을 배포

azd up

프로비전 중에 구독과 Azure 위치, 리소스 그룹을 선택해야 합니다. 

프로비전이 완료되면 실행 중인 Web Application에 대한 URL이 출력됩니다.

URL을 클릭해 보면 배포되는 내용을 확인할 수 있어요.

 

cosmos-db-nosql-python-quickstart 템플릿으로 배포한 내용이고 리소스 그룹에 가보면 필요한 서비스 및 앱이 구성되어 있습니다. 

<cosmos-db-nosql-python-quickstart으로 구성된 내용 확인은 펼치서 보기> 

더보기

azd init --template cosmos-db-nosql-python-quickstart 명령어를 사용하여 배포된 Azure 서비스 템플릿은 특정 Python 애플리케이션을 Azure 환경에 배포하도록 구성된 예제 템플릿입니다. 이 템플릿은 Python 웹 애플리케이션을 설정하고, 필요한 Azure 리소스를 자동으로 생성하고 구성합니다. 

주요 구성 항목 및 역할

  1. Azure 리소스 그룹(Resource Group)
    • 역할: 모든 관련 Azure 리소스를 논리적으로 그룹화하여 관리합니다. 이 그룹을 통해 리소스의 생명 주기를 제어하고 일관성 있는 관리가 가능합니다.
  2. Azure App Service (웹앱):
    • 역할: Python 웹 애플리케이션을 호스팅합니다. App Service는 애플리케이션의 자동 스케일링, 로드 밸런싱, 배포 슬롯, 지속적인 배포와 같은 기능을 제공합니다.
  3. Azure Cosmos DB (NoSQL 데이터베이스):
    • 역할: 애플리케이션 데이터 저장소로 사용됩니다. Cosmos DB는 전 세계적으로 분산된 데이터베이스로, 높은 가용성과 확장성을 제공합니다. 이 예제에서는 NoSQL 구성으로 사용됩니다.
  4. Azure Storage (Blob Storage):
    • 역할: 대규모 비정형 데이터를 저장합니다. 예를 들어, 사용자 업로드 파일, 백업 데이터, 로그 파일 등을 저장하는 데 사용됩니다.
  5. Azure Key Vault:
    • 역할: 민감한 정보인 비밀 키, 암호 및 인증서를 안전하게 저장하고 관리합니다. 이를 통해 애플리케이션의 보안이 강화됩니다.
  6. Application Insights (Azure Monitor):
    • 역할: 애플리케이션의 성능과 사용성을 모니터링하고 진단합니다. 애플리케이션의 상태, 오류, 성능 등에 대한 실시간 데이터를 수집하고 분석합니다.

각 구성 항목의 구체적인 역할 상세

  1. 리소스 그룹(Resource Group):
    • 모든 관련 리소스(예: App Service, Cosmos DB, Key Vault 등)를 하나의 그룹으로 관리합니다.
    • 프로젝트의 일관된 관리를 위해 사용되며, 리소스 그룹을 삭제하면 해당 그룹에 포함된 모든 리소스가 삭제됩니다.
  2. Azure App Service(웹앱):
    • Python 웹 애플리케이션을 호스팅합니다.
    • HTTP 트래픽을 처리하며, 애플리케이션의 로드 밸런싱과 자동 확장을 지원합니다.
    • 지속적인 배포 파이프라인을 설정하여 코드 변경 시 자동으로 배포합니다.
  3. Azure Cosmos DB:
    • 고가용성 및 글로벌 배포를 지원하는 NoSQL 데이터베이스입니다.
    • 사용자 데이터, 애플리케이션 상태 정보 등을 저장하며, 빠른 읽기/쓰기 성능을 제공합니다.
    • Azure SDK 또는 데이터 API를 통해 애플리케이션과 통합됩니다.
  4. Azure Storage (Blob Storage):
    • 대규모 비정형 데이터(예: 이미 파일, 비디오 파일, 백업 데이터 등)를 저장합니다.
    • 애플리케이션에서 업로드되는 파일을 저장하고, 저장된 파일을 안전하게 관리합니다.
    • 데이터의 지속성과 가용성을 보장합니다.
  5. Azure Key Vault:
    • 애플리케이션에서 사용하는 중요한 비밀 정보(예: 데이터베이스 연결 문자열, API 키 등)를 안전하게 저장합니다.
    • Key Vault를 통해 비밀 정보 및 인증서를 관리하고, 애플리케이션에서 안전하게 접근할 수 있게 합니다.
    • 보안 관행 및 규정을 준수합니다.
  6. Application Insights (Azure Monitor):
    • 실시간으로 애플리케이션의 성능을 모니터링합니다.
    • 사용자 활동 분석, 오류 진단, 성능 지표 수집 등을 통해 애플리케이션의 상태를 파악합니다.
    • 문제 발생 시 알림 설정을 통해 신속하게 대응할 수 있도록 합니다.

종합

azd init --template cosmos-db-nosql-python-quickstart 템플릿을 기반으로 배포된 구성 요소들은 다음과 같은 주요 이점을 제공합니다:

  • 일관된 배포 파이프라인: 자동으로 리소스를 구성하고 설정하여 개발 환경과 프로덕션 환경 사이의 일관성을 유지합니다.
  • 높은 확장성: App Service와 Cosmos DB를 통해 애플리케이션과 데이터베이스가 자동으로 확장되어 높은 트래픽을 효율적으로 처리합니다.
  • 보안 강화: Key Vault를 활용하여 중요한 정보를 안전하게 관리하며, Application Insights를 통해 실시간 모니터링을 구현하여 잠재적인 문제를 신속하게 포착하고 대응할 수 있습니다.

클라이언트 라이브러리 설치

소스 디렉터리에 필요한 라이브러리를 설치합니다. 

1. ./src 디렉터리로 이동

cd ./src

 

2. 라이브러리 설치 

! pip install --user python-dotenv
! pip install --user aiohttp
! pip install --user openai
! pip install --user gradio
! pip install --user ijson
! pip install --user nest_asyncio
! pip install --user tenacity
# Note: ensure you have azure-cosmos version 4.7 or higher installed
! pip install --user azure-cosmos

 

오늘도 준비만 하다가 끝납니다. 그래도 필요한 패키지와 라이브러리는 모두 설치되었어요.

'Azure AI' 카테고리의 다른 글

RAG 챗봇 빌드 실습 (1)  (3) 2024.11.13
LangChain  (1) 2024.11.12