このレポは、音声をユーザーインターフェイスとして使用するアプリケーションにRAGサポートを実装する方法の例が含まれています。このブログ投稿でパターンについて詳しく説明します。この短いビデオでは、このサンプルアプリが動作していることがわかります。
フロントエンドのRTClientはオーディオ入力を受信し、 RTMiddleTierオブジェクトを使用してAzure OpenaiリアルタイムAPIとインターフェイスし、Azure AI検索を検索するためのツールを含むPythonバックエンドに送信します。

このリポジトリには、コードとしてのインフラストラクチャとAzure Containerアプリにアプリを展開するDockerfileが含まれていますが、Azure AI検索とAzure Openaiサービスが構成されている限りローカルに実行することもできます。
このテンプレートを始めるためのいくつかのオプションがあります。開始する最も簡単な方法は、GitHub Codespacesです。これは、すべてのツールをセットアップするため、ローカルでセットアップすることもできます。 VSコード開発コンテナを使用することもできます
GitHub Codespacesを使用して、このレポを実質的に実行できます。これにより、ブラウザでWebベースのコードとコードを開きます。
CodeSpaceが開いたら(これには数分かかる場合があります)、新しい端末を開き、アプリの展開に進みます。
開発者コンテナの拡張機能を使用して、ローカルとコード開発のコンテナでプロジェクトを実行できます。
Dockerデスクトップを開始します(まだインストールされていない場合はインストール)
プロジェクトを開きます:
開くVSコードウィンドウで、プロジェクトファイルが表示されたら(これには数分かかる場合があります)、新しい端末を開き、アプリの展開に進みます。
必要なツールをインストールします。
python --version from Consoleを実行できるようにしてください。 ubuntuでは、 python python3にリンクするために、 sudo apt install python-is-python3を実行する必要があるかもしれません。リポジトリ( git clone https://github.com/Azure-Samples/aisearch-openai-rag-audio )をクローン
次のセクションに進み、アプリを展開します。
以下の手順では、Azureリソースを提供し、アプリケーションコードをAzure Containerアプリに展開します。
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 Pricing Calculatorを試すことができます。
コストを削減するには、さまざまなサービスの無料SKUに切り替えることができますが、これらのSKUには制限があります。
azd down実行している場合、使用していない場合はアプリを削除することを忘れないでください。
このテンプレートは、マネージャーされたアイデンティティを使用して、開発者がこれらの資格情報を管理する必要性を排除します。アプリケーションは、マネージドアイデンティティを使用して、資格情報を管理することなくMicrosoft Entraトークンを取得できます。レポでベストプラクティスを確保するために、テンプレートに基づいてソリューションを作成する人には、GitHub Secret Scanning Stangingの設定がリポジトリで有効になっていることを確認できます。
サンプルデータ:このデモで使用されるPDFドキュメントには、言語モデル(Azure Openaiサービス)を使用して生成された情報が含まれています。これらの文書に含まれる情報は、デモンストレーション目的でのみであり、Microsoftの意見や信念を反映していません。 Microsoftは、このドキュメントに含まれる情報に関して、完全性、正確性、信頼性、適合性、または可用性について、明示的または暗示されたいかなる種類の表明または保証を行いません。マイクロソフトに予約されているすべての権利。