3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Azure AI Studio Prompt flow によるプロンプトのテストと評価ハンズオン①

Last updated at Posted at 2024-07-29

Azure AI Studio はプロンプトのテストと評価の機能が充実しており、テストについては複数の LLM を同時に実行して結果を比較したり、プロンプトのバリエーションを簡単に比較することができます。評価機能では様々な組み込み評価機能が搭載されており、評価データセットを用いて作成中のチャットアシスタントのフローや外部アシスタントからの出力結果をインポートして評価することができます。これらを Azure 上でフルマネージドかつブラウザ UI から簡単に行えるので、面倒な環境構築やサーバー運用は必要ありません。

①テスト

単一のデータを使用してフローの実行結果のみを取得します

  1. プロンプト/LLM の実行結果を比較したい
    1. 同じプロンプトで LLM を比較したい
    2. 同じ LLM でプロンプトを比較したい

②評価

複数のデータを使用して評価メトリクスを算出します。必ずしもフローの実行結果を使用しなくても評価可能。

  1. 自動評価とカスタム評価、手動評価
    1. 作成中のフローを評価したい場合
    2. 別システムからの出力結果がすでにある場合

①テスト:プロンプト/LLM の実行結果を比較したい

シンプルに LLM の実行結果を比較したい場合、標準フローを使用します。

image.png

事前準備

Azure AI Studio ハブ、プロジェクトを作成します。

  1. Azure AI Studio ハブの作成
  2. Azure AI Studio プロジェクトの作成
  3. MaaS サーバーレス API の作成

1. サンプルの Python フローを削除

フローをシンプル化するためにデフォルトの Python フローを削除します。

image.png

2. LLM ノードの名前を変更

デフォルトのノード名を任意のノード名に変更できます。

image.png

3. 出力結果に接続する

ひとつ前のノードを削除したので、最終出力 outputs との接続が切れてしまっています。これを prompt ノードと接続し直せば OK です。デフォルトの名前 joke も任意の名前に変更してしまいましょう。最終的に結果 JSON に反映されます。

image.png

1. 同じプロンプトで LLM を比較したい

1.1. 接続済みモデルのセット

Azure AI Studio では別リージョンにデプロイされている Azure OpenAI Service エンドポイントも使用することができます。また、MaaS デプロイしたモデルについても接続設定を行うことで Studio 上で使用できます。

image.png

1.2. バリアントの生成

LLM ノードで「バリアントの生成」ボタンをクリックすると、生成ペインが表示されます。ここで比較したい別パターンのプロンプトを入力することもできますし、別の OpenAI モデルを選択することができます。

image.png

1.3. バリアント #1 に別の LLM をセット

「バリエーションを表示する」ボタンをクリックすると、生成されたバリアント #1 が表示されます。デフォルトのバリアントは #0 となります。右のフローの LLM ノードが複数表記になりました。ここでは、モデルカタログで Maas デプロイした Phi-3-medium-4k-instruct エンドポイントを指定します。MaaS のサーバーレス APIOpenAI API と同じインターフェースを持つため、既存の LLM ノードで OpenAI と同様に扱うことができます!

image.png

LLM が気を利かせて?新しいバリアントのプロンプトを変更してくれてますが、気にせずコピペします。

1.4. コンピューティングセッションの実行

フローの実行にはコンピューティングセッションの実行が必要です。デフォルトでは、Standard_E4s_v3 が実行されますが、詳細設定から別の VM を選択することもできます。ここは有料ですが、デフォルトで非アクティブ状態が 1 時間続くと自動でシャットダウンされます。

image.png

1.5. フロー実行の送信

1.6. テスト結果の表示

実行結果はバリアントごとに「トレースの表示」ボタンを押して遷移してもいいですし、「テスト結果の表示」を押して一覧を表示することもできます。

image.png

1.7. トレース一覧

バリアントごとの実行結果は実行順のトレース一覧に表示されます。gpt-4oPhi-3-medium-4k-instruct の実行結果が表示されています。より詳細な結果は名前をクリックします。残念ながらこの一覧ではバリアント No. が表示されていませんね。今後の改善に期待しましょう。

image.png

1.8. バリアントの実行結果のトレース

実行結果の詳細は「トレース」機能によって可視化されます。トレース機能は複雑な LLM コールを階層化して表示する新しい機能です。モデル名は LLM 階層の右上に表示されています。結果がおかしいなとすぐ気づくことができますね。

image.png

このトレース機能は Prompt flow SDK からも利用可能です。

2. 同じ LLM でプロンプトを比較したい

この場合は簡単です。モデル接続はバリアント #0 と同じものをセットして、プロンプトを書き換えるだけです。

image.png

はい、以下のように結果が変わりました。

image.png

チャットフローのテスト

チャットフローではチャット履歴 chat_history が考慮されます。これは毎回のリクエストで蓄積した過去のチャットデータを送信することで実現しています。「💭チャット」ボタンでチャット UI 上でフローのテストが可能ですが、バリアントについては既定のバリアントのみが使用される仕様となっているため、別のバリアントの出力結果を参照したい場合は評価機能を使用する必要があります。

image.png

本記事は最もシンプルなフローで試していますが、フロー内に RAG のためのフローを挿入した場合も当然テスト可能です。

②評価

自動評価とカスタム評価、手動評価機能が用意されています。評価データセットを用いて以下の用途に分けて評価を実施します。

  1. 作成中のフローを評価したい場合
  2. 別システムからの出力結果がすでにある場合

長くなりますので、続きは別記事で!

シリーズ

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?