Python 用の独自のデータ サンプルを使用してチャットを開始する
この記事では、Python用の独自のデータ サンプルを使用して、
次の デモ ビデオをご覧ください。
この記事の手順に従うと、次の操作を実行できます。
- チャット アプリを Azure にデプロイします。
- 従業員の特典に関する回答を取得します。
- 設定を変更して、応答の動作を変更します。
この手順を完了したら、カスタム コードを使用して新しいプロジェクトの変更を開始できます。
この記事は、Azure OpenAI と Azure AI Search を使用してチャット アプリを構築する方法を示す記事のコレクションの一部です。
コレクション内のその他の記事は次のとおりです。
手記
この記事では、記事の例とガイダンスの基礎として 1 つ以上の
アーキテクチャの概要
次の図は、チャット アプリの単純なアーキテクチャを示しています。
アーキテクチャの主なコンポーネントは次のとおりです。
対話型チャット エクスペリエンスをホストする Web アプリケーション。
独自のデータから回答を取得するための Azure AI Search リソース。
Azure OpenAIは以下を提供します。
- 独自のデータに対する検索を強化するキーワード。
- Azure OpenAI モデルからの回答。
ada
モデルからの埋め込み。
費用
このアーキテクチャのほとんどのリソースでは、Basic 価格レベルまたは従量課金価格レベルが使用されます。 従量課金制は使用量に基づきます。つまり、使用した分だけ支払います。 この記事を完了するには料金がかかりますが、最小限です。 この記事が完了したら、リソースを削除して料金の発生を停止できます。
サンプル リポジトリの
前提 条件
開発コンテナー 環境には、この記事を完了するために必要なすべての依存関係が用意されています。 開発コンテナーは、GitHub Codespaces (ブラウザー) で実行することも、Visual Studio Code を使用してローカルで実行することもできます。
この記事を使用するには、次の前提条件が必要です。
- Azure サブスクリプション。 無料で作成しましょう。
- Azure アカウントのアクセス許可。 Azure アカウントには、ユーザーアクセス管理者 または 所有者などの
Microsoft.Authorization/roleAssignments/write
アクセス許可が必要です。 - GitHub アカウント。
開発環境を開く
この記事を完了するためにすべての依存関係がインストールされている開発環境から始めます。
GitHub Codespaces は、GitHub によって管理される開発コンテナーを実行する際に、ユーザー インターフェイス (UI) として Web 版 Visual Studio Code を使用します。 最も簡単な開発環境では、GitHub Codespaces を使用して、この記事を完了するために正しい開発者ツールと依存関係がプレインストールされるようにします。
重要
すべての GitHub アカウントでは、2 つのコア インスタンスで毎月最大 60 時間無料で GitHub Codespaces を使用できます。 詳細については、GitHub Codespaces の毎月含まれるストレージとコア時間 を参照してください。
Azure-Samples/azure-search-openai-demo GitHub リポジトリの
main
ブランチに新しい GitHub コードスペースを作成するプロセスを開始します。次のボタンを右クリックし、新しいウィンドウでリンクを開くを選択して、開発環境とドキュメントを同時に利用できるようにします。
[コードスペース の作成] ページで、コードスペース設定の構成を確認し、[コードスペースの作成] を選択します。
コードスペースが起動するまで待ちます。 このスタートアップ プロセスには数分かかる場合があります。
画面の下部にあるターミナルで、Azure Developer CLI を使用して Azure にサインインします。
azd auth login
ターミナルからコードをコピーし、ブラウザーに貼り付けます。 手順に従って、Azure アカウントで認証します。
この記事の残りのタスクは、この開発コンテナーのコンテキストで行われます。
デプロイと実行
サンプル リポジトリには、チャット アプリを Azure にデプロイするために必要なすべてのコードと構成ファイルが含まれています。 次の手順では、サンプルを Azure にデプロイするプロセスについて説明します。
チャット アプリを Azure にデプロイする
重要
このセクションで作成された Azure リソースでは、主に Azure AI Search リソースから即時のコストが発生します。 これらのリソースは、完全に実行される前にコマンドを中断した場合でも、コストが発生する可能性があります。
次の Azure Developer CLI コマンドを実行して、Azure リソースをプロビジョニングし、ソース コードをデプロイします。
azd up
環境名の入力を求められた場合は、短くして小文字を使用します。 たとえば、
myenv
です。 リソース グループ名の一部として使用されます。メッセージが表示されたら、リソースを作成するサブスクリプションを選択します。
最初に場所を選択するように求められたら、近くの場所を選択します。 この場所は、ホスティングを含むほとんどのリソースに使用されます。
Azure OpenAI モデルまたは Azure AI ドキュメント インテリジェンス リソースの場所の入力を求められた場合は、最も近い場所を選択します。 最初の場所と同じ場所を使用できる場合は、その場所を選択します。
アプリがデプロイされてから 5 分または 10 分待ってから続行します。
アプリケーションが正常にデプロイされると、ターミナルに URL が表示されます。
(✓) Done: Deploying service webapp
というラベルの付いた URL を選択して、ブラウザーでチャット アプリケーションを開きます。
チャット アプリを使用して PDF ファイルから回答を取得する
チャット アプリには、PDF ファイルからの従業員の特典情報が事前に読み込まれています。 チャット アプリを使用して、特典に関する質問をすることができます。 次の手順では、チャット アプリを使用するプロセスについて説明します。 基になるモデルが更新されると、回答が異なる場合があります。
ブラウザーで、チャット テキスト ボックスに「パフォーマンス レビューで何が起こるか」を選択または入力し、「」を入力します。
回答から引用文献を選択します。
右側のウィンドウで、タブを使用して、回答がどのように生成されたかを理解します。
タブ 説明 思考プロセス このタブは、チャットでの対話のスクリプトです。 システム プロンプト ( content
) とユーザーの質問 (content
) を表示できます。サポートコンテンツ このタブには、質問に回答するための情報とソース資料が含まれています。 ソース資料の引用文献の数は、開発者設定に示されています。 既定値は 3です。 引用文献 このタブには、引用文献を含む元のページが表示されます。 完了したら、もう一度タブを選択してウィンドウを閉じます。
チャット アプリの設定を使用して応答の動作を変更する
チャットのインテリジェンスは、Azure OpenAI モデルと、モデルとの対話に使用される設定によって決まります。
設定 | 説明 |
---|---|
プロンプト テンプレートの をオーバーライドする | 質問と検索結果に基づいて回答を生成するために使用されるプロンプトをオーバーライドします。 |
気温 | 応答を生成する大規模言語モデル (LLM) に要求の温度を設定します。 温度が高いほどクリエイティブな反応が増えますが、接地が少なくなる可能性があります。 |
シード | モデルの応答の再現性を向上させるためにシードを設定します。 シードには任意の整数を指定できます。 |
最小検索スコア | Azure AI Search から返される検索結果の最小スコアを設定します。 スコアの範囲は、ハイブリッド (既定)、ベクターのみ、テキストのみ |
最小リランカー スコア | セマンティック リランカーから返される検索結果の最小スコアを設定します。 スコアの範囲は常に 0 ~ 4 です。 スコアが高いほど、結果が質問に対して意味的に関連性が高くなります。 |
この多くの検索結果を取得 | Azure AI Search から取得する検索結果の数を設定します。 結果が多いほど、正しい回答が見つかる可能性が高くなる可能性があります。 しかし、結果が多いほど、モデルが「途中で迷子になる」可能性もあります。これらのソースは、引用文献の [思考プロセス] タブと [コンテンツのサポート] タブで確認できます。 |
カテゴリ を除外する |
検索結果から除外するカテゴリを指定します。 既定のデータ セットで使用されるカテゴリはありません。 |
セマンティックランカーを用いた検索の実施 | Azure AI Search セマンティック ランカーを有効にします。これは、ユーザーのクエリに対するセマンティック類似性に基づいて検索結果を再ランク付けするモデルです。 |
セマンティック キャプション を使用する | 完全な検索結果ではなく、セマンティック キャプションを LLM に送信します。 セマンティック キャプションは、セマンティック ランク付けの処理中に検索結果から抽出されます。 |
フォローアップの質問を提案する | ユーザーのクエリに基づいてフォローアップの質問を提案するように LLM に依頼します。 |
取得モード | Azure AI Search クエリの取得モードを設定します。 Vector + Text (Hybrid) では、ベクター検索とフルテキスト検索の組み合わせを使用します。 Vector ではベクター検索のみを使用します。 テキスト では、フルテキスト検索のみが使用されます。 一般に、ハイブリッドは最適です。 |
チャット完了応答をストリーミングする | 生成されたチャット UI に対する応答を継続的にストリーミングします。 |
次の手順では、設定を変更するプロセスについて説明します。
ブラウザーで、[開発者向け設定] タブ
選択します。 [フォローアップの質問 提案]チェックボックスをオンにして、同じ質問をもう一度行います。
What happens in a performance review?
チャットでは、次の例のような、推奨されるフォローアップの質問が返されました。
1. What is the frequency of performance reviews? 2. How can employees prepare for a performance review? 3. Can employees dispute the feedback received during the performance review?
[設定] タブで [セマンティック ランカーを使用して取得する] チェックボックスをオフにします。
もう一度同じ質問をします。
What happens in a performance review?
回答の違いは何ですか?
- セマンティック ランカー: Contoso Electronics のパフォーマンス レビュー中に、従業員は職場での成功と課題について話し合う機会を得られます (1)。 このレビューでは、従業員が自分の役割を成長させ、成長するのに役立つ肯定的で建設的なフィードバックを提供します (1)。 従業員は、業績レビューの要約を書面で受け取ります。これには、今後の年 (1) の業績、フィードバック、目標と目標の評価が含まれます。 パフォーマンス レビューは、マネージャーと従業員の間の双方向の対話です (1)。
- セマンティック ランカーなし: Contoso Electronics のパフォーマンス レビュー中に、従業員は職場での成功と課題について話し合う機会を得られます。 肯定的で建設的なフィードバックは、従業員が自分の役割を成長させ、成長するのを助けるために提供されます。 パフォーマンス レビューの要約が記載されています。これには、今後 1 年間のパフォーマンス、フィードバック、目標の評価が含まれます。 レビューは、マネージャーと従業員の間の双方向の対話です (1)。
リソースのクリーンアップ
次の手順では、使用したリソースをクリーンアップするプロセスについて説明します。
Azure リソースをクリーンアップする
この記事で作成した Azure リソースは、Azure サブスクリプションに課金されます。 今後これらのリソースが必要になるとは思わない場合は、削除して、より多くの料金が発生しないようにします。
次の Azure Developer CLI コマンドを実行して、Azure リソースを削除し、ソース コードを削除します。
azd down --purge --force
スイッチは次の機能を提供します。
purge
: 削除されたリソースは直ちに消去されるため、1 分あたりに Azure OpenAI トークンを再利用できます。force
: 削除は、ユーザーの同意を必要とせずに、自動的に行われます。
GitHub Codespaces と Visual Studio Code をクリーンアップする
GitHub Codespaces 環境を削除すると、アカウントに対して取得するコア時間単位の無料エンタイトルメントの量を最大化できます。
重要
GitHub アカウントのエンタイトルメントの詳細については、「 GitHub Codespaces に月単位で含まれるストレージとコア時間」を参照してください。
GitHub Codespaces ダッシュボードにサインインします。
Azure-Samples/azure-search-openai-demo GitHub リポジトリから入手した、現在実行中の codespace を見つけます。
コードスペースのコンテキスト メニューを開き、[
削除] を選択します。
助けを得る
このサンプル リポジトリでは、
問題が解決しない場合は、リポジトリの Issues Web ページに問題を追加します。
関連コンテンツ
- この記事で使用されているサンプルの
ソース コードを取得します。 - Azure OpenAI ベスト プラクティス ソリューション アーキテクチャを使用して
チャット アプリを構築します。 - Azure AI Searchを使用した生成 AI アプリでの
アクセス制御について説明します。 - Azure API Managementを使用して、エンタープライズ対応の
Azure OpenAI ソリューションを構築します。 - を参照してください。Azure AI Search: ベクター検索を上回るハイブリッド取得とランク付け機能。