이 repo에는 오디오 용 GPT-4O 실시간 API로 구동되는 사용자 인터페이스로 음성을 사용하는 응용 프로그램에서 RAG 지원을 구현하는 방법의 예가 포함되어 있습니다. 이 블로그 게시물에서 패턴을 자세히 설명 하며이 짧은 비디오 에서이 샘플 앱이 작동하는 것을 볼 수 있습니다.
프론트 엔드의 RTClient 는 오디오 입력을 수신하고 RTMiddleTier 객체를 사용하여 Azure Openai 실시간 API와 인터페이스하는 Python 백엔드로 보내고 Azure AI 검색을위한 도구가 포함되어 있습니다.

이 저장소에는 코드로서의 인프라와 Azure Container 앱에 앱을 배포하기위한 Dockerfile 포함되지만 Azure AI 검색 및 Azure OpenAi 서비스가 구성되는 한 로컬로 실행할 수도 있습니다.
이 템플릿을 시작할 수있는 몇 가지 옵션이 있습니다. 시작하는 가장 빠른 방법은 Github Codespaces입니다. 모든 도구를 설정하므로 로컬로 설정할 수도 있습니다. VS Code Dev 컨테이너를 사용할 수도 있습니다
GitHub Codespaces를 사용 하여이 리포트를 거의 실행할 수 있습니다. GitHub Codespaces는 브라우저에서 웹 기반 대 코드를 열게됩니다.
Codespace가 열리면 (몇 분이 걸릴 수 있음) 새 터미널을 열고 앱을 배포하십시오.
Dev 컨테이너 확장을 사용하여 로컬 대 코드 개발 컨테이너에서 프로젝트를 실행할 수 있습니다.
Docker Desktop 시작 (아직 설치되지 않은 경우 설치)
프로젝트 열기 :
열리는 VS 코드 창에서 프로젝트 파일이 나타나면 (몇 분이 걸릴 수 있음) 새 터미널을 열고 앱 배포를 진행하십시오.
필요한 도구 설치 :
python --version 실행할 수 있는지 확인하십시오. Ubuntu에서는 python python3 에 연결하려면 sudo apt install python-is-python3 실행해야 할 수도 있습니다. 레포를 복제하십시오 ( git clone https://github.com/Azure-Samples/aisearch-openai-rag-audio )
다음 섹션으로 진행하여 앱을 배포하십시오.
아래 단계는 Azure 리소스를 제공하고 Application Code를 Azure Container Apps에 배포합니다.
Azure 계정에 로그인 :
azd auth loginGitHub Codespaces 사용자의 경우 이전 명령이 실패하면 시도하십시오.
azd auth login --use-device-code새로운 AZD 환경 만들기 :
azd env new 리소스 그룹에 사용될 이름을 입력하십시오. 이렇게하면 .azure 폴더에 새 폴더가 생성되어 azd 에 대한 모든 호출에 대한 활성 환경으로 설정됩니다.
(선택 사항) 이것은 기존 서비스를 사용하거나 음성 선택을 사용자 정의하기 위해 AZD 환경 변수를 설정하여 배포를 사용자 정의 할 수있는 시점입니다.
이 단일 명령을 실행하여 리소스를 제공하고 코드를 배포하며 샘플 데이터에 대한 통합 벡터화를 설정하십시오.
azd upazd down 하거나 수동으로 자원을 삭제할 수 있습니다.응용 프로그램이 성공적으로 배포되면 콘솔에 URL이 인쇄됩니다. 해당 URL로 이동하여 브라우저의 앱과 상호 작용하십시오. 앱을 시험해 보려면 "대화 시작 버튼"을 클릭하고 "Hello"라고 말한 다음 "Contoso Electronics의 내부 고발자 정책은 무엇입니까?"와 같은 데이터에 대해 질문하십시오. 이제 다음 섹션의 지침에 따라 앱을 로컬로 실행할 수 있습니다.
배포 지침에 따라 프로비저닝 한 Azure 서비스를 사용하여 또는 이미 기존 서비스에서 로컬 앱을 지적 하여이 앱을 로컬로 실행할 수 있습니다.
azd up 으로 배포 한 경우 필요한 환경 변수가있는 app/backend/.env 파일이 표시됩니다.
azd up 사용하지 않은 경우 다음 환경 변수로 app/backend/.env 파일을 만들어야합니다.
AZURE_OPENAI_ENDPOINT=wss:// < your instance name > .openai.azure.com
AZURE_OPENAI_REALTIME_DEPLOYMENT=gpt-4o-realtime-preview
AZURE_OPENAI_REALTIME_VOICE_CHOICE= < choose one: echo, alloy, shimmer >
AZURE_OPENAI_API_KEY= < your api key >
AZURE_SEARCH_ENDPOINT=https:// < your service name > .search.windows.net
AZURE_SEARCH_INDEX= < your index name >
AZURE_SEARCH_API_KEY= < your api key >Entra ID (로컬로 실행할 때 사용자, 배포시 관리 된 ID)를 사용하려면 키를 설정하지 않습니다.
이 명령을 실행하여 앱을 시작하십시오.
Windows :
pwsh .scriptsstart.ps1Linux/Mac :
./scripts/start.sh이 앱은 http : // localhost : 8765에서 사용할 수 있습니다.
앱이 실행되면 위의 URL로 이동하면 앱의 시작 화면이 표시됩니다. 
앱을 시험해 보려면 "대화 시작 버튼"을 클릭하고 "Hello"라고 말한 다음 "Contoso Electronics의 내부 고발자 정책은 무엇입니까?"와 같은 데이터에 대해 질문하십시오.
가격은 지역 및 사용당 다양하므로 사용에 대한 정확한 비용을 예측할 수 없습니다. 그러나 아래 리소스에 대한 Azure 가격 계산기를 사용해 볼 수 있습니다.
비용을 줄이려면 다양한 서비스를 위해 무료 SKU로 전환 할 수 있지만 SKU에는 한계가 있습니다.
azd down 실행하여 더 이상 사용하지 않는 경우 앱을 중단해야합니다.
이 템플릿은 관리 된 ID를 사용하여 개발자가 이러한 자격 증명을 관리 할 필요가 없습니다. 응용 프로그램은 자격 증명을 관리 할 필요없이 Microsoft Entra 토큰을 얻기 위해 관리 된 ID를 사용하여 REPO의 모범 사례를 보장하기 위해 템플릿을 기반으로 솔루션을 만드는 모든 사람이 REPOS에서 GitHub 비밀 스캔 설정을 활성화하는지 확인하는 것이 좋습니다.
샘플 데이터 :이 데모에 사용 된 PDF 문서에는 언어 모델 (Azure OpenAI Service)을 사용하여 생성 된 정보가 포함되어 있습니다. 이 문서에 포함 된 정보는 데모 목적으로 만 사용되며 Microsoft의 의견이나 신념을 반영하지 않습니다. Microsoft는이 문서에 포함 된 정보와 관련하여 완전성, 정확성, 신뢰성, 적합성 또는 가용성에 대해 어떤 종류의 표현 또는 묵시적 임의의 진술이나 보증도하지 않습니다. 모든 권리가 Microsoft에 보유됩니다.