チュートリアル: Azure AI Studio でプロンプト フローを使用して質疑応答コパイロットを作成してデプロイする

Note

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

この Azure AI Studio チュートリアルでは、生成 AI とプロンプト フローを使用して、Contoso という小売企業のためのコパイロットを構築、構成、デプロイします。 この小売会社は、キャンプ用品とアウトドア衣類を専門としています。

このコパイロットは、製品とサービスに関する質問に答えます。 また、顧客に関する質問にも回答する必要があります。 たとえば、コパイロットは、「TrailWalker ハイキング シューズはいくらですか?」や「Daniel Wilson は TrailWalker ハイキング シューズを何足購入しましたか」などの質問に答えることができます。

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

  1. Azure AI Studio プロジェクトを作成します。
  2. Azure OpenAI モデルをデプロイし、データとチャットします。
  3. プレイグラウンドからプロンプト フローを作成します。
  4. 複数のデータ ソースを使用してプロンプト フローをカスタマイズします。
  5. 質疑応答の評価データセットを使用してフローを評価します。
  6. 使用に向けてフローをデプロイします。

前提条件

Azure AI Studio で Azure AI プロジェクトを作成する

Azure AI プロジェクトは、コパイロットの構築中に、作業を整理し状態を保存するために使用されます。 このチュートリアルでは、プロジェクトにデータ、プロンプト フロー ランタイム、評価、およびその他のリソースが含まれています。 Azure AI プロジェクトとリソース モデルの詳細については、「Azure AI ハブ リソース」を参照してください。

Azure AI Studio で Azure AI プロジェクトを作成するには、次の手順に従います。

  1. ページの上部にある [ビルド] タブを選びます。

  2. [+ 新しい AI プロジェクト] を選択します。

    新しいプロジェクトを作成するオプションが表示されている Azure AI Studio の [ビルド] タブのスクリーンショット。

  3. プロジェクトの 名前 を入力します。

  4. プロジェクトをホストするための Azure AI ハブ リソースをドロップダウンから選択します。 Azure AI ハブ リソースにまだアクセスできない場合は、[新しいリソースの作成] を選択します。

    [プロジェクトの作成] ダイアログ内のプロジェクトの詳細ページのスクリーンショット。

    Note

    Azure AI ハブ リソースを作成するには、選択したリソース グループに対する所有者または共同作成者のアクセス許可が必要です。 Azure AI ハブ リソースをチームと共有することをお勧めします。 これにより、データ接続などの構成をすべてのプロジェクトと共有し、セキュリティ設定と支出を一元的に管理できます。

  5. 新しい Azure AI ハブ リソースを作成する場合は、名前を入力します。

  6. ドロップダウンから Azure サブスクリプションを選択します。 課金、アクセス、または管理上の理由から、プロジェクト用の特定の Azure サブスクリプションを選択します。 たとえば、これにより、プロジェクトへのサブスクリプション レベルのアクセスがユーザーとサービス プリンシパルに許可されます。

  7. [リソース グループ] は既定値のままにして、新しいリソース グループを作成します。 または、ドロップダウンから既存のリソース グループを選択することもできます。

    ヒント

    作業を開始する場合には特に、プロジェクトの新しいリソース グループを作成することをお勧めします。 これにより、プロジェクトとそのすべてのリソースをまとめて簡単に管理できます。 プロジェクトを作成すると、Azure AI ハブ リソース、コンテナー レジストリ、ストレージ アカウントなど、リソース グループに複数のリソースが作成されます。

  8. Azure AI ハブ リソースの [場所] を入力し、[次へ] を選択します。 場所は、Azure AI ハブ リソースがホストされるリージョンです。 Azure AI ハブ リソースの場所は、プロジェクトの場所でもあります。 Azure AI サービスの可用性はリージョンによって異なります。 たとえば、特定のモデルについては、リージョンによっては利用できない場合があります。

  9. ドロップダウンから既存の Azure OpenAI リソースを選択するか、新しいリソースを作成します。

    [プロジェクトの作成] ダイアログ内の [リソースの作成] ページのスクリーンショット。

  10. [レビューと完了] ページに、レビューする Azure OpenAI Service のリソース名とその他の設定が表示されます。

    [プロジェクトの作成] ダイアログ内の [レビューと完了] ページのスクリーンショット。

  11. プロジェクトの詳細を確認し、[AI プロジェクトの作成] を選択します。 リソースの作成の進行状況が表示され、プロセスが完了するとプロジェクトが作成されます。

    [プロジェクトの作成] ダイアログ内のリソースの作成の進行状況のスクリーンショット。

プロジェクトが作成されたら、左側のナビゲーション パネルで [ツール][コンポーネント][AI プロジェクト設定] アセットにアクセスできます。 Azure AI ハブと共に Azure OpenAI のサポートを使うプロジェクトの場合は、[ツール] の下に [プレイグラウンド] ナビゲーション オプションが表示されます。

チャット モデルをデプロイする

次の手順に従って、コパイロット用の Azure OpenAI チャット モデルをデプロイします。

  1. Azure AI Studio に、Azure OpenAI リソースにアクセスできる資格情報を使用してサインインします。 サインイン ワークフローの途中または後で、適切なディレクトリ、Azure サブスクリプション、Azure OpenAI リソースを選択します。 Azure AI Studio [ホーム] ページが表示されます。

  2. 上部のメニューから [ビルド] を選択し、[デプロイ]>[作成]>[リアルタイム エンドポイント] を選択します。

    新しいプロジェクトを作成するためのボタンが表示された [展開] ページのスクリーンショット。

  3. [モデルの選択] ページで、モデル一覧から展開するモデルを選択します。 たとえば、gpt-35-turbo-16k を選択します。 次に、[確認] を選択します。

    [モデルの選択] ページのスクリーンショット。

  4. [モデルのデプロイ] ページで、デプロイの名前を入力し、[デプロイ] を選択します。 デプロイが作成されると、デプロイの詳細ページが表示されます。 詳細には、デプロイを作成した日付、デプロイしたモデルの作成日とバージョンが含まれます。

  5. 前の手順のデプロイの詳細ページで、[プレイグラウンドで開く] を選択します。

    GPT チャット展開の詳細のスクリーンショット。

モデルのデプロイの詳細については、モデルのデプロイ方法を参照してください。

データなしでプレイグラウンドでチャットする

Azure AI Studio プレイグラウンドでは、データの有無にかかわらず、モデルがどのように応答するかを観察できます。 このセクションでは、データなしでモデルをテストします。 次のセクションでは、製品に関する質問に答えられるように、モデルにデータを追加します。

  1. プレイグラウンドで、[モード] ドロップダウンから[チャット] が選択されていることを確認します。 [デプロイメント] ドロップダウンから、デプロイされた GPT チャット モデルを選択します。

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

  2. [アシスタントのセットアップ] ペインの [システム メッセージ] テキスト ボックスに、アシスタントをガイドする次のプロンプトを入力します: "あなたは、情報の検索を支援する AI アシスタントです。"シナリオに合わせてプロンプトを調整できます。 詳細については、「プロンプトのサンプル」を参照してください。

  3. [変更を適用する] を選択して変更を保存し、システム メッセージを更新するかどうかを確認するプロンプトが表示されたら、[続行] を選択します。

  4. [チャット セッション] ウィンドウに、「TrailWalker ハイキング シューズはいくらですか」という質問を入力します:。その後、右矢印アイコンを選択して送信します。

    グラウンディング データなしの最初のチャットの質問のスクリーンショット。

  5. アシスタントは "わかりません" と回答します。 このモデルは TrailWalker ハイキング シューズの製品情報にアクセスできません。

    グラウンディング データなしのアシスタントの応答のスクリーンショット。

次のセクションでは、製品に関する質問に答えられるように、モデルにデータを追加します。

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

製品情報の例のローカル コピーが必要です。 詳細とデータ例へのリンクについては、「前提条件」を参照してください。

ローカル データファイルを Azure BLOB ストレージにアップロードし、Azure AI Search インデックスを作成します。 データ ソースは、モデルを特定のデータで根拠付けるために使用されます。 根拠付けとは、質問のコンテキストを理解するために、モデルでデータを使用することを意味します。 デプロイされたモデルそのものを変えるわけではありません。 データは、Azure サブスクリプションに個別に安全に保存されます。 詳細については、「独自のデータに基づく Azure OpenAI」を参照してください。

以下の手順に従って、データをプレイグラウンドに追加し、アシスタントが製品に関する質問に答えられるようにします。

  1. まだ Azure AI Studio プレイグラウンドにアクセスしていない場合は、上部のメニューから [ビルド] を選択し、折りたたみ可能な左側のメニューから [プレイグラウンド] を選択します。

  2. [アシスタントのセットアップ] ペインで、[Add your data (preview)] (データの追加 (プレビュー))>[+ Add a data source] (+ データ ソースの追加) の順に選択します。

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

  3. 表示された [データ ソース] ページで、[データ ソースの選択] ドロップダウンから [ファイルをアップロードする] を選択します。

    製品データ ソースの選択オプションのスクリーンショット。

    ヒント

    データ ソース オプションとサポートされるファイルの種類と形式については、「独自のデータに基づく Azure OpenAI」を参照してください。

  4. 製品情報インデックスの名前として product-info を入力します。

    ファイルのアップロードに必要なリソースと情報のスクリーンショット。

  5. contoso-outdoor-search という名前の Azure AI Search リソースを選択または作成し、接続するとアカウントで使用量が発生することの確認を選択します。

    Note

    このチュートリアルの後半では、プロンプト フローで product-info インデックスと contoso-outdoor-search Azure AI Search リソースを使用します。 入力する名前がここで指定した名前と異なる場合は、チュートリアルの残りの部分でその入力した名前を必ず使用してください。

  6. 使用する Azure OpenAI リソースを含む Azure サブスクリプションを選択します。 [次へ] を選択します。

  7. [ファイルのアップロード] ページで、[ファイルの参照] を選択し、アップロードするファイルを選択します。 前にダウンロードまたは作成した製品情報ファイルを選択します。 「前提条件」を参照してください。 複数のファイルをアップロードする場合は、今すぐ実行してください。 後で同じプレイグラウンド セッションにファイルを追加することはできません。

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

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

  9. [データ管理] ウィンドウの [検索の種類] で、[キーワード] を選択します。 この設定は、モデルがどのように要求に応答するかを決定するのに役立ちます。 [次へ] を選択します。

    Note

    [データ ソースの選択または追加] ページでベクトル検索を追加していた場合、追加コストでより多くのオプションをここで利用できるようになります。 詳細については、「独自のデータに基づく Azure OpenAI」を参照してください。

  10. 入力した詳細を確認し、[保存して閉じる] を選択します。 これでモデルとチャットできるようになり、データからの情報を使用して応答が作成されます。

    データを追加するための [レビューと完了] ページのスクリーンショット。

  11. [アシスタントのセットアップ] ペインで、データ インジェストが進行中であることを確認できます。 先に進む前に、状態の代わりにデータ ソースとインデックス名が表示されるまで待機します。

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

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

    グラウンディング データを含むアシスタントの応答のスクリーンショット。

プロンプト フローに必要なコンピューティングとランタイムを作成する

プロンプト フローを使用して、コパイロットのチャット モデルに送信されるメッセージを最適化します。 プロンプト フローには、コンピューティング インスタンスとランタイムが必要です。 コンピューティング インスタンスとランタイムが既にある場合は、このセクションをスキップして、プレイグラウンドに留まることができます。

コンピューティング インスタンスとランタイムを作成するには、次の手順に従います。

  1. コンピューティング インスタンスがない場合は、Azure AI Studio で作成することができます。
  2. 次に、「ランタイムを作成する方法」の手順に従ってランタイムを作成します。

チュートリアルの残りの部分を完了するには、ランタイムが [実行中] 状態であるようにします。 更新された状態を表示するには、[更新] を選択する必要がある場合があります。

重要

コンピューティング インスタンスは実行されている時間に課金されます。 不要な Azure コストが発生しないようにするには、プロンプト フローでアクティブに作業していないときにはコンピューティング インスタンスを一時停止します。 詳細については、「コンピューティングを開始および停止する方法」を参照してください。

プレイグラウンドからプロンプト フローを作成する

デプロイされたチャット モデルデータを使用してプレイグラウンドで動作するようになったので、プレイグラウンドからコパイロットを Web アプリとしてデプロイできます。

しかし、あなたは「このコパイロットをさらにカスタマイズするにはどうすればよいか」と尋ねるかもしれません。複数のデータ ソースを追加したり、異なるプロンプトを比較したり、複数のモデルのパフォーマンスを比較したりできます。 プロンプト フローは、LLM ベースの AI アプリケーションの開発を効率化する実行可能なワークフローとして機能します。 これにより、アプリケーション内のデータ フローと処理を管理するための包括的なフレームワークを実現できます。

このセクションでは、プレイグラウンドからプロンプト フローに移行する方法について説明します。 追加したデータへの接続を含むプレイグラウンド チャット環境をエクスポートします。 このチュートリアルの後半では、フローを評価し使用のためにフローをデプロイします。

Note

プロンプト フローでの変更は、プレイグラウンド環境を更新するために後方に適用されません。

次の手順に従って、プレイグラウンドからプロンプト フローを作成できます。

  1. まだ Azure AI Studio プレイグラウンドにアクセスしていない場合は、上部のメニューから [ビルド] を選択し、折りたたみ可能な左側のメニューから [プレイグラウンド] を選択します。

  2. [チャット セッション] ウィンドウの上にあるメニューから、[プロンプト フローで開く] を選択します。

  3. プロンプト フローのフォルダー名を入力します。 その後、 [開く] を選択します。 Azure AI Studio は、データへの接続を含むプレイグラウンド チャット環境をプロンプト フローにエクスポートします。

    [プロンプト フローで開く] ダイアログのスクリーンショット。

フロー内では、独自の機能を持つ特定のツールを表すノードがステージの中心となります。 これらのノードでは、入力と出力を使ってデータ処理、タスク実行、アルゴリズム操作を処理します。 ノードを接続することで、アプリケーション内のデータ フローをガイドするシームレスな操作チェーンを確立できます。 詳細については、「プロンプト フローのツール」に関する記事を参照してください。

ノードの構成と微調整をスムーズにするために、ワークフロー構造の視覚表現は DAG (有向非巡回グラフ) グラフで提供されます。 このグラフはノード間の接続と依存関係を表しており、ワークフロー全体の概要を把握できます。 次に示すグラフのノードは、プロンプト フローにエクスポートしたプレイグラウンド チャットでのエクスペリエンスを表しています。

プロンプト フローにプレイグラウンドからエクスポートされた既定のグラフのスクリーンショット。

ノードは追加、更新、再配置、または削除できます。 この時点のフロー内のノードは次のとおりです。

  • DetermineIntent: このノードは、ユーザーのクエリの意図を判断します。 システム プロンプトを使用して意図を判断します。 システム プロンプトを編集して、シナリオ固有の少数ショットの例を提供できます。
  • ExtractIntent: このノードは、DetermineIntent ノードの出力を書式設定し、RetrieveDocuments ノードに送信します。
  • RetrieveDocuments: このノードは、クエリに関連する上位ドキュメントを検索します。 このノードでは、検索の種類と、プレイグラウンドで事前に構成したパラメーターが使用されます。
  • FormatRetrievedDocuments: このノードは、RetrieveDocuments ノードの出力を書式設定し、DetermineReply ノードに送信します。
  • DetermineReply: このノードには、取得したドキュメントのみを使用して応答するように LLM に求める広範なシステム プロンプトが含まれています。 次の 2 つの入力があります。
    • RetrieveDocuments ノードは、取得した上位のドキュメントを提供します。
    • FormatConversation ノードは、最新のクエリを含む書式設定された会話履歴を提供します。

FormatReply ノードは、DetermineReply ノードの出力を書式設定します。

プロンプト フローでは、次も表示されます。

  • 保存: 上部のメニューから [保存] を選択すると、プロンプト フローをいつでも保存できます。 このチュートリアルで示す変更を加える際には、プロンプト フローを定期的に保存してください。

  • ランタイム: このチュートリアルで前に作成したランタイム。 左側のメニューの [AI プロジェクト設定] を使用して、ランタイムとコンピューティング インスタンスを開始および停止できます。 プロンプト フローで動作するには、ランタイムが [実行中] 状態であることを確認します。

    プロンプト フロー エディターと周囲のメニューのスクリーンショット。

  • ツール: 左側のメニューの [ツール] から [プロンプト フロー] を選択すると、いつでもプロンプト フロー に戻ることができます。 次に、前に作成したプロンプト フロー フォルダーを選択します (サンプル フローではありません)。

    プロンプト フローの一覧のスクリーンショット。

複数のデータ ソースを使用してプロンプト フローをカスタマイズする

先の Azure AI Studio プレイグラウンドでは、Contoso コパイロット用に製品データを含む 1 つの検索インデックスを作成するためにデータを追加しました。 これまで、ユーザーは、製品については「TrailWalker のハイキング シューズはいくらですか?」などの質問のみ問い合わせができました。 しかし、「Daniel Wilson は TrailWalker ハイキング シューズを何足購入しましたか」などの質問に対する回答を得ることはできません。このシナリオを有効にするには、もう 1 つ顧客情報を含むインデックスをフローに追加します。

顧客情報インデックスを作成する

顧客情報の例のローカル コピーが必要です。 詳細とデータ例へのリンクについては、「前提条件」を参照してください。

新しいインデックスを作成する方法については、次の手順に従います。

  1. 左側のメニューから [インデックス] を選択します。 [+ 新規インデックス] を選択します。

    新しいインデックスを作成するためのボタンが表示された [インデックス] ページのスクリーンショット。

    [インデックスの作成] ウィザードが表示されます。

  2. [ソース データ] ページで、[アップロード] ドロップダウンから [フォルダーのアップロード ] を選択します。 前にダウンロードまたは作成した顧客情報ファイルを選択します。 「前提条件」を参照してください。

    顧客データ ソースの選択オプションのスクリーンショット。

  3. ページの下部にある [次へ] を選択します。

  4. 製品情報インデックス (product-info) に使用したのと同じ Azure AI Search リソース (contoso-outdoor-search) を選択します。 [次へ] を選択します。

    選択した Azure AI 検索リソースのスクリーンショット。

  5. [検索の種類] として [ハイブリッド + セマンティック (推奨)] を選択 します。 これは既定で選択されています。

  6. Azure OpenAI リソース のドロップダウンから Default_AzureOpenAI を選択します。 このチェック ボックスをオンにして、まだデプロイされていない場合には Azure OpenAI 埋め込みモデルがデプロイされることを確認します。 [次へ] を選択します。

    インデックス検索の種類のオプションのスクリーンショット。

    Note

    埋め込みモデルは、[デプロイ] ページに他のモデル デプロイと共に一覧表示されます。

  7. インデックス名として customer-info を入力します。 [次へ] を選択します。

    インデックス名と仮想マシンのオプションのスクリーンショット。

  8. 入力した詳細を確認し、[作成] を選択します。

    [Review and finish index creation]\(インデックスの作成の確認と完了\) ページのスクリーンショット。

    Note

    このチュートリアルの後半では、プロンプト フローで customer-info インデックスと contoso-outdoor-search Azure AI Search リソースを使用します。 入力する名前がここで指定した名前と異なる場合は、チュートリアルの残りの部分でその入力した名前を必ず使用してください。

  9. インデックス作成の状態を確認できるインデックスの詳細ページが表示されます

    顧客情報インデックスの詳細のスクリーンショット。

インデックスを作成する方法の詳細については、「インデックスの作成」を参照してください。

フローに顧客情報を追加する

インデックスの作成が完了したら、プロンプト フローに戻り、次の手順に従って顧客情報をフローに追加します。

  1. グラフから RetrieveDocuments ノードを選択し、それを RetrieveProductInfo という名前に変更します。 次に、製品情報取得ノードと、フローに追加する顧客情報取得ノードは区別可能です。

    製品情報を取得するためのプロンプト フロー ノードのスクリーンショット。

  2. 上部のメニューから [+ Python ] を選択 して、顧客情報の取得に使用する新しい Python ノードを作成します。

    顧客情報を取得するためのプロンプト フロー ノードのスクリーンショット。

  3. このノード に RetrieveCustomerInfo という名前を付け、[追加] を選択します。

  4. RetrieveProductInfo ノードの Python コードをコピーして RetrieveCustomerInfo ノードに貼り付け、すべての既定のコードを置き換えます。

  5. [入力の検証と解析] ボタンを選択して、RetrieveCustomerInfo ノードの入力を検証します。 入力が有効な場合、プロンプト フローは入力を解析し、コードで使用するために必要な変数を作成します。

    [入力の検証と解析] ボタンのスクリーンショット。

  6. プロンプト フローが解析した RetrieveCustomerInfo 入力を編集して、customer-info インデックスに接続できるようにします。

    [顧客情報の取得] ノードで入力を編集しているスクリーンショット。

    Note

    グラフは、queriesの入力値を ExtractIntent.output.search_intents に設定した直後に更新されます。 グラフでは、RetrieveCustomerInfoExtractIntent から入力を取得していることがわかります。

    入力では大文字と小文字が区別されるため、これらの値と正確に一致していることを確認してください。

    名前 Type
    embeddingModelConnection Azure OpenAI Default_AzureOpenAI
    embeddingModelName string なし
    indexName string customer-info
    queries string ${ExtractIntent.output.search_intents}
    queryType string simple
    searchConnection Cognitive Search contoso-outdoor-search
    semanticConfiguration string なし
    topK int 5
  7. 上部のメニューから [保存] を選択して変更を保存します。

取得したドキュメントを出力用に書式設定する

プロンプト フローに製品情報と顧客情報の両方が用意されたので、取得したドキュメントを書式設定して、大規模な言語モデルで使用できるようにします。

  1. グラフから FormatRetrievedDocuments ノードを選択します。

  2. 次の Python コードをコピーして貼り付けて、FormatRetrievedDocuments コード ブロック内のすべてのコンテンツを置き換えます。

    from promptflow import tool
    
    @tool
    def format_retrieved_documents(docs1: object, docs2: object, maxTokens: int) -> str:
      formattedDocs = []
      strResult = ""
      docs = [val for pair in zip(docs1, docs2) for val in pair]
      for index, doc in enumerate(docs):
        formattedDocs.append({
          f"[doc{index}]": {
            "title": doc['title'],
            "content": doc['content']
          }
        })
        formattedResult = { "retrieved_documents": formattedDocs }
        nextStrResult = str(formattedResult)
        if (estimate_tokens(nextStrResult) > maxTokens):
          break
        strResult = nextStrResult
    
      return {
              "combined_docs": docs,
              "strResult": strResult
          }
    
    def estimate_tokens(text: str) -> int:
      return (len(text) + 2) / 3
    
  3. [入力の検証と解析] ボタンを選択して、FormatRetrievedDocuments ノードの入力を検証します。 入力が有効な場合、プロンプト フローは入力を解析し、コードで使用するために必要な変数を作成します。

  4. RetrieveProductInfo ノードと RetrieveCustomerInfo ノードから製品と顧客情報を抽出できるように、プロンプト フローが解析した FormatRetrievedDocuments 入力を編集します。

    [取得したドキュメントの書式設定] ノードで入力を編集しているスクリーンショット。

    入力では大文字と小文字が区別されるため、これらの値と正確に一致していることを確認してください。

    名前 Type
    docs1 object ${RetrieveProductInfo.output}
    docs2 object ${RetrieveCustomerInfo.output}
    maxTokens int 5000
  5. グラフから DetermineReply ノードを選択します。

  6. documentation 入力を ${FormatRetrievedDocuments.output.strResult} に設定します。

    [応答決定] ノードのドキュメント入力値を編集しているスクリーンショット。

  7. グラフから outputs ノードを選択します。

  8. fetched_docs 入力を ${FormatRetrievedDocuments.output.combined_docs} に設定します。

    [出力] ノードで fetched_docs 入力値を編集しているスクリーンショット。

  9. 上部のメニューから [保存] を選択して変更を保存します。

製品情報と顧客情報を使用したプロンプト フローでのチャット

これで、プロンプト フローに製品と顧客の両方の情報が表示されます。 プロンプト フローでモデルとチャットし、「Daniel Wilson は TrailWalker ハイキング シューズを何足購入しましたか」などの質問に対する回答を得ることができます。より正式な評価に進む前に、必要に応じてモデルとチャットして、質問にどのように応答するかを確認できます。

  1. プロンプト フローの上部メニューから [チャット] を選択してチャットを試します。

  2. 「Daniel Wilson は TrailWalker ハイキング シューズを何足購入しましたか」と入力し、送信する右矢印アイコンを選択します。

  3. 期待する内容の応答が得られます。 モデルでは、顧客情報を使用して質問に回答します。

    製品と顧客のグラウンディング データに対するアシスタントの返信のスクリーンショット。

質疑応答の評価データセットを使用してフローを評価する

Azure AI Studio では、使用するためにフローをデプロイする前にフローを評価する必要があります 。

このセクションでは、質疑応答の評価データセットを使用して組み込みの評価によりフローを評価します。 組み込みの評価では、AI 支援メトリックを使用してフローを評価します (グラウンド性、関連性、取得スコア)。 詳細については、「組み込みの評価メトリック」を参照してください。

評価の作成

シナリオに関連する質疑応答を含む質問と回答の評価データセットが必要です。 qa-evaluation.jsonl という名前 の新しいファイルをローカルに作成します。 次の質疑応答 ("truth") をコピーしてファイルに貼り付けます。

{"question": "What color is the CozyNights Sleeping Bag?", "truth": "Red", "chat_history": [], }
{"question": "When did Daniel Wilson order the BaseCamp Folding Table?", "truth": "May 7th, 2023", "chat_history": [] }
{"question": "How much does TrailWalker Hiking Shoes cost? ", "truth": "$110", "chat_history": [] }
{"question": "What kind of tent did Sarah Lee buy?", "truth": "SkyView 2 person tent", "chat_history": [] }
{"question": "What is Melissa Davis's phone number?", "truth": "555-333-4444", "chat_history": [] }
{"question": "What is the proper care for trailwalker hiking shoes?", "truth": "After each use, remove any dirt or debris by brushing or wiping the shoes with a damp cloth.", "chat_history": [] }
{"question": "Does TrailMaster Tent come with a warranty?", "truth": "2 years", "chat_history": [] }
{"question": "How much did David Kim spend on the TrailLite Daypack?", "truth": "$240", "chat_history": [] }
{"question": "What items did Amanda Perez purchase?", "truth": "TrailMaster X4 Tent, TrekReady Hiking Boots (quantity 3), CozyNights Sleeping Bag, TrailBlaze Hiking Pants, RainGuard Hiking Jacket, and CompactCook Camping Stove", "chat_history": [] }
{"question": "What is the Brand for TrekReady Hiking Boots", "truth": "TrekReady", "chat_history": [] }
{"question": "How many items did Karen Williams buy?", "truth": "three items of the Summit Breeze Jacket", "chat_history": [] }
{"question": "France is in Europe", "truth": "Sorry, I can only truth questions related to outdoor/camping gear and equipment", "chat_history": [] }

評価データセットが作成されたので、次の手順に従ってフローを評価できます。

  1. プロンプト フローの上部メニューから [評価]>[組み込み評価] を選択 します。

    プロンプト フローから組み込みの評価を作成するオプションのスクリーンショット。

    [新しい評価の作成] ウィザードが表示されます。

  2. 評価の名前を入力し、ランタイムを選択します。

  3. シナリオ オプションから、[取得拡張生成による質疑応答ペア] を選択します。

    評価シナリオの選択のスクリーンショット。

  4. 評価するフローを選択します。 この例では、[Contoso の屋外フロー]、またはフローに付けた名前を選択します。 [次へ] を選択します。

  5. フローの評価に使用するメトリックを選択します。 この例では、[現実性][関連性]、および [取得スコア] を選択します。

    評価メトリックの選択のスクリーンショット。

  6. 評価に使用するモデルを選択します。 この例では、gpt-35-turbo-16k を選択します。 [次へ] を選択します。

    Note

    AI 支援メトリックを使用した評価では、計算を行うために別の GPT モデルを呼び出す必要があります。 最良のパフォーマンスを得るためには、gpt-4-32k やgpt-35-turbo-16k モデルなど、16k 以上のトークンをサポートするモデルを使用します。 こういったモデルをまだデプロイしていない場合は、「チャット モデルをデプロイする」の手順に従って別のモデルをデプロイできます。 次に、この手順に戻り、デプロイしたモデルを選択します。

  7. [新しいデータセットの追加] を選択 します。 [次へ] を選択します。

    新規または既存のデータセットを使用するオプションのスクリーンショット。

  8. [ファイルのアップロード] を選択し、ファイルを参照して、前に作成した qa-evaluation.jsonl ファイルを選択します。

    データセットの [ファイルのアップロード] ボタンのスクリーンショット。

  9. ファイルがアップロードされたら、ファイル (データ ソース) のプロパティを評価プロパティにマップする必要があります。 各データ ソース プロパティに次の値を入力します。

    評価データセットマッピングのスクリーンショット。

    名前 Description Type データ ソース
    chat_history チャット履歴 list ${data.chat_history}
    クエリ 次のクエリは、 string ${data.question}
    質問 特定の情報を求めるクエリ string ${data.question}
    回答 モデルが回答として生成した、質問への応答 string ${run.outputs.reply}
    ドキュメント 取得されたドキュメントからのコンテキストを含む文字列 string ${run.outputs.fetched_docs}
  10. [次へ] をクリックします。

  11. 評価の詳細を確認し、[送信] を選択 します。

    [評価の作成] ダイアログ内の [レビューと完了] ページのスクリーンショット。

    [メトリックの評価] ページが表示されます 。

評価の状態と結果を表示する

次の手順に従って、評価の状態と結果を表示できます。

  1. 評価を作成した後、まだ移動してい場合は、[ビルド]>[評価] に移動します。 [メトリック評価] ページでは、評価の状態と選択したメトリックを確認できます。 [完了] 状態を表示するには、数分後に [更新] を選択することが必要な場合があります。

    メトリック評価ページのスクリーンショット。

    ヒント

    評価が [完了] 状態になったら、このチュートリアルの残りの部分を完了するためにランタイムやコンピューティングは必要ありません。 不要な Azure コストが発生しないように、コンピューティング インスタンスを停止できます。 詳細については、「コンピューティングを開始および停止する方法」を参照してください。

  2. 最初に完了した評価の名前 (contoso-evaluate-from-flow_variant_0) を選択して、前にマップした列で評価の詳細を表示します。

    詳細なメトリックの結果ページのスクリーンショット。

  3. 2 番目に完了した評価の名前 (evaluation_contoso-evaluate-from-flow_variant_0) を選択して、評価メトリック ([現実性][関連性]、および [取得スコア]) を表示します。

    メトリックの平均スコアのスクリーンショット。

詳細については、「評価結果の表示」を参照してください。

フローをデプロイする

フローを構築し、メトリックベースの評価を完了したので、次はリアルタイム推論用のオンライン エンドポイントを作成します。 つまり、デプロイされたフローを使用して、リアルタイムで質問に回答できます。

Azure AI Studio からオンライン エンドポイントとしてプロンプト フローをデプロイするには、次の手順に従います。

  1. デプロイ用のプロンプト フローを準備します。 お持ちでない場合は、「プロンプト フローの作成方法」を参照してください。

  2. 省略可能: [チャット] を選択して、フローが正しく機能しているかテストします。 デプロイ前にフローをテストすることが推奨されるベスト プラクティスです。

  3. フロー エディターで [デプロイ] を選択します。

    プロンプト フロー エディターの [展開] ボタンのスクリーンショット。

  4. デプロイ ウィザードの [基本設定] ページで、要求された情報を入力します。

    展開ウィザードの [基本設定] ページのスクリーンショット。

  5. [次へ] を選択して、詳細設定ページに進みます。

  6. [詳細設定 - エンドポイント] ページで、既定の設定のままにして [次へ] を選択します。

  7. [詳細設定 - デプロイ] ページで、既定の設定のままにして [次へ] を選択します。

  8. [詳細設定 - 出力と接続] ページで、すべての出力で [エンドポイント応答に含める] が選択されていることを確認します。

    展開ウィザードの [詳細設定] ページのスクリーンショット。

  9. [確認および作成] を選んで、設定を確認し、デプロイを作成します。

  10. [作成] を選択して、プロンプト フローをデプロイします。

    [プロンプト フローのレビュー] の [展開設定] ページのスクリーンショット。

詳細については、「フローをデプロイする方法」を参照してください。

デプロイされたフローを使用する

コパイロット アプリケーションでは、デプロイされたプロンプト フローを使用して、リアルタイムで質問に回答できます。 REST エンドポイントまたは SDK を使用して、デプロイされたフローを使用できます。

  1. Azure AI Studio でのデプロイの状態を表示するには、左側のナビゲーションから [デプロイ] を選択します。 デプロイが正常に作成されたら、デプロイを選択すると詳細を表示できます。

    進行中のプロンプト フローの展開状態のスクリーンショット。

    Note

    「現在、このエンドポイントにはデプロイがありません」というメッセージが表示される場合、または状態がまだ "更新中" の場合は、数分後に [更新] を選択してデプロイを確認する必要があります。

  2. 必要に応じて、詳細ページで認証の種類を変更したり、監視を有効にしたりできます。

    [プロンプト フロー展開の詳細] ページのスクリーンショット。

  3. [使用] タブを選択します。デプロイされたフローを使用する コパイロット アプリケーションのコード サンプルと REST エンドポイントが確認できます。

    プロンプト フロー展開エンドポイントとコード サンプルのスクリーンショット。

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

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

Azure AI Studioコンピューティング インスタンス を停止または削除することもできます。

Azure AI Studio エンタープライズ チャット ソリューションのデモ

こちらのエンド ツー エンドのチュートリアル ビデオでは、Azure AI Studio でデータを使用してリテール版 Copilot を作成する方法について説明します。

次のステップ