このソリューションは、RAG (検索拡張生成) を使用して、独自のドキュメントに対して ChatGPT のようなフロントエンド エクスペリエンスを作成します。 Azure OpenAI Service を使用して GPT モデルにアクセスし、Azure AI Search を使用してデータのインデックス作成と取得を行います。
このソリューションのバックエンドは Python で書かれています。これをベースにしたJavaScript 、 .NET 、およびJava のサンプルもあります。 Azure AI Services を使用した AI アプリの開発について詳しく学習します。
アプリの概要をビデオでご覧ください。
このサンプルでは、取得拡張生成パターンを使用して独自のデータに対して ChatGPT のようなエクスペリエンスを作成するためのいくつかのアプローチを示します。 Azure OpenAI Service を使用して GPT モデル (gpt-35-turbo) にアクセスし、Azure AI Search を使用してデータのインデックス作成と取得を行います。
リポジトリにはサンプル データが含まれているため、すぐにエンドツーエンドで試すことができます。このサンプル アプリケーションでは、Contoso Electronics という架空の会社を使用します。このエクスペリエンスにより、従業員は福利厚生、内部ポリシー、職務内容や役割について質問できるようになります。
重要:この例をデプロイして実行するには、以下が必要です。
Microsoft.Authorization/roleAssignments/write
アクセス許可が必要です。サブスクリプション レベルのアクセス許可がない場合は、既存のリソース グループに対する RBAC を付与され、その既存のグループにデプロイする必要があります。Microsoft.Resources/deployments/write
アクセス許可も必要です。価格は地域や使用量によって異なるため、使用量に対する正確なコストを予測することはできません。ただし、以下のリソースについては Azure 料金計算ツールを試すことができます。
コストを削減するために、さまざまなサービスを無料の SKU に切り替えることができますが、それらの SKU には制限があります。詳細については、最小限のコストでの導入に関するこのガイドを参照してください。
azd down
実行して、必ずアプリを削除してください。
このプロジェクトを設定するには、いくつかのオプションがあります。最も簡単に始める方法は GitHub Codespaces です。これによりすべてのツールがセットアップされますが、必要に応じてローカルにセットアップすることもできます。
GitHub コードスペースを使用すると、このリポジトリを仮想的に実行できます。これにより、ブラウザで Web ベースの VS Code が開きます。
コードスペースが開いたら (これには数分かかる場合があります)、ターミナル ウィンドウを開きます。
関連するオプションは VS Code Dev Containers です。これは、Dev Containers 拡張機能を使用してローカル VS Code でプロジェクトを開きます。
Docker Desktop を起動します (まだインストールされていない場合はインストールします)
プロジェクトを開きます。
開いた VS Code ウィンドウで、プロジェクト ファイルが表示されたら (これには数分かかる場合があります)、ターミナル ウィンドウを開きます。
必要なツールをインストールします。
python --version
実行できることを確認してください。 Ubuntu では、 sudo apt install python-is-python3
を実行してpython
python3
にリンクする必要がある場合があります。pwsh.exe
を実行できることを確認してください。これが失敗した場合は、PowerShell をアップグレードする必要がある可能性があります。新しいフォルダーを作成し、ターミナルでそのフォルダーに切り替えます。
次のコマンドを実行してプロジェクト コードをダウンロードします。
azd init -t azure-search-openai-demo
このコマンドは git リポジトリを初期化するため、このリポジトリのクローンを作成する必要がないことに注意してください。
以下の手順では、Azure リソースをプロビジョニングし、アプリケーション コードを Azure Container Apps にデプロイします。代わりに Azure App Service にデプロイするには、App Service デプロイ ガイドに従ってください。
Azure アカウントにログインします。
azd auth login
GitHub Codespaces ユーザーの場合、前のコマンドが失敗した場合は、次のコマンドを試してください。
azd auth login --use-device-code
新しい azd 環境を作成します。
azd env new
リソース グループに使用する名前を入力します。これにより、 .azure
フォルダーに新しいフォルダーが作成され、それが今後のazd
呼び出しのアクティブな環境として設定されます。
(オプション) ここで、既存のリソースを使用したり、オプション機能 (認証やビジョンなど) を有効にしたり、無料枠にデプロイしたりするために、環境変数を設定してデプロイメントをカスタマイズできます。
azd up
を実行します - これにより、Azure リソースがプロビジョニングされ、 ./data
data フォルダー内にあるファイルに基づいた検索インデックスの構築など、このサンプルがそれらのリソースにデプロイされます。
azd down
実行するか、リソースを手動で削除できます。アプリケーションが正常にデプロイされると、コンソールに URL が出力されます。その URL をクリックして、ブラウザーでアプリケーションを操作します。次のようになります。
注: 「成功」と表示されてからアプリケーションが完全に展開されるまでに 5 ~ 10 分かかる場合があります。 「Python Developer」のようこそ画面またはエラー ページが表示された場合は、少し待ってからページを更新してください。
app
フォルダー内のバックエンド/フロントエンド コードのみを変更した場合は、Azure リソースを再プロビジョニングする必要はありません。次のように実行できます。
azd deploy
インフラストラクチャ ファイル ( infra
フォルダーまたはazure.yaml
) を変更した場合は、Azure リソースを再プロビジョニングする必要があります。これを実行するには、次のコマンドを実行します。
azd up
完全にデプロイされた既存の環境へのアクセスを他の人に許可するには、あなたまたはその人は次の手順を実行できます。
azd init -t azure-search-openai-demo
を実行するか、このリポジトリのクローンを作成します。azd env refresh -e {environment name}
を実行します。このコマンドを実行するには、azd 環境名、サブスクリプション ID、および場所が必要です。これらの値は.azure/{env name}/.env
ファイルで確認できます。これにより、azd 環境の.env
ファイルに、アプリをローカルで実行するために必要なすべての設定が設定されます。.env
ファイルまたはアクティブ シェルのいずれかで、環境変数AZURE_PRINCIPAL_ID
Azure ID に設定します。これは、 az ad signed-in-user show
で取得できます。./scripts/roles.ps1
または.scripts/roles.sh
を実行して、必要なすべてのロールをユーザーに割り当てます。サブスクリプションでロールを作成するために必要な権限をユーザーが持っていない場合は、ユーザーのためにこのスクリプトを実行する必要がある場合があります。スクリプトが実行されると、アプリをローカルで実行できるようになります。 azd up
コマンドを正常に実行した後のみ、ローカルで実行できます。まだ展開していない場合は、上記の展開手順に従います。
azd auth login
実行するapp
に変更します./start.ps1
または./start.sh
を実行するか、「VS Code タスク: アプリの開始」を実行して、プロジェクトをローカルで開始します。ローカル開発ガイドでその他のヒントを参照してください。
Web アプリに入ったら、次のようにします。
このサンプルによって作成されたすべてのリソースをクリーンアップするには、次のようにします。
azd down
実行します。y
と入力します。y
と入力します。リソース グループとすべてのリソースが削除されます。
以下のヒント以外にも、docs フォルダーには広範なドキュメントが含まれています。
アプリが正常にデプロイされたら、テキストの変更、プロンプトの微調整、データの置換など、ニーズに合わせてカスタマイズを開始できます。詳細については、アプリのカスタマイズ ガイドとデータ取り込みガイドを参照してください。
デフォルトでは、デプロイされたアプリは、エラーのログ記録とともに、各リクエストのトレースに Application Insights を使用します。
パフォーマンス データを確認するには、リソース グループ内の Application Insights リソースに移動し、[調査 -> パフォーマンス] ブレードをクリックして、任意の HTTP 要求に移動してタイミング データを確認します。チャット リクエストのパフォーマンスを検査するには、[サンプルへのドリルイン] ボタンを使用して、チャット リクエストに対して行われたすべての API 呼び出しのエンドツーエンド トレースを確認します。
例外とサーバー エラーを確認するには、[調査 -> 失敗] ブレードに移動し、フィルター ツールを使用して特定の例外を見つけます。右側に Python のスタック トレースが表示されます。
次のコマンドを実行して、ダッシュボードにグラフの概要を表示することもできます。
azd monitor
このサンプルは、独自の実稼働アプリケーションの開始点となるように設計されていますが、実稼働環境にデプロイする前に、セキュリティとパフォーマンスを徹底的にレビューする必要があります。詳細については、本番化ガイドをお読みください。
最も一般的な障害のシナリオと解決策は次のとおりです。
サブスクリプション ( AZURE_SUBSCRIPTION_ID
) には、Azure OpenAI サービスへのアクセス権がありません。 AZURE_SUBSCRIPTION_ID
OpenAI アクセス要求プロセスで指定された ID と一致することを確認してください。
Azure OpenAI が有効になっていないリージョン (米国東部ではなく米国東部 2 など)、または使用しようとしているモデルが有効になっていないリージョンにリソースを作成しようとしています。このモデルの入手可能性のマトリックスを参照してください。
クォータ (ほとんどの場合、リージョンごとのリソース数) を超過しました。クォータと制限については、この記事を参照してください。
「同じリソース名は許可されません」という競合が発生します。これは、サンプルを複数回実行し、そのたびに作成していたリソースを削除したが、パージするのを忘れていたことが原因である可能性があります。 Azure は、論理的な削除からパージしない限り、リソースを 48 時間保持します。リソースのパージについては、この記事を参照してください。
prepdocs.py
スクリプトを実行すると、 CERTIFICATE_VERIFY_FAILED
表示されます。これは通常、マシン上で設定された SSL 証明書が正しくないことが原因です。この StackOverflow の回答の提案を試してください。
azd up
実行して Web サイトにアクセスすると、ブラウザーに「404 Not Found」が表示されます。まだ起動中の可能性があるため、10 分待ってから再試行してください。次に、 azd deploy
実行して、もう一度待ちます。デプロイされたアプリで依然としてエラーが発生し、App Service にデプロイしている場合は、App Service デプロイのデバッグに関するガイドを参照してください。ログがエラーの解決に役立たない場合は、問題を報告してください。
これは、最新の Generative AI アプリの機能と、Azure での構築方法を示すために構築されたサンプルです。このサンプルのデプロイに関するヘルプが必要な場合は、GitHub の問題に投稿してください。 Microsoft 従業員の場合は、Teams チャネルに投稿することもできます。
このリポジトリは Microsoft サポートではなくメンテナーによってサポートされているため、上記のサポート メカニズムをご利用ください。私たちは全力を尽くしてお手伝いいたします。
注: このデモで使用される PDF ドキュメントには、言語モデル (Azure OpenAI Service) を使用して生成された情報が含まれています。これらのドキュメントに含まれる情報はデモンストレーションのみを目的としており、マイクロソフトの意見や信念を反映するものではありません。マイクロソフトは、明示的か黙示的かを問わず、本書に含まれる情報の完全性、正確性、信頼性、適合性、または可用性について、いかなる種類の表明または保証も行いません。すべての権利はマイクロソフトに留保されます。