この記事では、Microsoft Foundry ポータルで大規模な言語モデルでデータを使用するエンタープライズ チャット Web アプリをデプロイします。
データ ソースは、特定のデータを典拠としてモデルを支えます。 典拠とは、モデルがデータを使用して質問のコンテキストを理解することを意味します。 デプロイされたモデル自体は変更されません。 データは元のデータ ソース内に保持され、分離され安全に保護されます。
このチュートリアルの手順は、次のとおりです。
- リソースを構成します。
- データを追加します。
- データを使用してモデルをテストします。
- Web アプリをデプロイします。
[前提条件]
注
このドキュメントでは、 Microsoft Foundry (クラシック) ポータルのみを参照しています。
この機能には ハブ ベースのプロジェクト を使用する必要があります。 Foundry プロジェクトはサポートされていません。 「 自分が持っているプロジェクトの種類を確認する方法 」と 「ハブベースのプロジェクトを作成する」を参照してください。
- アクティブなサブスクリプションを持つ Azure アカウント。 お持ちでない場合は、 無料試用版サブスクリプションを含む無料の Azure アカウントを作成します。
- ない場合は、 ハブベースのプロジェクトを作成します。
展開された Azure OpenAI チャット モデル。 このリソースがない場合は、Foundry プレイグラウンドのクイックスタートを完了してこのリソースを作成します。
サンプル製品データのインデックスを作成するための検索サービス接続。 ない場合は、手順に従って検索サービスを作成し、接続します。
製品データのローカル コピー。 GitHub の Azure-Samples/rag-data-openai-python-promptflow リポジトリには、このチュートリアル シナリオのサンプル小売製品情報が含まれています。
product_info_11.mdファイルには、このチュートリアルの例の TrailWalker ハイキング シューズの製品情報が含まれています。 お使いのローカル コンピューターにサンプルの Contoso Trek 小売製品データの ZIP ファイルをダウンロードします。Web アプリにデプロイできるように、選択したサブスクリプションに登録されている Microsoft.Web リソース プロバイダー。 リソース プロバイダーの登録について詳しくは、「リソース プロバイダーの登録」を参照してください。
Azure サブスクリプションでロールの割り当てを追加するために必要なアクセス許可。 ロールの割り当てによってアクセス許可を付与できるのは、特定の Azure リソースの所有者だけです。
Foundry ポータルと Azure portal
このチュートリアルでは、Foundry ポータルでいくつかのタスクを実行し、Azure portal でいくつかのタスクを実行します。
Foundry ポータルは、AI モデルを構築、トレーニング、デプロイするための Web ベースの環境です。 開発者は、ここでチャット Web アプリケーションを構築およびデプロイします。
Azure portal を使用すると、管理者は Azure リソースを管理および監視できます。 管理者は、ポータルを使用して、Web アプリからのアクセスに必要なさまざまな Azure サービスの設定を設定します。
リソースの構成
重要
Azure サブスクリプションでロールの割り当てを追加するために必要なアクセス許可も必要です。 ロールの割り当てによるアクセス許可の付与は、特定の Azure リソースの所有者によってのみ許可されます。 Azure サブスクリプション所有者 (IT 管理者の場合もあります) に自分に代わってこのセクションを完了してくれるように依頼する必要がある場合があります。
Web アプリでリソースを正しく動作させるには、Azure portal で適切なアクセス許可を設定します。
まず、Foundry ポータルで設定する必要があるリソースを特定します。
Foundry ポータルを開き、Azure OpenAI チャット モデルのデプロイに使用したハブベースのプロジェクトを選択します。
左側のペインから [管理センター] を選択します。
プロジェクトの下で [接続済みリソース] を選択します。
構成する必要がある 3 つのリソースを特定します。すなわち、Azure OpenAI、Azure AI 検索、workspaceblobstore に対応する Azure Blob Storage です。
ヒント
テーブルに [種類] が表示されない場合は、右上隅にある [列] を選択し、[ 選択した列] に追加または並べ替えます。 複数の Azure OpenAI リソースがある場合は、デプロイされたチャット モデルを含むリソースを使用します。
Azure portal でこれらの名前をそれぞれ検索します。 それぞれを新しいブラウザー タブで開き、切り替えられるようにします。
完了すると、3 つの新しいブラウザー タブ ( Search Service、 Foundry、 blobstore Container) が開きます。 リソースを設定する際にこれらのタブを切り替えるので、3 つのタブはすべて開いたままにしておきます。
マネージド ID の有効化
Azure portal の [Search Service] リソースのブラウザー タブで、マネージド ID を有効にします。
- 左側のペインの [リソース管理] で、[ID] を選択します。
- [ステータス] を [オン] に切り替えます。
- 保存 を選択します。
Azure portal の Foundry リソースのブラウザー タブで、マネージド ID を有効にします。
- 左側のペインの [リソース管理] で、[ID] を選択します。
- [ステータス] を [オン] に切り替えます。
- 保存 を選択します。
検索のアクセス制御を設定する
Azure portal の [Search Service] リソースのブラウザー タブで、API アクセス ポリシーを設定します。
- 左側のペインの [設定] で、[キー] を選択します。
- [API アクセス制御] で、[両方] を選択します。
- メッセージが表示されたら、[はい] を選択して確定します。
ロールを割り当てる
以下の手順で、リソースごとにこのパターンを繰り返します。
任意のリソースにロールベースのアクセス制御 (RBAC) を割り当てる一般的なパターンは次のとおりです。
- 指定したリソースに対して Azure portal に移動します。
- Azure portal の左側のページから、[アクセス制御 (IAM)] を選択します。
- [+ 追加]>[ロール割り当ての追加] の順に選択します。
- 割り当てる必要があるロールを検索して選択します。 次に、[次へ] を選択します。
- 自分にロールを割り当てる場合:
- ユーザー、グループ、またはサービス プリンシパル を選択します。
- [メンバーの選択] を選びます。
- 自分の名前を検索して選択します。
- 別のリソースにロールを割り当てる場合:
- [ マネージド ID] を選択します。
- [メンバーの選択] を選びます。
- ドロップダウンを使用して、割り当てるリソースの種類を見つけます。 たとえば、 Foundry Tools や Search Service などです。
- 表示される一覧からリソースを選択します。 1 つしかない場合もありますが、それを選択する必要があります。
- ウィザードを続行し、[確認と割り当て] を選択してロールの割り当てを追加します。
このチュートリアルで設定したリソースにロールを割り当てるには、次の手順に従います。
Azure portal の [Search Service] のブラウザー タブで、次のロールを割り当てます。
- 検索用インデックスデータリーダー を Foundry マネージド ID に
- Search Service 共同作成者を Foundry のマネージド ID に割り当てます
- 共同作成者を自分に割り当てます (共同作成者を見つけるには、上部にある [特権管理者ロール] タブに切り替えます。その他のロールはすべて、[職務権限ロール] タブにあります。)
Azure portal の Foundry のブラウザー タブで、次のロールを割り当てます。
- Cognitive Services OpenAI 共同作成者を検索サービスのマネージド ID に割り当てます
- 共同作成者を自分に割り当てます。
Azure portal の [Azure Blob Storage] のブラウザー タブで、次のロールを割り当てます。
- ストレージ BLOB データ共同作成者をFoundry のマネージド ID に割り当てる
- ストレージ BLOB データ共同作成者を検索サービスのマネージド ID に割り当てます
- 共同作成者を自分に割り当てます
リソースの設定が完了しました。 必要に応じて、Azure portal ブラウザー タブを閉じることができます。
データを追加してチャット モデルをもう一度試す
Foundry プレイグラウンドのクイックスタート (このチュートリアルの前提条件です) では、データなしでモデルがどのように応答するかを確認できます。 モデルにデータを追加して、製品に関する質問に答えられるようにします。
このセクションを完了するには、製品データのローカル コピーが必要です。
GitHub の Azure-Samples/rag-data-openai-python-promptflow リポジトリには、このチュートリアル シナリオに関連するサンプルの小売製品情報が含まれています。 具体的には、product_info_11.md ファイルにはこのチュートリアルの例に関連する TrailWalker ハイキング シューズの製品情報が含まれます。
お使いのローカル コンピューターにサンプルの Contoso Trek 小売製品データの ZIP ファイルをダウンロードします。
以下の手順に従って、データをチャット プレイグラウンドに追加し、アシスタントが製品に関する質問に答えられるようにします。 デプロイされたモデルそのものを変えるわけではありません。 データは、Azure サブスクリプションに個別に安全に保存されます。
Microsoft Foundry のプロジェクトに移動します。
左側のウィンドウから [プレイグラウンド ] を選択します。
[チャット プレイグラウンドを試す] を選択します。
[デプロイメント] ドロップダウンから、デプロイされたチャット モデルを選択します。
チャット プレイグラウンドの左側で、[データの追加]>[+ 新しいデータ ソースの追加] を選択します。
[データ ソース] ドロップダウンで、[ファイルのアップロード] を選択します。
[アップロード]>[ファイルのアップロード] を選択し、ローカル ファイルを参照します。
アップロードするファイルを選択します。 前にダウンロードまたは作成した製品情報ファイルを選択します。 すべてのファイルを今すぐ追加します。 同じプレイグラウンド セッションで、後からファイルを追加することはできません。
[アップロード] を選択して、Azure BLOB ストレージ アカウントにファイルをアップロードします。 次に、[次へ] を選択します。
Azure AI 検索サービスを選びます。
[ベクトル インデックス名] に「product-info」と入力して [次へ] を選択します。
[検索設定] ページの [ベクトル設定] で、[この検索リソースにベクトル検索を追加] チェック ボックスをオフにします。 この設定は、モデルがどのように要求に応答するかを決定するのに役立ちます。 次に、[次へ] を選択します。
注
ベクトル検索を追加する場合、ここで追加コストのためにさらに多くのオプションを使用できます。
設定を確認して [ベクトル インデックスの作成] を選択します。
プレイグラウンドで、データ インジェストが進行中であることを確認できます。 この処理には数分かかる場合があります。 先に進む前に、状態の代わりにデータ ソースとインデックス名が表示されるまで待機します。
これで、モデルとチャットして前と同じ質問 ("TrailWalker のハイキング シューズはいくらですか") をすることができ、今回はご利用のデータからの情報を使って回答が作成されます。 参照ボタンを展開すると、使用されたデータを確認できます。
Web アプリのデプロイ
Foundry ポータルでのエクスペリエンスに満足したら、モデルをスタンドアロン Web アプリケーションとしてデプロイします。
Azure portal でお使いのリソース グループを検索する
このチュートリアルでは、 Foundry ハブと同じリソース グループに Web アプリをデプロイします。 Azure portal で Web アプリの認証を設定します。
Azure portal でリソース グループに移動するには、次の手順に従います。
Foundry のプロジェクトに移動します。 左側のペインから [管理センター] を選択します。
[プロジェクト] という見出しの下で [概要] を選択します。
リソース グループ名を選択し、Azure portal でリソース グループを開きます。 この例では、リソース グループの名前は
rg-sdg-aiです。これで Azure portal にハブをデプロイしたリソース グループの内容が表示されています。 リソース グループの名前と場所をメモします。 この情報は、次のセクションで使用します。
このページはブラウザー タブで開いたままにしておいてください。後で戻ってきます。
Web アプリのデプロイ
発行すると、ご自分のサブスクリプションに Azure App Service が作成されます。 選択した価格プランによっては、コストが発生する場合があります。 アプリの使用が終わったら、Azure portal から削除します。
Web アプリをデプロイするには、次のようにします。
重要
Web アプリにデプロイする前に、Microsoft.Web をリソース プロバイダーとして登録します。
前のセクションの手順を完了し、プレイグラウンドにデータを追加します。 独自のデータの有無にかかわらず Web アプリをデプロイできますが、 Foundry プレイグラウンドのクイックスタートで説明されているように、デプロイされたモデルが必要です。
[デプロイ] > [...Web アプリとして] を選択します。
[Web アプリにデプロイ] ページで、次の詳細を指定します。
- 名前: Web アプリの一意の名前。
- [サブスクリプション]: Azure のサブスクリプション。 使用可能なサブスクリプションが表示されない場合は、まず、Microsoft.Web をリソース プロバイダーとして登録します。
- [リソース グループ]: Web アプリをデプロイするリソース グループを選びます。 ハブと同じリソース グループを使用します。
- 場所: Web アプリをデプロイする場所を選択します。 ハブと同じ場所を使用します。
- 料金プラン: Web アプリの料金プランを選択します。
- Web アプリでチャット履歴を有効にする: チュートリアルでは、[チャット履歴] ボックスが選択されていません。 この機能を有効にすると、ユーザーは以前の個々のクエリと応答にアクセスできます。 詳細については、「チャット履歴の解説」を参照してください。
[デプロイ] を選択します。
アプリがデプロイされるまで待ちます。 このプロセスには数分かかる場合があります。
準備ができたら、ツールバーの [起動] ボタンが有効になります。 まだアプリを起動しないでください。チャット プレイグラウンド ページも閉じないでください。後で戻ってきます。
Web アプリ認証の構成
既定では、Web アプリにアクセスできるのはあなただけです。 このチュートリアルでは、Azure テナントのメンバーへのアクセスを制限する認証を追加します。 ユーザーは Microsoft Entra アカウントでサインインし、アプリにアクセスします。 必要に応じて、同様のプロセスに従って別の ID プロバイダーを追加できます。 アプリでは、ユーザーのサインイン情報のみを使用して、ユーザーがテナントのメンバーであることを確認します。
Azure portal でブラウザー タブに戻るか、新しいブラウザー タブで Azure portal を開きます。Web アプリをデプロイしたリソース グループの内容を表示します。 Web アプリを表示するには、ビューの更新が必要になる場合があります。
リソース グループのリソースの一覧で、App Service リソースを選択します。
[設定] の下にある折りたたみ可能な左メニューから、[認証] を選択します。
このページに Microsoft が ID プロバイダーとして表示されている場合は、これ以上何も必要ありません。 次の手順は省略できます。
次の設定を使用して ID プロバイダーを追加します。
- ID プロバイダー: ID プロバイダーとして Microsoft を選択します。 このページの既定の設定では、アプリはテナントのみに制限されるため、ここで他の設定を変更する必要はありません。
- テナントの種類: ワークフォース
- アプリ登録: 新しいアプリ登録を作成する
- 名前: Web アプリ サービスの名前
- サポートされているアカウントの種類: 現在のテナント - 単一テナント
- アクセスの制限: 認証が必要
- 認証されていない要求: HTTP 302 リダイレクトが見つかりました - Web サイトに推奨
Web アプリを使用する
もう少しです。 これで Web アプリをテストできます。
設定を変更した場合は、認証設定が有効になるまで約 10 分待ちます。
Foundry ポータルのチャットプレイグラウンド ページが表示されたブラウザー タブに戻ります。
[起動] を選択して、デプロイされた Web アプリを開きます。 プロンプトが表示されたら、アクセス許可要求に同意してください。
プレイグラウンドに [起動] が表示されない場合は、左側のペインから [Web Apps] を選択し、一覧からアプリを選択して開きます。
認証設定がまだアクティブでない場合は、Web アプリのブラウザー タブを閉じて、Foundry ポータルのチャットプレイグラウンドに戻ります。 もう少し待ってから、もう一度やり直してください。
Web アプリで、前と同じ質問をします ("TrailWalker ハイキング シューズの価格はいくらですか")。 今回は、アプリはデータからの情報を使用して応答を構築します。 [参照]ボタンを展開して、使用されているデータを表示します。
チャット履歴を理解する
チャット履歴機能を使用すると、ユーザーは以前のクエリと応答を確認できます。
Web アプリをデプロイするときにチャット履歴を有効にします。 [Web アプリでチャット履歴を有効にする] チェック ボックスをオンにします。
重要
チャット履歴を有効にすると、リソース グループに Cosmos DB インスタンスが作成され、使用されるストレージに対して追加料金が発生します。 Web アプリを削除しても、Cosmos DB インスタンスは自動的に削除されません。 Cosmos DB インスタンスと保存されているすべてのチャットを削除するには、Azure portal で関連付けられているリソースに移動して削除します。
チャット履歴を有効にすると、ユーザーはアプリの右上隅でチャット履歴を表示または非表示にすることができます。 履歴が表示されたら、会話の名前を変更または削除できます。 アプリにサインインすると、会話は最新のものから最も古いものの順に並べられ、会話の最初のクエリに基づいて名前が付けられます。
Cosmos DB リソースを削除しても、スタジオでチャット履歴オプションを有効のままにすると、ユーザーに接続エラーが表示されますが、チャット履歴なしで Web アプリを引き続き使用できます。
Web アプリを更新する
プレイグラウンドを使用して、データを追加したり、さまざまなシナリオでモデルをテストしたりします。 新しいモデルで Web アプリを更新する準備ができたら、[デプロイ] > [...Web アプリとして] を選択します。 [既存の Web アプリを更新する] を選択し、一覧から既存の Web アプリを選択します。 新しいモデルが既存の Web アプリにデプロイされます。
リソースをクリーンアップする
不要な Azure コストを回避するため、このクイック スタートで作成したリソースが不要な場合は削除します。 Azure portal でリソースを管理します。