Skip to content

Latest commit

 

History

History
91 lines (78 loc) · 7.98 KB

README.md

File metadata and controls

91 lines (78 loc) · 7.98 KB

Azure OpenAI common foundation with Azure API Management

Azure OpenAI의 공통 시스템을 자동으로 구축하는 예제 코드입니다.

조직 전체의 거버넌스를 확립한 뒤 Azure OpenAI의 이용을 촉진시키려면 다음 요건들을 충족하는 공통 기반을 마련하고, 사용자에게 공개해야 합니다.

No 항목 요건
1 인증•인가 Microsoft Entra ID(구 Azure Active Directory)를 활용한 인증방식으로 통일하여 인가받은 앱이나 사용자에게만 Azure OpenAI의 사용을 허용한다
2 과금 Azure OpenAI 이용료를 부서별 혹은 이용자별로 과금되도록 만든다
3 호출 제한 특정 부서나 팀이 할당량 제한을 전부 소모하지 않도록 부서나 이용자 단위로 요청수를 제한한다
4 로그 통합 Azure OpenAI 이용시에 사용한 프롬프트나 생성된 출력 결과를 한 곳에 통합한다
5 폐쇄망 사용 레이어드 시큐리티의 관점에서 프라이빗 네트워크에 폐쇄된 형태로 Azure OpenAI를 이용할 수 있게 만든다
6 부하분산 Azure OpenAI는 동일한 구독이나 리전에서 처리 가능한 TPM(토큰/분)을 제한하고 있으며, 할당량 제한 증가 신청에는 다소 시간이 걸릴 수 있다. 보다 신속하게 TPM 제한에 대응하려면 여러 리전으로의 부하분산을 통해 사용 가능한 TPM을 증가시키는 방법도 있다

이 예제 코드에서는 아래 요건을 충족하는 아키텍처를 자동화하여 구축합니다.

사전 설정

  1. Microsoft Entra ID에 애플리케이션 등록

    • Azure OpenAI API를 호출할 애플리케이션을 Microsoft Entra ID에 등록합니다. 이 작업에는 Microsoft Entra ID의 애플리케이션을 관리할 수 있는 권한이 필요합니다. 아래 Microsoft Entra ID 역할들은 필요한 권한을 가지고 있습니다.
      • 애플리케이션 관리자
      • 애플리케이션 개발자
      • 클라우드 애플리케이션 관리자
    • 다음 절차대로 애플리케이션을 등록합니다.
      1. Azure portal에서 [앱 등록]을 검색하여 선택
      2. [새 등록]을 선택
      3. [애플리케이션 등록] 페이지가 나타나면, 다음과 같이 애플리케이션 등록정보를 입력한다
        • [이름]: 임의의 애플리케이션 이름을 입력합니다. 특별히 원하는 이름이 없으면 common-openai-api라고 지정합니다.
        • [지원되는 계정 유형]: 상황에 맞는 옵션을 선택하면 됩니다. 특별히 원하는 옵션이 없으면 [이 조직 디렉터리의 계정만(기본 디렉터리만 - 단일 테넌트)]를 선택합니다.
        • [리디렉션 URI]: 리다이렉트시키고 싶은 애플리케이션 URI가 있으면 입력합니다. 이후에 살펴볼 아키텍처 해설에서는 예제 파이썬 코드를 사용해서 실제로 Azure OpenAI API를 호출합니다. 예제 파이썬 코드를 사용하실 분은 플랫폼 선택에서 웹을 선택하고 URI에 http://localhost:5000/callback을 입력합니다. 리디렉션 URI는 이후에 사용하므로 메모해두어야 합니다.
      4. [등록]을 클릭해서 애플리케이션 생성
        • 앱의 [개요] 페이지에 표시된 [애플리케이션 ID]를 메모해 둡니다.
      5. Microsoft Entra ID 메뉴의 [관리] 섹션에서 [앱 등록]을 선택하고 [모든 애플리케이션] 탭에서 방금 생성한 애플리케이션으로 들어갑니다. 그리고 [관리] 섹션에 있는 [API 표시]를 선택한 뒤 [범위 추가] 버튼을 클릭합니다.
      6. [애플리케이션 ID URI]값은 변경하지 않고 [저장 후 계속]버튼을 선택합니다.
        • [범위 이름]에는 API로 보호중인 데이터와 기능에 대한 접근을 제한하기 위한 범위를 지정합니다. 여기서는 'chat'을 지정합니다.
        * [동의할 수 있는 사람]에는 사용자도 동의할 수 있도록 [관리자 및 사용자]를 선택합니다. * 관리자나 사용자의 동의 표시 이름과 설명에는 임의의 값을 지정하면 됩니다. * [상태]는 '사용'으로 지정한다.
      7. [범위 추가] 버튼을 클릭해서 범위를 생성합니다.
        • 추가된 범위값(예: api://<애플리케이션 ID>/chat)은 이후에 사용하므로 메모해둡니다. 우측에 복사 버튼으로 복사할 수 있습니다.
  2. 배포할 사용자에 권한 부여하기

    • 배포할 사용자의 Microsoft Entra ID 계정에 배포할 구독의 Owner(소유자) 권한을 부여해야 합니다.

배포

  1. 예제 코드 다운로드
    • 예제 코드를 아직 다운받지 않았다면 git clone으로 다운로드한 뒤 아래 디렉터리로 이동해주세요. 예제 코드의 라이센스는 MIT License입니다. PowerShell이나 Bash/Zsh을 열고 다음 커맨드를 실행합니다.
      git clone -b https://github.com/1mlines/book-azureopenai-sample.git
      cd book-azureopenai-sample/aoai-apim
      
  2. 파라미터 설정
    • 배포에 필요한 모든 파라미터는 aoai-apim/infra/main.parameters.json에 있습니다. main.parameters.json의 내용을 다음 표를 보면서 수정해주세요.
파라미터 이름 입력값 입력값 예시
environmentName 배포시 미지정
location 배포시 미지정
aoaiFirstLocation Azure OpenAI 모델을 배포할 첫 번째 리전 japaneast 등
aoaiSecondLocation Azure OpenAI 모델을 배포할 두 번째 리전 eastus 등
corsOriginUrl 인증할 싱글 페이지 애플리케이션(SPA)의 도메인을 지정한다. 도메인이 정해져있지 않으면, 기본값으로 '*'를 지정할 수도 있다. 하지만 확정되는대로 실제 도메인을 지정하는 것을 권장한다. *, example.com, yourapp.azurewebsites.net 등
audienceAppId 등록한 앱의 개요에 기재된 [애플리케이션(클라이언트) ID] bcd1234-abcd-1234-abcd-1234abcd1234
scopeName 범위 이름 chat
tenantId Microsoft Entra ID 개요에 기재된 [테넌트 ID] abcd1234-abcd-1234-abcd-1234abcd1234
aoaiCapacity 배포할 모델의 TPM(토큰/분) 제한을 지정한다. 여기에 지정한 수치에 1,000이 곱해진다(10으로 지정하면 1분당 10,000 토큰까지 처리할 수 있음을 의미한다) 1, 10, 100 등
  1. Azure Developer CLI 로그인

    • 다음 커맨드를 사용해서 배포할 구독에 포함된 Microsoft Entra ID 테넌트로 로그인합니다.
      azd auth login
      
    • 브라우저가 없는 환경에서는 --use-device-code, 테넌트를 명시적으로 지정하고 싶을 때는 --tenant-id를 추가로 지정해야 합니다.
  2. 배포 실행

    • 다음 커맨드를 실행합니다.
      azd up
      
    • 질문이 나오면 다음과 같이 내용을 설정합니다.
      • 환경 이름(Enter a new environment name): 임의의 환경 이름을 입력합니다. rg-<환경 이름>으로 리소스 그룹이 생성됩니다.
      • 구독 선택(Select an Azure Subscription to use): 리소스 그룹을 생성할 구독을 선택합니다.
      • 위치 선택(Select an Azure location to use): Japan East 등 Azure OpenAI 이외의 Azure 서비스를 배포할 리전을 지정합니다.
    • 배포 완료까지는 20~30분 가량이 소요될 수 있습니다. 지정한 환경 이름 등은 .azure 디렉터리 하위에 저장되므로 매번 재지정하지 않아도 됩니다. 환경을 처음부터 재정의하고 싶다면 .azure 디렉터리를 삭제해야 합니다.