Azure Machine Learning「Prompt flow」の実行方法を解説

Azure Machine Learningの新機能「Prompt flow」を試したい方への解説記事です。


※この領域は変化が激しいです。内容は23年7月6日時点の情報となります


**【本記事に関する前提知識】**
・AzureMLサービスを使ったことがある
・AzureOpenAIサービスを使ったことがある



---

**【記事の目次】**

・準備その1：AzureOpenAIサービスでOpenAIのデプロイをしておく
・準備その2：Azure ML Studioとコンピューティングリソース作る
・準備その3：Azure ML Studioからプロンプトフローから「接続」を選択し、AzureOpenAIサービスと接続
・プロンプトフローから「フロー」を選択し「作成」。ギャラリーからお手本にしたいものを選ぶ（Chat With Wikipediaを本記事では使用）
・プロンプトフローのパラメータ、接続LLMを設定
・プロンプトフローを実行してみる


<br>

---

公式ドキュメント（英語）

https://learn.microsoft.com/en-us/azure/machine-learning/prompt-flow/get-started-prompt-flow?view=azureml-api-2


---

# 準備その1：AzureOpenAIサービスでOpenAIのデプロイをしておく

AzureOpenAIスタジオで、**「gpt-35-turbo」** のデプロイを作成しておいてください（gpt-3でも大丈夫かもしれませんが、35-turboで動作を確認しました）。

AzureOpenAIサービス以外に、直接OpenAIのAPIなども利用可能ですが、本記事ではAzureOpenAIを使用する手順で解説を進めます。

そして、「ChatGPT プレイグラウンド (プレビュー)」を開いておいて下さい。

のちほど、ここから接続情報を取得します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3328834/3f46fa8e-af7f-9640-8776-29fa7e0ad3f1.png)


# 準備その2：Azure ML Studioとコンピューティングリソース作る

Azureポータル上で、「Azure MachineLearning」のリソースを作成し、Azure Machine Learning Studioを開きます


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3328834/f1c4f3f1-3455-196d-c625-7eed6e30a765.png)


「ワークスペース」に入り、「管理」> 「コンピューティング」から、「コンピューティングインスタンス」を作成しておいてください。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3328834/2a8c2385-0f78-5196-b0c3-b4556e1bef87.png)


# 準備その3：Azure ML Studioからプロンプトフローから「接続」を選択し、AzureOpenAIサービスと接続

Azure Machine Learning Studioの左側メニューの「プロンプトフロー」を選択します。

そして、上部メニューの「接続」を選びます。

次に青い「作成」ボタンをクリックします。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3328834/1cfaf252-289b-7a8d-c00d-bd957632b4ed.png)


OpenAIやAzureOpenAIなど、どのLLM（大規模言語モデル）のAPIを使用するのかを選択します。

本記事では「AzureOpenAI」を選択します。

すると以下のような、「名前」、「プロバイダー（これはAzureOpenAIのまま）」、「API Key」、「API base」、「API type」、「API version」を設定する画面になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3328834/94fadd7a-60ad-59c2-96a4-7b807ad50e1c.png)



準備で開いたAzureOpenAIスタジオで、「チャット セッション」の「コードの表示」をクリックします。

以下のように、「API base」、「API type」、「API version」が上側に表示されるので、その内容を書き込みます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3328834/f95ec9c1-5c25-a1c4-ed44-27aa18b6319d.png)




「API Key」は画面下側からコピーできます。

なお、「名前」はなんでも、自由に設定できます。


内容を入力すると、以下のような感じになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3328834/583a952d-2a95-dae3-02e5-23df6ff4420e.png)

これで「作成」することで、「接続」に設定した新たな接続が追加されます。

「Prompt flow」のLLM部分はこの接続先を使用します。

なお、フロー内のPythonなどでの処理部分は、作成したコンピューティングインスタンスで処理されます。


# プロンプトフローから「フロー」を選択し「作成」。ギャラリーからお手本にしたいものを選ぶ（Chat With Wikipediaを本記事では使用）

準備が完了したので、早速左側メニューの「プロンプトフロー」を選択し、上部メニューの「フロー」から、青い「+作成」ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3328834/5b8602c3-9808-fe15-a1b2-db227999b5de.png)


いろいろと作成内容が提案されますが、最初は、「ギャラリーから作成する」を選択し、構築済みの「Prompt flow」を動かしてみるのが良いでしょう。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3328834/7c52e797-4b1d-c357-bac6-23542bf376cf.png)

本記事では、**「Chat With Wikipedia」** を選択します。

「詳細の表示」をクリックし、「複製」をクリックします。


# プロンプトフローのパラメータ、接続LLMを設定


「複製」をクリックすると、以下のような画面が表示されます。

右側にLLM処理とPython処理のフロー図、左側には各ブロックの内容が記載されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3328834/e42604c7-6a4f-301a-e241-c277f02bc6dc.png)


今回の「Chat With Wikipedia」の場合は、**LLM処理が2箇所あり**、そこに先ほど作成した「LLMの接続」を記載して、実行できるようにします。

また、上部「ランタイム」欄に、コンピューティングインスタンスも指定します。

次にフローのLLMブロックの「接続」を設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3328834/87b628e2-757c-a724-3abf-abb14fbe43f8.png)



最初に作成したDeployモデルと、プロンプトフローで設定した接続を選択して、以下のように設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3328834/efa853e7-d7b7-44fe-6192-3490d1c64914.png)


**「Chat With Wikipedia」の場合は、LLM処理が2箇所あるので、下側でも同様に設定します**。

設定が終われば、右上の「保存」をクリックします。


# プロンプトフローを実行してみる

以上で「Chat With Wikipedia」のPrompt flowが使用できる状態になったので、実行してみます。


今回はテストとして簡易的に、画面右上の青い「チャット」ボタンをクリックしてください。

以下は「7月7日は何の日ですか」と尋ねてみた結果です。

Wikipediaからの要約が返ってくるとともに、引用元（さんしょうもと）のページリンクが記載されています



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3328834/76dd3ee0-11bd-fe7e-188c-ffd80d1619eb.png)

※うまく回答が返ってこない場合、一度、フロー一覧の画面に戻り、Chat With Wikipediaを再度選択して、「チャット」ボタンをクリックし、質問を再度実行してみてください

<br>

以上で、Azure Machine Learning「Prompt flow」（プロンプトフロー）をひとまず実行することができました。


# さいごに

以上、簡単にでしたが、Azure ML Prompt flowの実行方法の解説でした。

所感としては、ギャラリーに現在5つほどflowの例があり、これを見ることで、

**・LLMとPython処理をどのように組み合わせてシステムを構築する流れ**

**・どんなプロンプトを使用したり、どのようなPython処理を実装するのか**

の具体例が学べるのが嬉しいです。

<br>

また、「Azure ML Prompt flow」「プロンプト」部分と「Python処理」部分とが逐次的に混ざる、LLMアプリの作成にも使いやすそうに感じました。

ただしこの点は、実際どこまで複雑なアプリ（フロー）がこのGUIベースで作成できるのかは不明です。

個人的には割とカバーできる範囲は広そうな気がしました。


（※最後に起動中のコンピューティングインスタンスをシャットダウンするのを忘れないように気をつけてください）

以上、ご一読いただき、ありがとうございました。


小川 雄太郎

 

<br>

【免責】
本記事の内容は執筆者の意見/発信であり、執筆者が属する企業等の公式見解ではございません