Azure AI Foundryのプロンプトフローを監視する

# はじめに
[MLOps（LLMOps、生成AIOps） Advent Calendar 2024](https://qiita.com/advent-calendar/2024/mlops)の25日目です。
Azure AI Foundry（旧Azure AI Studio）の機能で人気の高いプロンプトフローをデプロイし、監視する方法を紹介します。
プロンプトフローを開発するまでは他の記事で紹介されていますので[こちら](https://techblog.cccmkhd.co.jp/entry/2024/01/09/091758)を参照ください。

本記事では、プロンプトフローをデプロイしてから監視するまでを扱います。

# プロンプトフローの監視
プロンプトフローでは、デプロイした後、生成した回答が想定している品質を維持しているか監視する仕組みがあります。
対応しているメトリックとメトリック算出に必要なデータは次の通りです。

| メトリック | Prompt | Completion | Context | Ground truth |  
|-------------|--------|------------|---------|--------------|  
| 一貫性       | 必須   | 必須       | -       | -            |  
| 流暢性       | 必須   | 必須       | -       | -            |  
| 現実性       | 必須   | 必須       | 必須     | -            |  
| 関連性       | 必須   | 必須       | 必須     | -            |  
| 類似性       | 必須   | 必須       | -       | 必須         |  



# プロンプトフローの推論データ収集
メトリック算出に必要なデータのPrompt、Completion、Contextは簡単に自動収集できます。プロンプトフローの入出力設定でPrompt、Completion、Contextに該当するchat_input(=Prompt)、chat_output(=Completion) とcontext(=Context) の設定を行い、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2238189/ba77072d-4ea4-2c2e-17df-9ba2bbb6a2ec.png)

デプロイ時に推論データ収集のトグルをオンにし、有効化します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2238189/60e537ae-eaad-5fb6-05c4-6cde48dbd72b.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2238189/1957007f-622a-92a0-cba9-75307e76b71d.png)

デプロイが完了したら、テストからチャットを試してみましょう。監視用のログが記録されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2238189/f9253f50-1ca3-1573-12e8-5f46e736506a.png)

デプロイ完了後、推論させて収集したデータはデータアセットで確認できます。データアセットには、それぞれ\<endpoint name>-\<deploy name>-model_inputs、
\<endpoint name>-\<deploy name>-model_outputs の命名規則で作成されており、
model_inputs にchat_input(=Prompt)、model_outputs にchat_output(=Completion) とcontext(=Context) が出力されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2238189/12fedbab-f34d-7ede-9b9d-13fe1a6bbed3.png)

実際に出力されているデータのイメージは次のとおりです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2238189/81313d21-5c9a-b937-6b55-1ad23e01d030.png)

# 監視ジョブの実行

デプロイしたプロンプトフローのエンドポイントを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2238189/a6ebc14a-b439-ca6f-4ed5-288bfd0664ed.png)

監視から生成品質の監視を有効にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2238189/bd4b1680-407e-c7ae-21f6-f76086af9bd4.png)

質問にchat_input(=Prompt)、回答にchat_output(=Completion) を設定し、評価で使用するGPTモデルを選択します。なお、評価で使用するGPTモデルは決まっており執筆時点では以下が対応しています。
- GPT-3.5 Turbo
- GPT-4
- GPT-4-32k

最新の情報は[ドキュメント](https://learn.microsoft.com/ja-jp/azure/ai-studio/how-to/monitor-quality-safety#requirements-for-monitoring-metrics)を確認してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2238189/ce2aa067-6f87-27a2-966e-814c17548f34.png)

# 監視ジョブの実行結果確認
監視ジョブ作成後は、毎日実行されてトークン数の使用量と生成品質メトリクスが計算されます。トークンの使用状況(Token usage)のタブではトークン数の使用量が確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2238189/a9c1f8f7-0787-19db-f2bd-3d0f0cefb4f5.png)


生成品質(Generation quality)タブでは、生成品質メトリクスを確認することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2238189/abd06bed-78fb-a9ca-08bc-ea872be399af.png)