次の方法で共有


チュートリアル: エンタープライズ チャット Web アプリをデプロイする

重要

この記事で "(プレビュー)" と付記されている項目は、現在、パブリック プレビュー段階です。 このプレビューはサービス レベル アグリーメントなしで提供されており、運用環境ではお勧めしません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。 詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。

この記事では、Azure AI Foundry ポータルで大規模言語モデルと共に独自のデータを使用するエンタープライズ チャット Web アプリをデプロイします。

データ ソースは、モデルを特定のデータで根拠付けるために使用されます。 根拠付けとは、質問のコンテキストを理解するために、モデルでデータを使用することを意味します。 デプロイされたモデルそのものを変えるわけではありません。 データは、元のデータ ソースに個別に安全に保存されます

このチュートリアルの手順は、次のとおりです。

  • リソースを構成します。
  • データを追加します。
  • データを使用してモデルをテストします。
  • Web アプリをデプロイします。

前提条件

  • Azure サブスクリプション。無料で作成できます

  • デプロイされた Azure OpenAI チャット モデル。 Azure AI Foundry プレイグラウンドのクイックスタートを実行して、このリソースを作成します (まだ実行していない場合)。

  • サンプル製品データのインデックスを作成するための検索サービス接続。 ない場合は、手順に従って検索サービスを作成し、接続します。

  • 製品データのローカル コピー。 GitHub の Azure-Samples/rag-data-openai-python-promptflow リポジトリには、このチュートリアル シナリオに関連するサンプルの小売製品情報が含まれています。 具体的には、product_info_11.md ファイルにはこのチュートリアルの例に関連する TrailWalker ハイキング シューズの製品情報が含まれます。 お使いのローカル コンピューターにサンプルの Contoso Trek 小売製品データの ZIP ファイルをダウンロードします。

  • 選択されているサブスクリプションに登録された Microsoft.Web リソース プロバイダー。Web アプリにデプロイできるようにするために必要です。 リソース プロバイダーの登録について詳しくは、「リソース プロバイダーを登録する」を参照してください。

  • Azure サブスクリプションでロールの割り当てを追加するために必要なアクセス許可。 ロールの割り当てによるアクセス許可の付与は、特定の Azure リソースの所有者によってのみ許可されます。

Azure AI Foundry ポータルと Azure portal

このチュートリアルでは、Azure AI Foundry ポータルでいくつかのタスクを実行し、Azure portal でもいくつかのタスクを実行します。

Azure AI Foundry ポータルは、AI モデルを構築、トレーニング、デプロイするための Web ベースの環境です。 ここで、開発者はチャット Web アプリケーションを構築してデプロイします。

Azure portal では、管理者は Azure リソースを管理して監視できます。 管理者は、このポータルを使用して、Web アプリからのアクセスに必要なさまざまな Azure サービスの設定を構成します。

Configure resources

重要

Azure サブスクリプションでロールの割り当てを追加するために必要なアクセス許可も必要です。 ロールの割り当てによるアクセス許可の付与は、特定の Azure リソースの所有者によってのみ許可されます。 Azure サブスクリプション所有者 (IT 管理者の場合もあります) に自分に代わってこのセクションを完了してくれるように依頼する必要がある場合があります。

リソースが Web アプリ内で正しく機能するためには、適切なアクセス許可を使用してリソースを構成する必要があります。 この作業は、Azure portal で行われます。

まず、Azure AI Foundry ポータルから構成する必要があるリソースを特定します。

  1. Azure AI Foundry ポータルを開き、Azure OpenAI チャット モデルのデプロイに使用したプロジェクトを選択します。

  2. 左側のペインから [管理センター] を選択します。

  3. プロジェクトの下で [接続済みリソース] を選択します。

  4. 構成する必要がある 3 つのリソースを特定します。すなわち、Azure OpenAIAzure AI 検索workspaceblobstore に対応する Azure Blob Storage です。

    構成する必要がある接続済みリソースを示すスクリーンショット。

    ヒント

    複数の Azure OpenAI リソースがある場合は、デプロイされたチャット モデルを含むリソースを使用します。

  5. リソースごとに、リンクを選択してリソースの詳細を開きます。 詳細ページで、リソース名を選択して、Azure portal でリソースを開きます。 (workspaceblobstore の場合は、[Azure portal に表示] を選択します)。

  6. ブラウザー タブが開いたら、Azure AI Foundry ポータルに戻り、次のリソースに対してプロセスを繰り返します。

  7. 完了したら、検索サービスAzure AI サービスblobstore コンテナーという 3 つの新しいブラウザー タブが開いているはずです。 リソースを構成するために 3 つの新しいタブを行き来するので、すべて開いたままにしておきます。

マネージド ID の有効化

Azure portal の検索サービス リソースのブラウザー タブで、マネージド ID を有効にします。

  1. 左ペインの [設定] で、[ID] を選択します。
  2. [ステータス][オン] に切り替えます。
  3. [保存] を選択します。

Azure portal の Azure AI サービス リソースのブラウザー タブで、マネージド ID を有効にします。

  1. 左ペインの [リソース管理] で、[ID] を選びます。
  2. [ステータス][オン] に切り替えます。
  3. [保存] を選択します。

Azure portal の検索サービス リソースのブラウザー タブで、API アクセス ポリシーを設定します。

  1. 左ペインの [設定] で、[キー] を選択します。
  2. [API アクセス制御] で、[両方] を選択します。
  3. メッセージが表示されたら [はい] を選択して変更を確認します。

ロールの割り当て

下の箇条書き項目で、このパターンを複数回繰り返します。

任意のリソースにロールベースのアクセス制御 (RBAC) を割り当てる一般的なパターンは次のとおりです。

  1. 指定したリソースに対して Azure portal に移動します。
  2. Azure portal の左側のページから、[アクセス制御 (IAM)] を選択します。
  3. [+ 追加]>[ロール割り当ての追加] の順に選択します。
  4. 割り当てる必要があるロールを検索して選択します。 [次へ] を選択します。
  5. 自分にロールを割り当てる場合:
    1. ユーザー、グループ、またはサービス プリンシパル を選択します。
    2. [メンバーの選択] を選びます。
    3. 自分の名前を検索して選択します。
  6. 別のリソースにロールを割り当てる場合:
    1. [マネージド ID] を選択します。
    2. [メンバーの選択] を選びます。
    3. ドロップダウンを使用して、割り当てるリソースの種類を見つけます。 たとえば、Azure AI サービス検索サービスなどです。
    4. 表示される一覧からリソースを選択します。 1 つしかない場合もありますが、それを選択する必要があります。
  7. ウィザードを続行し、[確認と割り当て] を選択してロールの割り当てを追加します。

このチュートリアルで構成するリソースのロールを割り当てるには、次の手順を使用します。

  • Azure portal の検索サービスのブラウザー タブで、次のロールを割り当てます。

    • 検索インデックス データ閲覧者Azure AI サービスのマネージド ID に割り当てます
    • 検索サービス共同作成者Azure AI サービスのマネージド ID に割り当てます
    • 共同作成者を自分に割り当てます (共同作成者を見つけ、上部にある [特権管理者ロール] タブに切り替えます。その他のロールはすべて、[職務権限ロール] タブにあります。)
  • Azure portal の Azure AI サービスのブラウザー タブで、次のロールを割り当てます。

    • Cognitive Services OpenAI 共同作成者検索サービスのマネージド ID に割り当てます
    • 共同作成者を自分に割り当てます。
  • Azure portal の Azure Blob Storage のブラウザー タブで、次のロールを割り当てます。

    • ストレージ BLOB データ共同作成者Azure AI サービスのマネージド ID に割り当てます
    • ストレージ BLOB データ共同作成者検索サービスのマネージド ID に割り当てます
    • 共同作成者を自分に割り当てます

これでリソースの構成が完了しました。 必要に応じて、Azure portal のブラウザー タブを閉じることができます。

データを追加してチャット モデルをもう一度試す

Azure AI Foundry プレイグラウンドのクイックスタート (このチュートリアルの前提条件) で、使用するモデルがデータなしのときにどのように応答するかを観察します。 ここで、製品に関する質問に答えられるように、モデルにデータを追加します。

このセクションを完了するには、製品データのローカル コピーが必要です。 GitHub の Azure-Samples/rag-data-openai-python-promptflow リポジトリには、このチュートリアル シナリオに関連するサンプルの小売製品情報が含まれています。 具体的には、product_info_11.md ファイルにはこのチュートリアルの例に関連する TrailWalker ハイキング シューズの製品情報が含まれます。 お使いのローカル コンピューターにサンプルの Contoso Trek 小売製品データの ZIP ファイルをダウンロードします。

以下の手順に従って、データをチャット プレイグラウンドに追加し、アシスタントが製品に関する質問に答えられるようにします。 デプロイされたモデルそのものを変えるわけではありません。 データは、Azure サブスクリプションに個別に安全に保存されます。

  1. Azure AI Foundry でプロジェクトに移動します。

  2. [プレイグラウンド] を選択します。

  3. [チャット プレイグラウンドを試す] を選択します。

  4. [デプロイメント] ドロップダウンから、デプロイされたチャット モデルを選択します。

    チャット モードとモデルが選択されているチャット プレイグラウンドのスクリーンショット。

  5. チャット プレイグラウンドの左側で、[データの追加 (プレビュー)]>[+ 新しいデータ ソースの追加] を選択します。

    データ ソースを追加するオプションが表示されているチャット プレイグラウンドのスクリーンショット。

  6. [データ ソース] ドロップダウンで、[ファイルのアップロード] を選択します。

    データ ソースを選択するオプションのスクリーンショット。

  7. [アップロード]>[ファイルのアップロード] を選択し、ローカル ファイルを参照します。

  8. アップロードするファイルを選択します。 前にダウンロードまたは作成した製品情報ファイルを選択します。 すべてのファイルを今すぐ追加します。 同じプレイグラウンド セッションで、後からファイルを追加することはできません。

  9. [アップロード] を選択して、Azure BLOB ストレージ アカウントにファイルをアップロードします。 [次へ] を選択します。

    ファイルを選択してアップロードするダイアログのスクリーンショット。

  10. Azure AI 検索サービスを選びます。

  11. [ベクトル インデックス名] に「product-info」と入力して [次へ] を選択します。

  12. [検索設定] ページの [ベクトル設定] で、[この検索リソースにベクトル検索を追加] チェック ボックスをオフにします。 この設定は、モデルがどのように要求に応答するかを決定するのに役立ちます。 [次へ] を選択します。

    Note

    ベクトル検索を追加する場合、ここで追加コストのためにさらに多くのオプションを使用できます。

  13. 設定を確認して [ベクトル インデックスの作成] を選択します。

  14. プレイグラウンドで、データ インジェストが進行中であることを確認できます。 この処理には数分かかる場合があります。 先に進む前に、状態の代わりにデータ ソースとインデックス名が表示されるまで待機します。

    ビュー内のデータ インジェストの状態を示すチャット プレイグラウンドのスクリーンショット。

  15. これで、モデルとチャットして前と同じ質問 ("TrailWalker のハイキング シューズはいくらですか") をすることができ、今回はご利用のデータからの情報を使って回答が作成されます。 参照ボタンを展開すると、使用されたデータを確認できます。

Web アプリのデプロイ

Azure AI Foundry ポータルでの体験に満足したら、モデルをスタンドアロンの Web アプリケーションとしてデプロイできます。

Azure portal でお使いのリソース グループを検索する

このチュートリアルでは、Web アプリは Azure AI Foundry ハブと同じリソース グループにデプロイされます。 後で、Azure portal で Web アプリの認証を構成します。

以下の手順に従って、Azure portal の次のリソース グループに移動します。

  1. Azure AI Foundry でプロジェクトに移動します。 左側のペインから [管理センター] を選択します。

  2. [プロジェクト] という見出しの下で [概要] を選択します。

  3. リソース グループ名を選択し、Azure portal でリソース グループを開きます。 この例では、リソース グループの名前は rg-sdg-ai です。

    Azure AI Foundry ポータルのリソース グループのスクリーンショット。

  4. これで、Azure portal に、ハブをデプロイしたリソース グループのコンテンツが表示されるはずです。 リソース グループの名前と場所に注意してください。この情報は次のセクションで使用します。

  5. ブラウザー タブでこのページを開いたままにします。後でこのページに戻ります。

Web アプリのデプロイ

発行すると、ご自分のサブスクリプションに Azure App Service が作成されます。 選択した価格プランによっては、コストが発生する場合があります。 アプリの使用が終了したら、Azure portal から削除できます。

Web アプリをデプロイするには、次のようにします。

重要

Web アプリにデプロイする前に、Microsoft.Web をリソース プロバイダーとして登録する必要があります。

  1. 前のセクションの手順を完了し、プレイグラウンドにデータを追加します。 (独自のデータを使用しても使用しなくても Web アプリをデプロイできますが、「Azure AI Foundry プレイグラウンドのクイックスタート」で説明したように、デプロイされたモデルが少なくとも必要です)。

  2. [デプロイ] > [...Web アプリとして] を選択します。

    新しい Web アプリをデプロイするボタンのスクリーンショット。

  3. [Web アプリにデプロイ] ページで、次の詳細を指定します。

    • 名前: Web アプリの一意の名前。
    • サブスクリプション:Azure サブスクリプション。 使用可能なサブスクリプションが表示されない場合は、まず、Microsoft.Web をリソース プロバイダーとして登録します
    • [リソース グループ]: Web アプリをデプロイするリソース グループを選びます。 ハブと同じリソース グループを使用します。
    • 場所: Web アプリをデプロイする場所を選択します。 ハブと同じ場所を使用します。
    • 料金プラン: Web アプリの料金プランを選択します。
    • Web アプリでチャット履歴を有効にする: チュートリアルでは、[チャット履歴] ボックスが選択されていません。 この機能を有効にすると、ユーザーは以前の個々のクエリと応答にアクセスできます。 詳細については、「チャット履歴の解説」を参照してください。
  4. 展開 を選択します。

  5. アプリがデプロイされるのを待ちます (数分かかる場合があります)。

  6. 準備ができたら、ツールバーの [起動] ボタンが有効になります。 ただし、まだアプリを起動せず、チャット プレイグラウンド ページも閉じないでください。後で戻ってきます。

Web アプリ認証の構成

既定では、Web アプリにはユーザーのみがアクセスできます。 このチュートリアルでは、認証を追加してアプリへのアクセスを Azure テナントのメンバーに制限します。 ユーザーは自分の Microsoft Entra アカウントでサインインして、アプリにアクセスできます。 必要に応じて、同様のプロセスに従って別の ID プロバイダーを追加できます。 アプリでは、ユーザーのサインイン情報は、ユーザーがテナントのメンバーであることを確認する以外の用途では使用されません。

  1. Azure portal を含むブラウザー タブに戻り (または新しいブラウザー タブで Azure portal をもう一度開き)、Web アプリをデプロイしたリソース グループの内容を表示します (Web アプリを表示するには、表示を更新することが必要になる場合があります)。

  2. リソース グループのリソースの一覧で、App Service リソースを選択します。

  3. [設定] の下にある折りたたみ可能な左メニューから、[認証] を選択します。

    Azure portal の [Web アプリ] の [設定] の下にある [認証] メニュー項目のスクリーンショット。

  4. このページに Microsoft が ID プロバイダーとして表示されている場合は、これ以上何も必要ありません。 次の手順は省略できます。

  5. 次の設定を使用して ID プロバイダーを追加します。

    • ID プロバイダー: ID プロバイダーとして Microsoft を選択します。 このページの既定の設定では、アプリはテナントのみに制限されるため、ここで他の設定を変更する必要はありません。
    • テナントの種類: ワークフォース
    • アプリ登録: 新しいアプリ登録を作成する
    • 名前: Web アプリ サービスの名前
    • サポートされているアカウントの種類: 現在のテナント - 単一テナント
    • アクセスの制限: 認証が必要
    • 認証されていない要求: HTTP 302 リダイレクトが見つかりました - Web サイトに推奨

Web アプリを使用する

もう少しです。 これで Web アプリをテストできます。

  1. 設定を変更した場合は、認証設定が有効になるまで 10 分ほどお待ちください。

  2. Azure AI Foundry ポータルのチャット プレイグラウンド ページを含むブラウザー タブに戻ります。

  3. [起動] を選択して、デプロイされた Web アプリを起動します。 プロンプトが表示されたら、アクセス許可要求に同意してください。

    認証設定がまだ有効になっていない場合は、Web アプリのブラウザー タブを閉じて、Azure AI Foundry ポータルのチャット プレイグラウンドに戻ります。 その後もう少しお待ちいただき、もう一度お試しください。

  4. Web アプリで、前と同じ質問 ("TrailWalker のハイキング シューズはいくらですか") をすることができ、今回はご利用のデータからの情報を使って回答が作成されます。 [参照] ボタンを展開すると、使用されたデータを確認できます。

    デプロイ済みの Web アプリを使用したチャット エクスペリエンスのスクリーンショット。

チャット履歴を理解する

チャット履歴機能を使用することで、ユーザーは以前の個々のクエリと応答にアクセスできます。

Web アプリをデプロイすると、チャット履歴を有効にすることができます。 [Web アプリでチャット履歴を有効にする] チェック ボックスをオンにします。

Web アプリをデプロイ中にチャット履歴を有効にするオプションのスクリーンショット。

重要

チャット履歴を有効にすると、リソース グループに Cosmos DB インスタンスが作成され、使用されるストレージに対して追加料金が発生します。 Web アプリを削除しても、Cosmos DB インスタンスは自動的に削除されません。 保存されているすべてのチャットと共に Cosmos DB インスタンスを削除するには、Azure portal 内の関連付けられたリソースに移動して削除する必要があります。

チャット履歴を有効にしたら、ユーザーはこれをアプリの右上隅で表示または非表示にすることができます。 履歴が表示されると、会話の名前の変更や削除を行うことができます。 アプリにログインすると、会話が最も新しいものから最も古いものに自動的に並び替えられ、会話内の最初のクエリに基づいて名前が付けられます。

Cosmos DB リソースを削除したが Studio でチャット履歴オプションを有効にしたままにしている場合、ユーザーは接続エラーの通知を受け取りますが、チャット履歴にアクセスしなくても引き続き Web アプリを使用できます。

Web アプリを更新する

プレイグラウンドを使用して、データを追加したり、さまざまなシナリオでモデルをテストしたりします。 新しいモデルで Web アプリを更新する準備ができたら、[デプロイ] > [...Web アプリとして] を選択します。 [Update an existing web app]\(既存の Web アプリを更新する\) を選択し、一覧から既存の Web アプリを選びます。 新しいモデルが既存の Web アプリにデプロイされます。

リソースをクリーンアップする

不要な Azure コストが発生しないように、このクイックスタートで作成したリソースが不要になったら削除してください。 リソースを管理するために、Azure portal を使用できます。