次の方法で共有


Python 用チャットプライベートエンドポイントの使い始め方

この記事では、プライベート エンドポイントからアクセスできる Python 用の エンタープライズ チャット アプリ サンプルをデプロイして実行する方法について説明します。

このサンプルでは、Azure AI Search で Python、Azure OpenAI Service、取得拡張生成 (RAG) を使用してチャット アプリを実装し、架空の会社の従業員の特典に関する回答を取得します。 このアプリには、従業員ハンドブック、特典ドキュメント、会社の役割と期待の一覧を含む PDF ファイルがシードされます。

この記事の手順に従うと、次の操作を実行できます。

  • Web ブラウザーでパブリック アクセスのためにチャット アプリを Azure にデプロイします。
  • プライベート エンドポイントを使用してチャット アプリを再デプロイします。

この手順が完了したら、カスタム コードを使用して新しいプロジェクトの変更を開始し、再デプロイできます。チャット アプリにはプライベート ネットワーク経由でのみアクセスできることを認識します。

アーキテクチャの概要

既定のデプロイでは、パブリック エンドポイントを含むチャット アプリが作成されます。

基本的な RAG チャット アプリのネットワーク アーキテクチャを示す 図。

プライベート データで強化されたチャット アプリの場合、チャット アプリへのアクセスをセキュリティで保護することが重要です。 この記事では、仮想ネットワークを使用したソリューションについて説明します。

Azure 仮想ネットワーク内のすべてのサービスを含むネットワーク アーキテクチャを示す図。

仮想ネットワーク内には、Azure App Service アプリ用と他のバックエンド Azure サービス用の別のサブネットがあります。 この構造により、各サブネットに異なるネットワーク セキュリティ グループ規則を簡単に適用できます。

仮想ネットワーク内のチャット アプリ サブネットとバックエンド サブネットを示す図。

仮想ネットワーク内では、サービスはプライベート エンドポイントを使用して相互に通信します。 各プライベート エンドポイントは、プライベート エンドポイントの名前を仮想ネットワーク内の IP アドレスに解決するために、プライベート ドメイン ネーム システム (DNS) ゾーンに関連付けられています。

仮想ネットワーク内の Azure OpenAI のプライベート エンドポイントとプライベート DNS ゾーンを示す図。

デプロイの手順

ソリューションを 2 回デプロイすることをお勧めします。 パブリック アクセスを使用して 1 回デプロイし、チャット アプリが正しく動作していることを検証します。 仮想ネットワークを使用してチャット アプリをセキュリティで保護するために、プライベート アクセスを使用してもう一度デプロイします。

前提 条件

開発コンテナー 環境は、この記事を完了するために必要なすべての依存関係で使用できます。 開発コンテナーは、GitHub Codespaces (ブラウザー) で実行することも、Visual Studio Code を使用してローカルで実行することもできます。

この記事を使用するには、次の前提条件が必要です。

  • Azure サブスクリプション。 無料で1つ作成してください
  • Azure アカウントのアクセス許可。 Azure アカウントには、アクセス管理者 Microsoft.Authorization/roleAssignments/write または所有者 など、 権限が必要です。
  • GitHub アカウント。

サンプル リソースの使用コスト

このアーキテクチャで使用されるほとんどのリソースは、基本または従量課金ベースの価格レベルに分類されます。 つまり、使用した分だけ料金が発生し、通常は開発またはテスト中に料金が最小限に抑えられます。

プライベート ネットワークを使用してデプロイすると、デプロイに追加コストが追加されます。 アプリの評価またはデプロイが完了したら、プロビジョニングされたすべてのリソースを削除して、継続的な料金を回避できます。

予想されるコストの詳細な内訳については、サンプルの GitHub リポジトリで 始める前 に参照してください。

オープン開発環境

この記事を完了するために必要なすべての依存関係を含む、構成済みの開発環境をデプロイするには、次の手順に従います。

GitHub Codespaces は、Web 用の Visual Studio Code ユーザー インターフェイスとして GitHub によって管理される開発コンテナーを実行します。 最も簡単な開発環境では、GitHub Codespaces を使用して、この記事を完了するために正しい開発者ツールと依存関係がプレインストールされるようにします。

重要

すべての GitHub アカウントでは、2 つのコア インスタンスで毎月最大 60 時間無料で GitHub Codespaces を使用できます。 詳細については、GitHub Codespaces の毎月含まれるストレージとコア時間を参照してください。

  1. main GitHub リポジトリの ブランチに新しい GitHub コードスペースを作成するプロセスを開始します。

  2. 次のボタンを右クリックし、新しいウィンドウでリンクを開く を選択して、開発環境とドキュメントを同時に利用できるようにします。

    GitHub Codespaces で開きます。

  3. [コードスペース の作成] ページで、コードスペースの設定構成を確認し、[コードスペースの作成] を選択します。

    新しいコードスペースを作成する前の確認画面を示すスクリーンショット。

  4. コードスペースが起動するまで待ちます。 このスタートアップ プロセスには数分かかる場合があります。

  5. 画面の下部にあるターミナルで、Azure Developer CLI を使用して Azure にサインインします。

    azd auth login
    
  6. ターミナルからコードをコピーし、ブラウザーに貼り付けます。 手順に従って、Azure アカウントで認証します。

この記事の残りのタスクは、この開発コンテナーのコンテキストで行われます。

カスタム設定

このソリューションでは、Azure Developer CLI で構成されたカスタム設定に基づいてインフラストラクチャを構成してデプロイします。 次の表では、このソリューションのカスタム設定について説明します。

設定 説明
AZURE_PUBLIC_NETWORK_ACCESS サポートされている Azure リソースのパブリック ネットワーク アクセスの値を制御します。 有効な値は、Enabled または Disabledです。
AZURE_USE_PRIVATE_ENDPOINT Azure リソースを仮想ネットワークに接続するプライベート エンドポイントのデプロイを制御します。 TRUE 値は、接続のためにプライベート エンドポイントがデプロイされることを意味します。
AZURE_USE_VPN_GATEWAY 仮想ネットワークの VPN ゲートウェイのデプロイを制御します。 これを使用せず、パブリック アクセスが無効になっている場合は、仮想ネットワークに接続するための別の方法が必要です。 TRUE値は、接続用に VPN ゲートウェイがデプロイされることを意味します。

チャット アプリを展開する

最初のデプロイでは、リソースが作成され、パブリックにアクセスできるエンドポイントが提供されます。

  1. 次のコマンドを実行して、このソリューションをパブリック アクセス用に構成します。

    azd env set AZURE_PUBLIC_NETWORK_ACCESS Enabled
    

    環境名の入力を求められたら、環境名を使用してリソース グループを作成することを忘れないでください。 わかりやすい名前を入力します。 チームまたは組織内にいる場合は、morgan-chat-private-endpointsのように名前を含めます。 環境名を書き留めます。 Azure portal でリソースを検索するには、後で必要になります。

  2. 次のコマンドを実行して、仮想ネットワーク リソースのプロビジョニングを含めます。 デプロイでは、2 つ目のデプロイまでアクセスが制限されない点に注意してください。

    azd env set AZURE_USE_PRIVATE_ENDPOINT true
    
  3. 次のコマンドを使用してソリューションをデプロイします。

    azd up
    

    リソースのプロビジョニングは、デプロイ プロセスの最も時間のかかる部分です。 デプロイが完了するまで待ってから続行します。

  4. デプロイ プロセスの最後に、アプリ エンドポイントが表示されます。 そのエンドポイントをブラウザーにコピーして、チャット アプリを開きます。 カードの質問の 1 つを選択し、回答を待ちます。

    この記事の後半でもう一度必要になるため、エンドポイント URL を書き留めておきます。

プライベート アクセスを使用してチャット アプリを Azure にデプロイする

プライベート アクセス用のチャット アプリをセキュリティで保護するように展開構成を変更します。

  1. 仮想ネットワークにアクセスするために VPN ゲートウェイを使用するには、次のコマンドを実行します。

    azd env set AZURE_USE_VPN_GATEWAY true
    
  2. 次のコマンドを実行して、パブリック アクセスを無効にします。

    azd env set AZURE_PUBLIC_NETWORK_ACCESS Disabled
    
    
  3. 次のコマンドを実行して、リソース構成を変更します。 インフラストラクチャ構成のみが変更されたため、このコマンドはアプリケーション コードを再デプロイしません。

    azd provision
    
  4. プロビジョニングが完了したら、もう一度ブラウザーでチャット アプリを開きます。 パブリック エンドポイントが無効になっているため、チャット アプリにアクセスできなくなりました。

チャット アプリにアクセスする

チャット アプリにアクセスするには、Azure VPN Gateway や Azure Virtual Desktopなどのツールを使用します。 アプリへのアクセスに使用するツールは、セキュリティで保護され、組織のセキュリティ ポリシーに準拠している必要があります。

リソースのクリーンアップ

次の手順では、使用したリソースをクリーンアップするプロセスについて説明します。

GitHub Codespaces 環境を削除すると、アカウントに対して取得するコア時間単位の無料エンタイトルメントの量を最大化できます。

重要

GitHub アカウントの権利に関する詳細については、「GitHub Codespaces で毎月含まれるストレージとコア時間」を参照してください。

  1. GitHub Codespaces ダッシュボードにサインインします。

  2. Azure-Samples/azure-search-openai-demo GitHub リポジトリから入手した、ご自身の現在実行中のコードスペースを見つけてください。

    状態とテンプレートを含むすべての実行中のコード空間を示すスクリーンショット。

  3. コードスペースのコンテキスト メニューを開き、[の削除] 選択します。

    [削除] オプションが強調表示されている 1 つのコードスペースのコンテキスト メニューを示すスクリーンショット。

ヘルプを受ける

このサンプル リポジトリでは、トラブルシューティング情報を提供します。

問題が解決しない場合は、リポジトリの Issues Web ページに問題を追加します。