【日本最速？】Azure AI StudioでPrompt Flowを触ってみた感想

# はじめに

5月23日〜25日にアメリカ シアトルで開催されたMicrosoft Build 2023はAI関連の発表が多くされ、世界的に注目を集めていました。
過去最高レベルの注目度だったのではないでしょうか。

https://news.microsoft.com/build-2023-book-of-news/

その中で発表されていた「Prompt Flow」機能が最近Azure AI Studio上でパブリックプレビューとしてリリースされました。

https://learn.microsoft.com/en-us/azure/machine-learning/prompt-flow/overview-what-is-prompt-flow

記事執筆時点ではこれを実際に触ってみた人の記事が日本語/英語で見当たらなかったので、本記事では早速触ってみた感想を書いていきたいと思います。

# そもそも 「Prompt Flow」とは

「Prompt Flow」は、Azure Machine Learning上に追加された新機能で、Azure AI Studio上で提供される大規模言語モデル（LLM）を利用したAIアプリケーションの開発サイクル全体を効率化するために設計された開発ツールです。

皆さんもご存知のとおり、ChatGPTの登場により世界中でLLMを利用したサービス開発の機運が高まっています。
(現状、AI（LLM）のビジネスでの利用は「ローリスク・ハイリターン」感があるので当然といえば当然です。)

しかしながら、実際にLLMをビジネスで利用しようとした場合、Microsoft Learnの図にあるとおり、結構複雑なフローで開発が進むことになります。
実際にサービス開発をすると、ほとんどのユースケースで「ChatGPT APIを呼び出して終わり」とはならないかなと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/980999/6aaa1d84-989d-2d49-4272-2c910a37677a.png)

Prompt FlowはAI(LLM)開発をワンストップで行える包括的なソリューションとなっています。
<b>AI(LLM)のモデル自体の開発を含めたすべての開発フローをREPLのような対話型で実行できるイメージ</b>です。


# 実際に触ってみた感想

今まで個別で行っていたAI(LLM)開発にまつわる各種プロセスを一箇所で確認しながら作業できるので、開発生産性が大幅に向上しそうです。
パラメーターを変更して「Run」ボタンを押下するだけで実行できます。
実行環境のマシン自体は別途作成する必要がありました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/980999/3b57b7e8-7981-83a4-9787-62e55c0a8daa.png)

各々の処理での消費Token数や処理時間等もその場で確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/980999/338fae7c-d5cd-e33c-10c7-a77bd8b452ac.png)

入力〜出力の一連の流れでどこにどれだけ時間がかかっているのかも俯瞰できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/980999/38c75a3b-34e6-3046-e2d1-16b333182525.png)

<b>一箇所でコードも含んだすべての情報を確認しながらPDCAが回せるので、Prompt Tuning や消費Token量の削減、速度や出力内容の改善に効果が期待できそうです</b>。

実際、Embedding用のLLMモデルやAzure Vector Searchを組み合わせたサービスを提供していると、オーバーヘッドが発生する箇所が多くなりがちで結構ボトルネックの把握が大変だったりするのですが、Prompt Flowの登場によりこれが結構楽になりそうな印象でした。
GUIで処理の流れを見つつ、問題がある箇所を確認できるのもいいですね。

いくつか初期テンプレートが用意されている点もキャッチアップをするうえで大変ありがたかったです。
現状、ChatGPTのユースケースとして一番多そうなEnterprise Search(社内FAQ)のテンプレートもありました。
「Bring Your Own Data QnA」、「Q＆A with your own data using Faiss Index」というFlowがそれにあたります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/980999/cfbd1ef9-4ab3-ef64-487c-435905c6c272.png)

まだ今週パブリックプレビューとしてリリースされたばかりなので、弊社でもそこまでAIエンジニアに展開できていませんが、これからはPrompt Flowを使って自社のAIサービスの開発を進めていこうかなと思ってます。

なお、自社サービスにAzure OpenAI Serviceを使っていない人でも、オープンソースのAIモデルやHugging Faceのモデル、OpenAIのモデルとつなげることができるのでPrompt Flowの恩恵を受けられるようになっていました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/980999/04cff433-dd10-36d3-3f59-084792215f31.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/980999/89f4c12d-c98e-08b9-d603-1f5323467adf.png)

AIサービスのデプロイ自体もPrompt Flowから行えます。
基本VMベースでのIaaS構成を想定している感じですね。
流石にまだPublic Previewフェーズなので、弊社で現時点でProductionへのデプロイをPrompt Flowでやることは無いかなと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/980999/103da144-abd4-e0c1-7ae2-223911b5e982.png)

# Prompt Flowの登場によって変わること
プログラミングの歴史上、統合開発環境(IDE)の登場によって、多くのエンジニアの開発効率が飛躍的に向上しました。
IDEに慣れすぎてもう昔のようなVim,Emacsでの開発に戻れなくなった人も多くいそうです。

Prompt FlowもIDEと同様にAI(LLM)の開発フローを統合し、一元化することによってAIエンジニアのA開発効率の向上が期待できます。

ただそれ以上に、<b>variant 機能でPromptのA/Bテストができること、つまりPrompt Engineeringのプロセス自体をEngineeringできるようになることがPrompt Flowの本当のキラーコンテンツだなと思いました。</b>

Prompt Flowのvariant機能では以下のように複数のプロンプトを並べつつ、効果計測をしながらPrompt Tuningができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/980999/1fde471a-81d4-349f-4e9b-a418ae871f92.png)

現状、ChatGPTやGPT-4を利用したサービスを提供する場合、モデル自体のTuning（Fine-tuning）が開放されていない関係上、Prompt Tuningがサービス性能の向上に対して大きなウエイトを占めています。

それをPrompt Flowのvariant機能を利用することにより<b>「なんとなくPromptをこうした方がいい結果が得られる」という状態から、Promptの変更による動作速度や消費Token量、出力品質等を計測し、そこから最適なPromptを選ぶことができるので、より科学的なアプローチによるPrompt Tuningができるようになります。</b>

これはPrompt Tuningのプロセスに大きな変化を生みそうです。

少なくとも開発フェーズにおいてこの辺の機能を使わない理由はないなと思っています。

# 最後に
Microsoft Buildで発表されたAzure AI Studioとそれに関連したModel catalog,Prompt Flow等の機能群はAI(LLM)を使ったサービスの開発効率や品質を飛躍的に向上させてくれそうです。
最近のMicrosoft社のAI領域への投資具合が半端じゃないですね。

<br>
<iframe width="560" height="315" src="https://www.youtube.com/embed/DaIYrlMOj7I" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</br>

<br></br>

これらを早めに使いこなせるように環境の変化に適応しつつ、Microsoft社が注力している領域と競合させずにうまく利用する方針でサービスを提供していくことが弊社を含むベンチャー企業が今後生き残っていくうえで非常に重要になりそうだなと思っています。

弊社も現時点ではやや先行できているものの、全くうかうかしてられないですね。

# （おまけ） Prompt Flow関連で今後期待する機能追加

Prompt Flowの利用で従前よりは間違いなく開発効率が向上しそうです。
ただちょっと私が触っていて、ここが改善されたらもっと嬉しいなという点もいくつかあったので記載しておきます。

私の記事の読者に日本Microsoft社の社員の方が結構いるので、プロダクト開発チームに届くことを期待してます(笑)。

## 1. Bing Search API への接続の追加
現時点だとGUI上でBing Search APIとつなげることはできないっぽいので、これも追加してもらえるとありがたいなと思います。(Custom Connectionでできるんですかね？)
まあ、100%他の人からも言われるはずなので、今後ほぼ確実に出てくると思います。

## 2. 稼働中の環境からの構成Import機能
最初からPrompt Flowを使えていた場合には問題にならないと思いますが、すでにリリースしているサービスの本番環境と同等の構成をPrompt Flow上で再現しようとすると結構大変ですね。
まだ弊社も本番環境の構成を完コピできていない部分があります。

既存環境からの構成Import機能があると嬉しいユーザーは多そうです。