자습서: 엔터프라이즈 채팅 웹앱 배포
Important
이 문서에 표시된 항목(미리 보기)은 현재 퍼블릭 미리 보기에서 확인할 수 있습니다. 이 미리 보기는 서비스 수준 계약 없이 제공되며, 프로덕션 워크로드에는 권장되지 않습니다. 특정 기능이 지원되지 않거나 기능이 제한될 수 있습니다. 자세한 내용은 Microsoft Azure Preview에 대한 추가 사용 약관을 참조하세요.
이 문서에서는 Azure AI Foundry 포털에서 대규모 언어 모델을 사용하여 사용자 고유의 데이터를 사용하는 엔터프라이즈 채팅 웹앱을 배포합니다.
데이터 원본은 특정 데이터로 모델을 구축하는 데 사용됩니다. 그라운딩은 모델이 데이터를 사용하여 질문의 컨텍스트를 이해하는 데 도움을 준다는 것을 의미합니다. 배포된 모델 자체는 변경되지 않습니다. 데이터는 원본 데이터 원본에 별도로 안전하게 저장됩니다.
이 자습서의 단계는 다음과 같습니다.
- 리소스를 구성합니다.
- 데이터를 추가합니다.
- 데이터로 모델을 테스트합니다.
- 웹 앱에 배포합니다.
필수 조건
Azure 구독 – 체험 구독을 만듭니다.
배포된 Azure OpenAI 채팅 모델입니다. 아직 없는 경우 Azure AI Foundry 플레이그라운드 빠른 시작을 완료하여 이 리소스를 만듭니다.
샘플 제품 데이터를 인덱싱하는 Search 서비스 연결입니다. 없는 경우 단계에 따라 검색 서비스를 만들고 연결 합니다.
제품 데이터의 로컬 복사본입니다. GitHub의 Azure-Samples/rag-data-openai-python-promptflow 리포지토리에는 이 자습서 시나리오와 관련된 샘플 소매 제품 정보가 포함되어 있습니다. 특히
product_info_11.md
파일에는 이 자습서 예와 관련된 TrailWalker 하이킹 신발에 대한 제품 정보가 포함되어 있습니다. ZIP 파일로 예제 Contoso Trek 소매 제품 데이터를 다운로드하여 로컬 컴퓨터에 다운로드합니다.웹앱에 배포할 수 있도록 선택한 구독에 등록된 Microsoft.Web 리소스 공급자입니다. 리소스 제공 등록에 대한 자세한 내용은 리소스 공급자 등록을 참조하세요.
Azure 구독에서 역할 할당을 추가하는 데 필요한 권한입니다. 역할 할당을 통한 권한 부여는 특정 Azure 리소스의 소유자에게만 허용됩니다.
Azure AI Foundry 포털 및 Azure Portal
이 자습서에서는 Azure AI Foundry 포털에서 일부 작업과 Azure Portal의 일부 작업을 수행합니다.
Azure AI Foundry 포털은 AI 모델을 빌드, 학습 및 배포하기 위한 웹 기반 환경입니다. 개발자는 채팅 웹 애플리케이션을 빌드하고 배포합니다.
Azure Portal을 사용하면 관리자가 Azure 리소스를 관리하고 모니터링할 수 있습니다. 관리자는 포털을 사용하여 웹앱에서 액세스하는 데 필요한 다양한 Azure 서비스에 대한 설정을 구성합니다.
리소스 구성
Important
Azure 구독에 역할 할당을 추가하려면 필요한 권한이 있어야 합니다. 역할 할당을 통한 권한 부여는 특정 Azure 리소스의 소유자에게만 허용됩니다. Azure 구독 소유자(IT 관리자일 수 있는 사람)에게 이 섹션을 완료하도록 요청해야 할 수 있습니다.
리소스가 웹앱 내에서 올바르게 작동하려면 올바른 권한으로 구성해야 합니다. 이 작업은 Azure Portal에서 수행됩니다.
시작하려면 Azure AI Foundry 포털에서 구성해야 하는 리소스를 식별합니다.
Azure AI Foundry 포털을 열고 Azure OpenAI 채팅 모델을 배포하는 데 사용한 프로젝트를 선택합니다.
왼쪽 창에서 관리 센터를 선택합니다.
프로젝트에서 연결된 리소스를 선택합니다.
구성해야 하는 세 가지 리소스, 즉 Azure OpenAI, Azure AI Search 및 workspaceblobstore에 해당하는 Azure Blob Storage를 식별합니다.
팁
Azure OpenAI 리소스가 여러 개 있는 경우 배포된 채팅 모델을 포함하는 리소스를 사용합니다.
각 리소스에 대해 링크를 선택하여 리소스 세부 정보를 엽니다. 세부 정보 페이지에서 리소스 이름을 선택하여 Azure Portal에서 리소스를 엽니다. (workspaceblobstore의 경우Azure Portal에서 보기).
브라우저 탭이 열리면 Azure AI Foundry 포털로 돌아가서 다음 리소스에 대한 프로세스를 반복합니다.
완료되면 Search 서비스, Azure AI 서비스 및 Blobstore 컨테이너에 대한 세 개의 새 브라우저 탭이 열려 있어야 합니다. 리소스를 구성하기 위해 탭 사이를 오가면서 세 개의 새 탭을 모두 열어 둡니다.
관리 ID 사용
Azure Portal의 Search 서비스 리소스에 대한 브라우저 탭에서 관리 ID를 사용하도록 설정합니다.
- 왼쪽 창의 설정 아래에서 ID를 선택합니다.
- 상태를 켜기로 전환합니다.
- 저장을 선택합니다.
Azure Portal의 Azure AI 서비스 리소스에 대한 브라우저 탭에서 관리 ID를 사용하도록 설정합니다.
- 왼쪽 창의 리소스 관리에서 ID를 선택합니다.
- 상태를 켜기로 전환합니다.
- 저장을 선택합니다.
검색에 대한 액세스 제어 설정
Azure Portal의 Search 서비스 리소스에 대한 브라우저 탭에서 API 액세스 정책을 설정합니다.
- 왼쪽 창의 설정에서 키를 선택합니다.
- API 액세스 제어에서 둘 다를 선택합니다.
- 메시지가 표시되면 예를 선택하여 변경 사항을 확인합니다.
역할 할당
아래 글머리 기호 항목에서 이 패턴을 여러 번 반복합니다.
모든 리소스에 대해 RBAC(역할 기반 액세스 제어)를 할당하는 일반적인 패턴은 다음과 같습니다.
- 지정된 리소스에 대한 Azure Portal로 이동합니다.
- Azure Portal의 왼쪽 페이지에서 액세스 제어(IAM)를 선택합니다.
- 추가>역할 할당 추가를 선택합니다.
- 할당해야 하는 역할을 검색하고 선택합니다. 그런 후 다음을 선택합니다.
- 자신에게 역할을 할당하는 경우:
- 사용자, 그룹 또는 서비스 주체를 선택합니다.
- 멤버 선택을 선택합니다.
- 이름을 검색하고 선택합니다.
- 다른 리소스에 역할을 할당하는 경우:
- 관리 ID를 선택합니다.
- 멤버 선택을 선택합니다.
- 드롭다운을 사용하여 할당할 리소스 유형을 찾습니다. 예를 들어 Azure AI 서비스 또는 Search 서비스입니다.
- 표시되는 목록에서 리소스를 선택합니다. 하나만 있을 수 있지만 여전히 선택해야 합니다.
- 마법사를 계속 진행하고 검토 + 할당을 선택하여 역할 할당을 추가합니다.
다음 단계를 사용하여 이 자습서에서 구성하는 리소스에 대한 역할을 할당합니다.
Azure Portal의 Search 서비스에 대한 브라우저 탭에서 다음 역할을 할당합니다.
- Azure AI 서비스 관리 ID에 대한 인덱스 데이터 판독기 검색
- Azure AI 서비스 관리 ID에 대한 Search Service 기여자
- 자신에게 기여자(참가자를 찾으려면 맨 위에 있는 권한 있는 관리자 역할 탭으로 전환합니다.) 다른 모든 역할은 작업 함수 역할 탭에 있습니다.)
Azure Portal의 Azure AI 서비스에 대한 브라우저 탭에서 다음 역할을 할당합니다 .
- Search 서비스 관리 ID에 대한 Cognitive Services OpenAI 기여자
- 자신에게 기여 합니다.
Azure Portal의 Azure Blob Storage에 대한 브라우저 탭에서 다음 역할을 할당합니다.
- Azure AI 서비스 관리 ID에 대한 Storage Blob 데이터 기여자
- Search 서비스 관리 ID에 대한 Storage Blob 데이터 판독기
- 자신에게 기여자
리소스 구성을 완료했습니다. 원하는 경우 이제 Azure Portal 브라우저 탭을 닫을 수 있습니다.
데이터를 추가하고 채팅 모델을 다시 사용해 보세요.
Azure AI Foundry 플레이그라운드 빠른 시작(이 자습서의 필수 구성 요소)에서 데이터 없이 모델이 응답하는 방식을 관찰합니다. 이제 모델에 데이터를 추가하여 제품에 대한 질문에 답변할 수 있습니다.
이 섹션을 완료하려면 제품 데이터의 로컬 복사본이 필요합니다. GitHub의 Azure-Samples/rag-data-openai-python-promptflow 리포지토리에는 이 자습서 시나리오와 관련된 샘플 소매 제품 정보가 포함되어 있습니다. 특히 product_info_11.md
파일에는 이 자습서 예와 관련된 TrailWalker 하이킹 신발에 대한 제품 정보가 포함되어 있습니다. ZIP 파일로 예제 Contoso Trek 소매 제품 데이터를 다운로드하여 로컬 컴퓨터에 다운로드합니다.
도우미가 제품에 대한 질문에 답변할 수 있도록 채팅 플레이그라운드에 데이터를 추가하려면 다음 단계를 따릅니다. 배포된 모델 자체는 변경되지 않습니다. 사용자의 데이터는 Azure 구독에 별도로 안전하게 저장됩니다.
Azure AI Foundry에서 프로젝트로 이동합니다.
놀이터를 선택합니다.
채팅 플레이그라운드 체험을 선택합니다.
배포 드롭다운에서 배포된 채팅 모델을 선택합니다.
채팅 플레이그라운드의 왼쪽에서 데이터 추가(미리 보기)>를 선택하고 새 데이터 원본 추가를 선택합니다.
데이터 원본 드롭다운에서 파일 업로드를 선택합니다.
로컬 파일을 찾아보려면 업로드>파일 업로드를 선택합니다.
업로드할 파일을 선택합니다. 이전에 다운로드했거나 만든 제품 정보 파일을 선택합니다. 이제 모든 파일을 추가합니다. 나중에 동일한 플레이그라운드 세션에서 더 많은 파일을 추가할 수 없습니다.
업로드를 선택하여 Azure Blob Storage 계정에 파일을 업로드합니다. 그런 후 다음을 선택합니다.
Azure AI Search 서비스를 선택합니다.
벡터 인덱스 이름에 제품 정보를 입력하고 다음을 선택합니다.
벡터 설정 아래의 검색 설정 페이지에서 이 검색 리소스에 벡터 검색 추가 확인란을 선택 취소합니다. 이 설정은 모델이 요청에 응답하는 방식을 결정하는 데 도움이 됩니다. 그 후 다음을 선택합니다.
참고 항목
벡터 검색을 추가하면 추가 비용을 지불하고 여기에서 더 많은 옵션을 사용할 수 있습니다.
설정을 검토하고 벡터 인덱스 만들기를 선택합니다.
플레이그라운드에서 데이터 수집이 진행 중인 것을 확인할 수 있습니다. 이 프로세스는 몇 분 정도 걸릴 수 있습니다. 계속하기 전에 상태 대신 데이터 원본과 인덱스 이름이 표시될 때까지 기다리세요.
이제 이전과 동일한 질문("TrailWalker 하이킹 신발은 얼마인가요?")을 묻는 모델과 채팅할 수 있으며, 이번에는 데이터 정보를 사용하여 응답을 구성합니다. 참조 단추를 확장하여 사용된 데이터를 볼 수 있습니다.
웹앱 배포
Azure AI Foundry 포털의 환경에 만족하면 모델을 독립 실행형 웹 애플리케이션으로 배포할 수 있습니다.
Azure Portal에서 리소스 그룹 찾기
이 자습서에서는 웹앱이 Azure AI Foundry 허브와 동일한 리소스 그룹에 배포됩니다. 나중에 Azure Portal에서 웹앱에 대한 인증을 구성합니다.
Azure Portal에서 리소스 그룹으로 이동하려면 다음 단계를 수행합니다.
Azure AI Foundry에서 프로젝트로 이동합니다. 그런 다음, 왼쪽 창에서 관리 센터를 선택합니다.
프로젝트 제목 아래에서 개요를 선택합니다.
리소스 그룹 이름을 선택하여 Azure Portal에서 리소스 그룹을 엽니다. 이 예에서 리소스 그룹 이름은
rg-sdg-ai
입니다.이제 Azure Portal에서 허브를 배포한 리소스 그룹의 콘텐츠를 확인해야 합니다. 리소스 그룹 이름 및 위치를 확인합니다. 다음 섹션에서 이 정보를 사용합니다.
브라우저 탭에서 이 페이지를 열어 두세요. 나중에 다시 돌아갑니다.
웹앱 배포
게시하면 구독에 Azure App Service가 만들어집니다. 선택한 계획에 따라 비용이 발생할 수 있습니다. 앱 사용이 완료되면 Azure Portal에서 삭제할 수 있습니다.
웹앱을 배포하려면 다음 안내를 따릅니다.
Important
웹앱에 배포하려면 Microsoft.Web을 리소스 공급자로 등록해야 합니다.
플레이그라운드에 데이터를 추가하려면 이전 섹션의 단계를 완료합니다. (사용자 고유의 데이터를 사용하거나 사용하지 않고 웹앱을 배포할 수 있지만, 적어도 다음에 설명 된 대로 배포된 모델이 필요합니다.Azure AI Foundry 플레이그라운드 빠른 시작).
배포 > 를 선택합니다. 웹앱으로
웹앱에 배포 페이지에서 다음 세부 정보를 입력합니다.
- 이름: 웹앱의 고유한 이름입니다.
- 구독: Azure 구독. 사용 가능한 구독이 표시되지 않으면 먼저 Microsoft.Web을 리소스 공급자로 등록합니다.
- 리소스 그룹: 웹앱을 배포할 리소스 그룹을 선택합니다. 허브와 동일한 리소스 그룹을 사용합니다.
- 위치: 웹앱을 배포할 위치를 선택합니다. 허브와 동일한 위치를 사용합니다.
- 계획: 웹앱에 대한 계획을 선택합니다.
- 웹앱에서 채팅 기록 사용하도록 설정: 자습서에서는 채팅 기록 상자가 선택되지 않습니다. 이 기능을 사용하도록 설정하면 사용자는 개별 이전 쿼리 및 응답에 액세스할 수 있습니다. 자세한 내용은 채팅 기록 설명을 참조하세요.
배포를 선택합니다.
앱이 배포될 때까지 기다리세요. 몇 분 정도 걸릴 수 있습니다.
준비가 되면 도구 모음에서 시작 단추가 사용하도록 설정됩니다. 그러나 아직 앱을 시작하지 않고 채팅 플레이그라운드 페이지를 닫지 마세요. 나중에 다시 시작합니다.
웹앱 인증 구성
기본적으로 웹앱은 사용자만 액세스할 수 있습니다. 이 자습서에서는 인증을 추가하여 앱에 대한 액세스를 Azure 테넌트 멤버로 제한합니다. 사용자가 앱에 액세스하려면 Microsoft Entra 계정으로 로그인하라는 메시지가 표시됩니다. 원하는 경우 유사한 프로세스에 따라 다른 ID 공급자를 추가할 수 있습니다. 앱은 사용자가 테넌트의 멤버인지 확인하는 것 이외의 다른 방법으로 사용자의 로그인 정보를 사용하지 않습니다.
Azure Portal이 포함된 브라우저 탭으로 돌아가거나 새 브라우저 탭에서 Azure Portal을 다시 열고 웹앱을 배포한 리소스 그룹의 콘텐츠를 봅니다(웹앱 보기 보기를 새로 고쳐야 할 수도 있음).
리소스 그룹의 리소스 목록에서 App Service 리소스를 선택합니다.
설정 아래 축소 가능한 왼쪽 메뉴에서 인증을 선택합니다.
Microsoft가 이 페이지에 ID 공급자를 나열한 경우 더 이상 필요하지 않습니다. 다음 단계를 건너뛸 수 있습니다.
다음 설정으로 ID 공급자를 추가합니다.
- ID 공급자: Microsoft를 ID 공급자로 선택합니다. 이 페이지의 기본 설정은 앱을 테넌트로만 제한하므로 여기에서 다른 항목을 변경할 필요가 없습니다.
- 테넌트 형식: 인력
- 앱 등록: 새 앱 등록 만들기
- 이름: 웹앱 서비스의 이름
- 지원되는 계정 유형: 현재 테넌트 - 단일 테넌트
- 액세스 제한: 인증 필요
- 인증되지 않은 요청: HTTP 302 리디렉션 찾음 - 웹 사이트에 권장됨
웹 앱 사용
거의 완료되었습니다. 이제 웹앱을 테스트할 수 있습니다.
설정을 변경한 경우 인증 설정이 적용될 때까지 10분 정도 기다립니다.
Azure AI Foundry 포털의 채팅 플레이그라운드 페이지가 포함된 브라우저 탭으로 돌아갑니다.
시작을 선택하여 배포된 웹앱을 시작합니다. 메시지가 표시되면 권한 요청을 수락합니다.
인증 설정이 아직 적용되지 않은 경우 웹앱의 브라우저 탭을 닫고 Azure AI Foundry 포털의 채팅 플레이그라운드로 돌아갑니다. 그런 다음 조금 더 기다렸다가 다시 시도하세요.
웹앱에서 이전과 동일한 질문("TrailWalker 하이킹 신발은 얼마인가요?")을 물을 수 있으며, 이번에는 데이터 정보를 사용하여 응답을 구성합니다. 참조 단추를 확장하여 사용된 데이터를 볼 수 있습니다.
채팅 기록 이해
채팅 기록 기능을 사용하면 사용자가 개별 이전 쿼리 및 응답에 액세스할 수 있습니다.
웹앱을 배포할 때 채팅 기록을 사용하도록 설정할 수 있습니다. 웹앱에서 채팅 기록 사용 확인란을 선택합니다.
Important
채팅 기록을 사용하도록 설정하면 리소스 그룹에 Cosmos DB 인스턴스가 생성되고 사용된 스토리지에 대한 추가 요금이 발생합니다. 웹앱을 삭제해도 Cosmos DB 인스턴스가 자동으로 삭제되지는 않습니다. 모든 저장된 채팅과 함께 Cosmos DB 인스턴스를 삭제하려면 Azure Portal에서 연결된 리소스로 이동한 후 삭제해야 합니다.
채팅 기록을 사용하도록 설정하면 사용자가 앱의 오른쪽 위 모서리에 채팅 기록을 표시하고 숨길 수 있습니다. 기록이 표시되면 대화의 이름을 바꾸거나 삭제할 수 있습니다. 앱에 로그인하면 대화가 자동으로 최신에서 가장 오래된 항목으로 정렬되고 대화의 첫 번째 쿼리에 따라 이름이 지정됩니다.
Cosmos DB 리소스를 삭제하지만 스튜디오에서 채팅 기록 옵션을 사용하도록 설정한 상태로 유지하는 경우 사용자에게 연결 오류에 대한 알림이 표시되지만 채팅 기록에 액세스하지 않고도 웹앱을 계속 사용할 수 있습니다.
웹앱 업데이트
플레이그라운드를 사용하여 더 많은 데이터를 추가하거나 다양한 시나리오에서 모델을 테스트합니다. 새 모델로 웹앱을 업데이트할 준비가 되면 배포 > 를 선택합니다. 를 웹앱으로 다시 사용합니다. 기존 웹앱 업데이트를 선택하고 목록에서 기존 웹앱을 선택합니다. 새 모델은 기존 웹앱에 배포됩니다.
리소스 정리
불필요한 Azure 비용이 발생하지 않도록 하려면 이 빠른 시작에서 만든 리소스가 더 이상 필요하지 않은 경우 삭제해야 합니다. 리소스를 관리하려면 Azure Portal을 사용할 수 있습니다.
관련 콘텐츠
- 프롬프트 흐름 SDK를 사용하여 채팅 앱 빌드 시작
- Azure AI SDK를 사용하여 사용자 지정 채팅 앱을 빌드합니다.