이 솔루션은 RAG(Retrieval Augmented Generation)를 사용하여 자신의 문서에 ChatGPT와 유사한 프런트엔드 경험을 생성합니다. Azure OpenAI Service를 사용하여 GPT 모델에 액세스하고, Azure AI Search를 사용하여 데이터 인덱싱 및 검색을 수행합니다.
이 솔루션의 백엔드는 Python으로 작성되었습니다. 이를 기반으로 하는 JavaScript , .NET 및 Java 샘플도 있습니다. Azure AI Services를 사용하여 AI 앱을 개발하는 방법에 대해 자세히 알아보세요.
앱 개요 동영상을 시청하세요.
이 샘플은 검색 증강 생성 패턴을 사용하여 자체 데이터에 대해 ChatGPT와 유사한 경험을 생성하는 몇 가지 접근 방식을 보여줍니다. Azure OpenAI Service를 사용하여 GPT 모델(gpt-35-turbo)에 액세스하고 Azure AI Search를 사용하여 데이터 인덱싱 및 검색을 수행합니다.
저장소에는 샘플 데이터가 포함되어 있어 엔드 투 엔드를 시도할 준비가 되어 있습니다. 이 샘플 응용 프로그램에서는 Contoso Electronics라는 가상의 회사를 사용하며, 이러한 경험을 통해 직원은 혜택, 내부 정책, 직무 설명 및 역할에 대해 질문할 수 있습니다.
중요: 이 예제를 배포하고 실행하려면 다음이 필요합니다.
Microsoft.Authorization/roleAssignments/write
권한이 있어야 합니다. 구독 수준 권한이 없는 경우 기존 리소스 그룹에 대한 RBAC를 부여받아 해당 기존 그룹에 배포해야 합니다.Microsoft.Resources/deployments/write
권한도 필요합니다.가격은 지역 및 사용량에 따라 다르므로 사용량에 대한 정확한 비용을 예측하는 것은 불가능합니다. 그러나 아래 리소스에 대해 Azure 가격 계산기를 사용해 볼 수 있습니다.
비용을 절감하기 위해 다양한 서비스에 대해 무료 SKU로 전환할 수 있지만 이러한 SKU에는 제한이 있습니다. 자세한 내용은 최소 비용으로 배포하는 방법에 대한 이 가이드를 참조하세요.
azd down
실행하여 앱을 종료해야 합니다.
이 프로젝트를 설정하는 데는 몇 가지 옵션이 있습니다. 시작하는 가장 쉬운 방법은 GitHub Codespaces입니다. GitHub Codespaces는 모든 도구를 자동으로 설정해 주지만 원하는 경우 로컬로 설정할 수도 있습니다.
브라우저에서 웹 기반 VS Code를 여는 GitHub Codespaces를 사용하여 이 리포지토리를 가상으로 실행할 수 있습니다.
codespace가 열리면(몇 분 정도 걸릴 수 있음) 터미널 창을 엽니다.
관련 옵션은 Dev Containers 확장을 사용하여 로컬 VS Code에서 프로젝트를 여는 VS Code Dev Containers입니다.
Docker Desktop 시작(아직 설치하지 않은 경우 설치)
프로젝트를 엽니다.
열리는 VS Code 창에서 프로젝트 파일이 표시되면(몇 분 정도 걸릴 수 있음) 터미널 창을 엽니다.
필요한 도구를 설치합니다:
python --version
실행할 수 있는지 확인하세요. Ubuntu에서는 python
python3
에 연결하려면 sudo apt install python-is-python3
실행해야 할 수도 있습니다.pwsh.exe
실행할 수 있는지 확인하세요. 이것이 실패하면 PowerShell을 업그레이드해야 할 가능성이 높습니다.새 폴더를 만들고 터미널에서 해당 폴더로 전환하세요.
프로젝트 코드를 다운로드하려면 다음 명령을 실행하세요.
azd init -t azure-search-openai-demo
이 명령은 git 저장소를 초기화하므로 이 저장소를 복제할 필요가 없습니다.
아래 단계에서는 Azure 리소스를 프로비저닝하고 애플리케이션 코드를 Azure Container Apps에 배포합니다. 대신 Azure App Service에 배포하려면 앱 서비스 배포 가이드를 따르세요.
Azure 계정에 로그인합니다.
azd auth login
GitHub Codespaces 사용자의 경우 이전 명령이 실패하면 다음을 시도하십시오.
azd auth login --use-device-code
새 azd 환경을 만듭니다.
azd env new
리소스 그룹에 사용할 이름을 입력합니다. 그러면 .azure
폴더에 새 폴더가 생성되고, 앞으로의 모든 azd
호출에 대한 활성 환경으로 설정됩니다.
(선택 사항) 기존 리소스를 사용하거나 선택적 기능(예: 인증 또는 비전)을 활성화하거나 무료 계층에 배포하기 위해 환경 변수를 설정하여 배포를 사용자 정의할 수 있는 지점입니다.
azd up
실행 - ./data
폴더에 있는 파일을 기반으로 검색 인덱스를 구축하는 것을 포함하여 Azure 리소스를 프로비저닝하고 해당 리소스에 이 샘플을 배포합니다.
azd down
실행하거나 리소스를 수동으로 삭제할 수 있습니다.애플리케이션이 성공적으로 배포되면 콘솔에 URL이 인쇄되는 것을 볼 수 있습니다. 브라우저에서 애플리케이션과 상호작용하려면 해당 URL을 클릭하세요. 다음과 같이 표시됩니다.
참고: 애플리케이션이 완전히 배포되려면 '성공'이 표시된 후 5~10분 정도 걸릴 수 있습니다. "Python 개발자" 시작 화면이나 오류 페이지가 표시되면 잠시 기다렸다가 페이지를 새로 고치세요.
app
폴더에서 백엔드/프런트엔드 코드만 변경한 경우에는 Azure 리소스를 다시 프로비전할 필요가 없습니다. 다음을 실행하면 됩니다.
azd deploy
인프라 파일( infra
폴더 또는 azure.yaml
)을 변경한 경우 Azure 리소스를 다시 프로비전해야 합니다. 다음을 실행하여 그렇게 할 수 있습니다.
azd up
다른 사람에게 완전히 배포된 기존 환경에 대한 액세스 권한을 부여하려면 귀하 또는 다른 사람이 다음 단계를 수행하면 됩니다.
azd init -t azure-search-openai-demo
실행하거나 이 리포지토리를 복제합니다.azd env refresh -e {environment name}
실행합니다. 이 명령을 실행하려면 azd 환경 이름, 구독 ID 및 위치가 필요합니다. .azure/{env name}/.env
파일에서 해당 값을 찾을 수 있습니다. 그러면 앱을 로컬로 실행하는 데 필요한 모든 설정으로 azd 환경의 .env
파일이 채워집니다..env
파일 또는 활성 셸에서 환경 변수 AZURE_PRINCIPAL_ID
az ad signed-in-user show
통해 얻을 수 있는 Azure ID로 설정합니다../scripts/roles.ps1
또는 .scripts/roles.sh
실행하여 필요한 모든 역할을 사용자에게 할당합니다. 구독에서 역할을 생성하는 데 필요한 권한이 없는 경우 해당 사용자를 위해 이 스크립트를 실행해야 할 수도 있습니다. 스크립트가 실행되면 로컬에서 앱을 실행할 수 있어야 합니다. azd up
명령을 성공적으로 실행한 후에 만 로컬로 실행할 수 있습니다. 아직 수행하지 않았다면 위의 배포 단계를 따르세요.
azd auth login
실행app
으로 변경./start.ps1
또는 ./start.sh
실행하거나 "VS Code 작업: 앱 시작"을 실행하여 프로젝트를 로컬에서 시작합니다.로컬 개발 가이드에서 더 많은 팁을 확인하세요.
웹 앱에서 다음을 수행합니다.
이 샘플에서 생성된 모든 리소스를 정리하려면 다음 안내를 따르세요.
azd down
실행y
입력합니다.y
입력합니다.리소스 그룹 및 모든 리소스가 삭제됩니다.
아래 팁 외에도 docs 폴더에서 광범위한 문서를 찾을 수 있습니다.
앱을 성공적으로 배포한 후에는 텍스트 변경, 프롬프트 조정, 데이터 교체 등 필요에 맞게 사용자 정의를 시작할 수 있습니다. 자세한 내용은 앱 사용자 지정 가이드와 데이터 수집 가이드를 참조하세요.
기본적으로 배포된 앱은 오류 로깅과 함께 각 요청 추적을 위해 Application Insights를 사용합니다.
성능 데이터를 보려면 리소스 그룹의 Application Insights 리소스로 이동하여 "조사 -> 성능" 블레이드를 클릭하고 HTTP 요청으로 이동하여 타이밍 데이터를 확인합니다. 채팅 요청의 성능을 검사하려면 "샘플 분석" 버튼을 사용하여 채팅 요청에 대해 수행된 모든 API 호출의 엔드투엔드 추적을 확인하세요.
예외 및 서버 오류를 보려면 "조사 -> 오류" 블레이드로 이동하고 필터링 도구를 사용하여 특정 예외를 찾습니다. 오른쪽에서 Python 스택 추적을 볼 수 있습니다.
다음 명령을 실행하여 대시보드에서 차트 요약을 볼 수도 있습니다.
azd monitor
이 샘플은 자신의 프로덕션 애플리케이션을 위한 출발점으로 설계되었지만 프로덕션에 배포하기 전에 보안 및 성능을 철저히 검토해야 합니다. 자세한 내용은 생산 가이드를 읽어보세요.
가장 일반적인 오류 시나리오와 해결 방법은 다음과 같습니다.
구독( AZURE_SUBSCRIPTION_ID
)은 Azure OpenAI 서비스에 액세스할 수 없습니다. AZURE_SUBSCRIPTION_ID
OpenAI 액세스 요청 프로세스에 지정된 ID와 일치하는지 확인하세요.
Azure OpenAI가 활성화되지 않은 지역(예: 미국 동부가 아닌 미국 동부 2)에서 리소스를 만들려고 하거나 사용하려는 모델이 활성화되지 않은 지역에서 리소스를 만들려고 합니다. 모델 가용성 매트릭스를 참조하세요.
할당량(대부분 지역당 리소스 수)을 초과했습니다. 할당량 및 한도에 대해서는 이 문서를 참조하세요.
"동일한 리소스 이름은 허용되지 않습니다" 충돌이 발생합니다. 샘플을 여러 번 실행하고 매번 생성한 리소스를 삭제했지만 제거하는 것을 잊어버렸기 때문일 수 있습니다. Azure는 일시 삭제에서 제거하지 않는 한 리소스를 48시간 동안 유지합니다. 리소스 제거에 대한 이 문서를 참조하세요.
prepdocs.py
스크립트가 실행되면 CERTIFICATE_VERIFY_FAILED
표시됩니다. 이는 일반적으로 컴퓨터에 SSL 인증서가 잘못 설정되어 있기 때문입니다. 이 StackOverflow 답변의 제안 사항을 시도해 보세요.
azd up
실행하고 웹 사이트를 방문한 후 브라우저에 '404 Not Found'가 표시됩니다. 아직 시작 중일 수 있으므로 10분 정도 기다린 후 다시 시도하세요. 그런 다음 azd deploy
실행하고 다시 기다립니다. 배포된 앱에 여전히 오류가 발생하고 App Service에 배포하는 경우 App Service 배포 디버깅에 대한 가이드를 참조하세요. 로그가 오류 해결에 도움이 되지 않으면 문제를 신고하세요.
이는 최신 Generative AI 앱의 기능과 이를 Azure에서 구축하는 방법을 보여주기 위해 구축된 샘플입니다. 이 샘플을 배포하는 데 도움이 필요하면 GitHub 문제에 게시하세요. Microsoft 직원인 경우 Teams 채널에 게시할 수도 있습니다.
이 리포지토리는 Microsoft 지원이 아닌 관리자가 지원하므로 위에 설명된 지원 메커니즘을 사용하세요. 최선을 다해 도와드리겠습니다.
참고: 이 데모에 사용된 PDF 문서에는 언어 모델(Azure OpenAI 서비스)을 사용하여 생성된 정보가 포함되어 있습니다. 이 문서에 포함된 정보는 데모 목적으로만 제공되며 Microsoft의 의견이나 신념을 반영하지 않습니다. Microsoft는 이 문서에 포함된 정보의 완전성, 정확성, 신뢰성, 적합성 또는 가용성에 대해 명시적이든 묵시적이든 어떠한 종류의 진술이나 보증도 하지 않습니다. 모든 권리는 Microsoft에 있습니다.