この記事では、プライベート エンドポイントからアクセスできる Python 用の
このサンプルでは、Azure AI Search で Python、Azure OpenAI Service、取得拡張生成 (RAG) を使用してチャット アプリを実装し、架空の会社の従業員の特典に関する回答を取得します。 このアプリには、従業員ハンドブック、特典ドキュメント、会社の役割と期待の一覧を含む PDF ファイルがシードされます。
この記事の手順に従うと、次の操作を実行できます。
- Web ブラウザーでパブリック アクセスのためにチャット アプリを Azure にデプロイします。
- プライベート エンドポイントを使用してチャット アプリを再デプロイします。
この手順が完了したら、カスタム コードを使用して新しいプロジェクトの変更を開始し、再デプロイできます。チャット アプリにはプライベート ネットワーク経由でのみアクセスできることを認識します。
アーキテクチャの概要
既定のデプロイでは、パブリック エンドポイントを含むチャット アプリが作成されます。
基本的な RAG チャット アプリのネットワーク アーキテクチャを示す
プライベート データで強化されたチャット アプリの場合、チャット アプリへのアクセスをセキュリティで保護することが重要です。 この記事では、仮想ネットワークを使用したソリューションについて説明します。
仮想ネットワーク内には、Azure App Service アプリ用と他のバックエンド Azure サービス用の別のサブネットがあります。 この構造により、各サブネットに異なるネットワーク セキュリティ グループ規則を簡単に適用できます。
仮想ネットワーク内では、サービスはプライベート エンドポイントを使用して相互に通信します。 各プライベート エンドポイントは、プライベート エンドポイントの名前を仮想ネットワーク内の IP アドレスに解決するために、プライベート ドメイン ネーム システム (DNS) ゾーンに関連付けられています。
デプロイの手順
ソリューションを 2 回デプロイすることをお勧めします。 パブリック アクセスを使用して 1 回デプロイし、チャット アプリが正しく動作していることを検証します。 仮想ネットワークを使用してチャット アプリをセキュリティで保護するために、プライベート アクセスを使用してもう一度デプロイします。
前提 条件
開発コンテナー 環境は、この記事を完了するために必要なすべての依存関係で使用できます。 開発コンテナーは、GitHub Codespaces (ブラウザー) で実行することも、Visual Studio Code を使用してローカルで実行することもできます。
この記事を使用するには、次の前提条件が必要です。
- Azure サブスクリプション。 無料で1つ作成してください。
- Azure アカウントのアクセス許可。 Azure アカウントには、アクセス管理者
Microsoft.Authorization/roleAssignments/writeまたは所有者 など、 権限が必要です。 - GitHub アカウント。
サンプル リソースの使用コスト
このアーキテクチャで使用されるほとんどのリソースは、基本または従量課金ベースの価格レベルに分類されます。 つまり、使用した分だけ料金が発生し、通常は開発またはテスト中に料金が最小限に抑えられます。
プライベート ネットワークを使用してデプロイすると、デプロイに追加コストが追加されます。 アプリの評価またはデプロイが完了したら、プロビジョニングされたすべてのリソースを削除して、継続的な料金を回避できます。
予想されるコストの詳細な内訳については、サンプルの GitHub リポジトリで 始める前 に参照してください。
オープン開発環境
この記事を完了するために必要なすべての依存関係を含む、構成済みの開発環境をデプロイするには、次の手順に従います。
重要
すべての GitHub アカウントでは、2 つのコア インスタンスで毎月最大 60 時間無料で GitHub Codespaces を使用できます。 詳細については、GitHub Codespaces の毎月含まれるストレージとコア時間を参照してください。
次のボタンを右クリックし、新しいウィンドウでリンクを開く を選択して、開発環境とドキュメントを同時に利用できるようにします。
[コードスペース の作成] ページで、コードスペースの設定構成を確認し、[コードスペースの作成] を選択します。
コードスペースが起動するまで待ちます。 このスタートアップ プロセスには数分かかる場合があります。
画面の下部にあるターミナルで、Azure Developer CLI を使用して Azure にサインインします。
azd auth loginターミナルからコードをコピーし、ブラウザーに貼り付けます。 手順に従って、Azure アカウントで認証します。
この記事の残りのタスクは、この開発コンテナーのコンテキストで行われます。
カスタム設定
このソリューションでは、Azure Developer CLI で構成されたカスタム設定に基づいてインフラストラクチャを構成してデプロイします。 次の表では、このソリューションのカスタム設定について説明します。
| 設定 | 説明 |
|---|---|
AZURE_PUBLIC_NETWORK_ACCESS |
サポートされている Azure リソースのパブリック ネットワーク アクセスの値を制御します。 有効な値は、Enabled または Disabledです。 |
AZURE_USE_PRIVATE_ENDPOINT |
Azure リソースを仮想ネットワークに接続するプライベート エンドポイントのデプロイを制御します。
TRUE 値は、接続のためにプライベート エンドポイントがデプロイされることを意味します。 |
AZURE_USE_VPN_GATEWAY |
仮想ネットワークの VPN ゲートウェイのデプロイを制御します。 これを使用せず、パブリック アクセスが無効になっている場合は、仮想ネットワークに接続するための別の方法が必要です。
TRUE値は、接続用に VPN ゲートウェイがデプロイされることを意味します。 |
チャット アプリを展開する
最初のデプロイでは、リソースが作成され、パブリックにアクセスできるエンドポイントが提供されます。
次のコマンドを実行して、このソリューションをパブリック アクセス用に構成します。
azd env set AZURE_PUBLIC_NETWORK_ACCESS Enabled環境名の入力を求められたら、環境名を使用してリソース グループを作成することを忘れないでください。 わかりやすい名前を入力します。 チームまたは組織内にいる場合は、
morgan-chat-private-endpointsのように名前を含めます。 環境名を書き留めます。 Azure portal でリソースを検索するには、後で必要になります。次のコマンドを実行して、仮想ネットワーク リソースのプロビジョニングを含めます。 デプロイでは、2 つ目のデプロイまでアクセスが制限されない点に注意してください。
azd env set AZURE_USE_PRIVATE_ENDPOINT true次のコマンドを使用してソリューションをデプロイします。
azd upリソースのプロビジョニングは、デプロイ プロセスの最も時間のかかる部分です。 デプロイが完了するまで待ってから続行します。
デプロイ プロセスの最後に、アプリ エンドポイントが表示されます。 そのエンドポイントをブラウザーにコピーして、チャット アプリを開きます。 カードの質問の 1 つを選択し、回答を待ちます。
この記事の後半でもう一度必要になるため、エンドポイント URL を書き留めておきます。
プライベート アクセスを使用してチャット アプリを Azure にデプロイする
プライベート アクセス用のチャット アプリをセキュリティで保護するように展開構成を変更します。
仮想ネットワークにアクセスするために VPN ゲートウェイを使用するには、次のコマンドを実行します。
azd env set AZURE_USE_VPN_GATEWAY true次のコマンドを実行して、パブリック アクセスを無効にします。
azd env set AZURE_PUBLIC_NETWORK_ACCESS Disabled次のコマンドを実行して、リソース構成を変更します。 インフラストラクチャ構成のみが変更されたため、このコマンドはアプリケーション コードを再デプロイしません。
azd provisionプロビジョニングが完了したら、もう一度ブラウザーでチャット アプリを開きます。 パブリック エンドポイントが無効になっているため、チャット アプリにアクセスできなくなりました。
チャット アプリにアクセスする
チャット アプリにアクセスするには、
リソースのクリーンアップ
次の手順では、使用したリソースをクリーンアップするプロセスについて説明します。
GitHub Codespaces 環境を削除すると、アカウントに対して取得するコア時間単位の無料エンタイトルメントの量を最大化できます。
重要
GitHub アカウントの権利に関する詳細については、「GitHub Codespaces で毎月含まれるストレージとコア時間」を参照してください。
GitHub Codespaces ダッシュボードにサインインします。
Azure-Samples/azure-search-openai-demo GitHub リポジトリから入手した、ご自身の現在実行中のコードスペースを見つけてください。
コードスペースのコンテキスト メニューを開き、[の削除]
選択します。
ヘルプを受ける
このサンプル リポジトリでは、
問題が解決しない場合は、リポジトリの Issues Web ページに問題を追加します。
関連コンテンツ
- エンタープライズ チャット アプリの GitHub リポジトリを参照してください。
- Azure OpenAI ベスト プラクティス ソリューション アーキテクチャを使用して
チャット アプリを構築します。 - Azure AI Searchを使用した生成 AI アプリでの
アクセス制御について説明します。