プロンプト フローの概要

この記事では、Azure Machine Learning スタジオにおけるプロンプト フローの使用の主要なユーザー体験について説明します。 Azure Machine Learning ワークスペースでプロンプト フローを有効にし、最初のプロンプト フローの作成および開発を行い、テストおよび評価を行った後に、運用環境にデプロイする方法について説明します。

前提条件

  • ワークスペース内の既定のデータ ストアが BLOB の種類であることを確認します。

  • 仮想ネットワークを使用してプロンプト フローをセキュリティで保護する場合は、プロンプト フローでのネットワークの分離に従って詳細を確認してください。

接続を設定

まず、接続を設定する必要があります。

接続は、秘密鍵または LLM (大規模言語モデル) やその他の外部ツール (たとえば、Azure Content Safety など) とのやり取りに必要なその他の機密性の高い資格情報を安全に保存および管理するのに役立ちます。

プロンプト フローのホーム ページに移動し、[接続] タブを選択します。接続は、ワークスペース内のすべてのメンバーの共有リソースです。 そのため、プロバイダーが AzureOpenAI である接続が既に表示されている場合は、この手順をスキップして、ランタイムの作成に進むことができます。

AzureOpenAI にまだ接続していない場合は、ドロップダウンから [作成] ボタン、[AzureOpenAI] の順に選択します。

[作成] が強調表示された [接続] タブのスクリーンショット。

すると、右側のパネルが表示されます。 ここでは、サブスクリプションとリソース名を選択し、接続名、API キー (認証の種類が API キーと等しい場合)、API ベース、API の種類、API バージョンを指定してから、[保存] ボタンを選択する必要があります。 プロンプト フローは、Azure OpenAI リソースの ID ベースの認証の種類として、Microsoft Entra ID もサポートしています。 詳細については、「マネージド ID を使用して Azure OpenAI Service を構成する方法」を参照してください。

[Azure OpenAI 接続の追加] のスクリーンショット。

API のキー、ベース、種類、バージョンを取得するには、Azure OpenAI ポータルで [チャットプレイグラウンド] に移動し、[コードの表示] ボタンを選択します。 ここから、必要な情報をコピーし、接続作成パネルに貼り付けることができます。

サンプル コードを含むポップアップを表示する [コードの表示] ボタンを選択した後の [API キー] が強調表示されている [チャットプレイグラウンド] のスクリーンショット。

必要なフィールドを入力したら、[保存] を選択して接続を作成します。

プロンプト フローを作成して開発する

プロンプト フロー ホーム ページの [フロー] タブで、[作成] を選択して、最初のプロンプト フローを作成します。 ギャラリーのサンプルを複製することで、フローを作成できます。

サンプルから複製する

組み込みのサンプルがギャラリーに表示されています。

このガイドでは、Web 分類のサンプルを使用して主要なユーザー体験について説明します。 [Web 分類] タイルで [詳細の表示] を選択すると、サンプルをプレビューできます。 その後、プレビュー ウィンドウがポップアップ表示されます。 サンプルの概要を参照して、サンプルが自分のシナリオに似ているかどうかを確認できます。 [複製] を選択してサンプルを複製した後に、フローをチェックして、テストし、変更することができます。

Web 分類が強調表示されている [ギャラリーから作成] のスクリーンショット。

[複製] を選択すると新しいフローが作成され、ご利用のワークスペース ファイル共有ストレージ内の特定のフォルダー内に保存されます。 右側のパネル内で、ご自身の好みに応じてフォルダー名をカスタマイズすることができます。

自動ランタイム (プレビュー) を開始する

それから、フロー作成ページが表示されます。 詳しく説明する前に、まずランタイムを開始してください。

ランタイムは、アプリケーションの実行に必要なコンピューティング リソースとして機能し、必要なすべての依存関係パッケージを含む Docker イメージを含みます。 これはフロー実行に必須のものです。

新しいユーザーの場合は、そのまますぐに使用することができる、自動ランタイム (プレビュー) の使用をお勧めします。また、フロー フォルダー内の requirements.txt ファイル内にパッケージを追加することで、環境を簡単にカスタマイズすることができます。 自動ランタイムの開始には時間がかかるため、フローを作成する前に、最初に開始することをお勧めします。

自動ランタイムの開始のスクリーンショット。

フロー作成ページ

自動ランタイムの作成時に、フロー作成ページを表示することができます。

メイン作業領域が強調表示されている Web 分類のスクリーンショット。

作成ページの左側にあるフラット ビューは、フローを作成することができるメイン作業領域です。たとえば、新しいノードの追加、プロンプトの編集、フロー入力データの選択などを行います。

右上隅には、フローのフォルダー構造が表示されます。 各フローには、flow.dag.yaml ファイル、ソース コード ファイル、およびシステム フォルダーを含むフォルダーがあります。 テスト、デプロイ、または共同作業の目的でフローを簡単にエクスポートまたはインポートできます。

フラット化ビューでノードをインライン編集するだけでなく、[生ファイル モード] トグルをオンにし、ファイル名を選択して開いているファイル タブでファイルを編集することもできます。

生ファイル モードの [ファイルの編集] タブのスクリーンショット。

右下隅にあるのは視覚化専用のグラフ ビューです。 拡大、縮小、自動レイアウトなどを行うことができます。

このガイドでは、Web 分類のサンプルを使用して主要なユーザー体験について説明します。 Web 分類は、LLM を使用した複数クラス分類を実行するフローです。 URL が与えられると、いくつかのショット、簡単な要約、分類のプロンプトと共に URL を Web カテゴリに分類します。 たとえば、"https://www.imdb.com/" が与えられると、この URL を "Movie" に分類します。

グラフ ビューでは、サンプル フローがどのように表示されるかを確認できます。 入力は分類する URL です。その後、Python スクリプトを使用して URL からテキスト コンテンツをフェッチし、LLM を使用してテキスト コンテンツを 100 語以内に要約した後、URL と要約されたテキスト コンテンツに基づいて分類し、最後に Python スクリプトを使用して LLM 出力を辞書に変換します。 prepare_examples のノードは、少数ショットの例を分類ノードのプロンプトにフィードするためのものです。

フロー入力データ

[入力] セクションを展開すると、入力を作成して表示できます。 次のスクリーンショットに示すように、Web 分類のサンプルでは、フロー入力は文字列型の URL です。

入力が強調表示されている Web 分類のスクリーンショット。

入力スキーマ (名前: URL、型: 文字列) と値はサンプルの複製時に既に設定されています。 "https://www.imdb.com/" など、別の値に手動で変更できます。

LLM ノードを設定する

LLM ノードごとに、接続を選択して LLM API キーを設定する必要があります。

[接続] ドロップダウンが表示されている Web 分類のスクリーンショット。

この例では、提供するプロンプトの例はチャット API 用のものであるため、API の種類がチャットであることを確認します。 チャットと完了の API のプロンプト形式の違いについては、「フローの開発」を参照してください。

次に、選択した接続の種類に応じて、デプロイまたはモデルを選択する必要があります。 Azure OpenAI 接続を使用する場合は、ドロップダウンでデプロイを選択する必要があります (デプロイがない場合は、「Azure OpenAI を使用してリソースを作成し、モデルをデプロイする」に従って AzureOPenAI ポータルで作成します)。 OpenAI 接続を使用する場合は、モデルを選択する必要があります。

フローには 2 つの LLM ノード (summarize_text_content と classify_with_llm) があるため、それぞれの設定を個別に行う必要があります。

単一ノードを実行する

単一ノードをテストしてデバッグするには、フラット ビューのノードで [実行] アイコンを選択します。 実行状態は一番上に表示され、実行が完了したら、ノード出力セクションで出力を確認します。

最初に Python ノードを実行した後に出力を確認し、次に LLM ノードを実行した後に出力を確認する様子が示されている Web 分類のスクリーンショット。

fetch_text_content_from_url、summarize_text_content の順に実行し、フローが Web からコンテンツを正常にフェッチできるかどうかを確認し、Web コンテンツを要約します。

単一ノードの状態はグラフ ビューにも表示されます。 フロー入力 URL を変更して、異なる URL に対するノード動作をテストすることもできます。

フロー全体を実行する

フロー全体をテストしてデバッグするには、右上にある [実行] ボタンを選択します。

全体実行が表示され [実行] ボタン強調表示されている Web 分類のスクリーンショット。

その後、各ノードの実行状態と出力を確認できます。 ノードの状態はグラフ ビューにも表示されます。 同様に、フロー入力 URL を変更して、さまざまな URL に対してフローがどのように動作するかをテストできます。

フロー出力の設定と確認を行う

各ノードの出力を確認する代わりに、複数のノードのフロー出力の設定および出力の確認を 1 か所で行うこともできます。 さらに、フロー出力は以下のことに役立ちます。

  • 1 つのテーブルで一括のテスト結果を確認する
  • 評価インターフェイス マッピングを定義する
  • デプロイ応答スキーマを設定する

サンプルを複製すると、フロー出力 (カテゴリと証拠) が既に設定されています。 [出力の表示] を選択して、テーブル内の出力を確認できます。

[出力の表示] ボタンが表示されている Web 分類のスクリーンショット。

フローによって、カテゴリと証拠を使用して入力 URL が予測されることがわかります。

[出力] タブが表示されている Web 分類のスクリーンショット。

テストと評価

1 行のデータを使用してフローが正常に実行されたら、大量のデータ セットで正常に実行されるかどうかをテストする必要があります。一括テストを実行し、いくつかの評価方法を選択してから、メトリックを確認できます。

データを準備する

まずはテスト データを準備する必要があります。 現時点では、csv、tsv、jsonl ファイルがサポートされています。

GitHub に移動して、Web 分類サンプルのゴールデン データセットである "data.csv" をダウンロードします。

Evaluate

[実行] ボタンの横にある [評価] ボタンを選択すると、右側のパネルがポップアップ表示されます。 これは、バッチ実行の送信と評価方法の選択をガイドするウィザードです (省略可能)。​​​​​​

バッチ実行の名前、説明を設定し、ランタイムを選択してから、 [新しいデータの追加] を選択して、ダウンロードしたデータをアップロードする必要があります。 データをアップロードした後、またはワークスペース内の同僚が既にデータセットを作成している場合は、ドロップダウンからデータセットを選択し、最初の 5 行をプレビューできます。 [データセット選択] ドロップダウンでは、検索と自動提案がサポートされています。

さらに、入力マッピングでは、フロー入力のデータセット内の特定のデータ列へのマッピングがサポートされています。つまり、列名が一致しない場合でも、任意の列を入力として使用できます。

[新しいデータのアップロード] が強調表示されている [バッチ実行と評価] のスクリーンショット。

次に、1 つまたは複数の評価方法を選択します。 評価方法は、Python や LLM などを使用して正確性、関連性スコアなどのメトリックを計算するフローでもあります。 組み込みの評価フローとカスタマイズされた評価フローがページに一覧表示されます。 Web 分類は分類シナリオであるため、評価するには [分類の正確性評価] を選択するのが適切です。

評価メソッドに [バッチ実行と評価] が表示されている Web 分類のスクリーンショット。

組み込みの評価方法に対してメトリックがどのように定義されているかに関心がある場合は、[詳細] を選択することで評価フローをプレビューできます。

評価方法として [分類の正確性評価] を選択した後、インターフェイス マッピングを設定して、グランド トゥルースをフロー入力に、予測をフロー出力にマップできます。

評価設定に [バッチ実行と評価] が表示されている Web 分類のスクリーンショット。

次に、[確認と送信] を選択してバッチ実行と選択した評価を送信してください。

結果をチェックする

実行が正常に送信されたら、 [実行リストの表示] を選択して、このフローのバッチ実行リストに移動します。

バッチ実行が完了するまでに時間がかかる場合があります。 ページを更新して、最新の状態を読み込むことができます。

バッチ実行が完了したら、実行を選択し、[出力の視覚化] を選択してバッチ実行の結果を表示してください。 [出力の表示] (目のアイコン) を選択して、バッチ実行結果のテーブルに評価結果を追加します。 トークンの合計数と全体的な精度を確認でき、表にはデータの各行の結果、つまり入力、フロー出力、評価結果 (正しく予測されたケースとそうでないもの) が表示されます。

出力を表示するための Web 分類のバッチ実行の詳細ページのスクリーンショット。

列幅の調整、列の非表示/再表示、列の順序の変更を行うことができます。 [エクスポート] を選択して、詳細な調査のために出力テーブルをダウンロードすることもできます。次の 2 つのオプションがあります。

  • 現在のページのダウンロード: 現在のページのバッチ実行出力の csv ファイル。
  • すべてのデータのダウンロード: ダウンロードするのは Jupyter Notebook ファイルです。これを実行して、jsonl または csv 形式で出力をダウンロードする必要があります。

ご存知のように、分類タスクを評価できるメトリックは正確性だけではありません。たとえば、再現率を使用して評価することもできます。 この場合、[出力の視覚化] ボタンの横にある [評価] を選択し、他の評価方法を選択して評価を行うことができます。

展開

適切にフローを構築してテストしたら、リアルタイム推論のためにエンドポイントを呼び出せるように、フローをエンドポイントとしてデプロイすることができます。

エンドポイントを構成する

バッチ実行リンクを選択してから、バッチ実行の詳細ページに移動し、[デプロイ] を選択してください。 ウィザードがポップアップ表示され、エンドポイントを構成できます。 エンドポイントとデプロイ名を指定し、仮想マシンを選択し、接続を設定し、いくつかの設定を行い (既定の設定を使用できます)、[確認と作成] を選択してデプロイを開始します。

エンドポイントをテストする

通知からエンドポイントの詳細ページに移動するか、Studio の左側のナビゲーションで [エンドポイント] に移動し、[リアルタイム エンドポイント] タブでエンドポイントを選択します。エンドポイントのデプロイには数分かかります。 エンドポイントが正常にデプロイされたら、[テスト] タブでテストできます。

テストする URL を入力ボックスに貼り付け、[テスト] を選択すると、エンドポイントによって予測された結果が表示されます。

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

今すぐ操作方法ガイドに進み、ここで作成したリソースを使用したい場合は、「次の手順」に進んでください。

コンピューティング インスタンスを停止する

コンピューティング インスタンスをすぐに使用しない場合は、停止してください。

  1. スタジオの左側のナビゲーション領域で、[コンピューティング] を選択します。
  2. 上部のタブで、 [コンピューティング インスタンス] を選択します
  3. 一覧からコンピューティング インスタンスを選択します。
  4. 上部のツールバーで、 [停止] を選択します。

すべてのリソースの削除

作成したどのリソースも今後使用する予定がない場合は、課金が発生しないように削除します。

  1. Azure Portal で、左端にある [リソース グループ] を選択します。
  2. 一覧から、作成したリソース グループを選択します。
  3. [リソース グループの削除] を選択します。

次のステップ

フローの開発、テスト、評価、デプロイに何が含まれるかを理解したので、次のチュートリアルでプロセスの詳細について確認してください。