The Gardeners Arms
© Copyright David Dixon and licensed for reuse under this Creative Commons Licence.

 

前回、Microsoftが新たにAzure Machine Learningの新機能として提供を始めたPrompt Flowについて、概要をご紹介しました。

今回は、実際に使ってみた例をご覧いただきます。

■Prompt flow画面の呼び出し

まずは、前回ご紹介した「#URL2: 【Prompt flow入門①】Prompt flowの作成・実行・カスタマイズ方法」に従い、Machine Learning Studioで、Azure Machine Learning用の ワークスペースを作成し、すでに作ってあったgpt3.5-turboモデルのAzure OpenAIリソースと連携させて、「>_ Prompt flow PREVIEW」のメニューをクリックして、Prompt flow画面を出します。

次に、新しいプロンプト用のPrompt flowを作成するため、上図の「+ Create」をクリックすると下の画面(Create a new flow)がポップアップします。

■新しいプロンプト用のPrompt flowの作成

この画面からわかるように、プロンプトフローは、一から開発するのではなくて、標準Prompt flowテンプレート(Standard flow)、チャットシステムを作る場合の標準テンプレート(Chat flow)、作成したプロンプトが期待される基準や目標にどれだけ合致しているかを測定するための評価フローテンプレート(Evaluation flow)が用意されているので、そのどれかのテンプレートをベースとして、自分用にカストマイズする形で作業を進めます。

そのほかにも5種類のフローテンプレートおよび9種類の評価フローテンプレートも用意されているので、一番開発しようとしているAIシステムで必要としている機能に近いPrompt flowテンプレートをカストマイズする形で作業を進めることもできます。

 

■標準Prompt flowテンプレートの利用

今回は、標準Prompt flowテンプレートを使ってみます。

上図中、赤枠で囲った「Create」ボタンをクリックすると、以下の画面に切り替わります。

標準Prompt flowは、画面右側のビジュアルインタフェース部分で示されている通り、固定入力(input)が「hello_prompt」および「echo_my_prompt」のフローを経由して出力(outputs)される流れとなっています。

■サンプル入力:inputs

このテンプレートは、固定入力値からプロンプトフローを開始するサンプルとなっていて、デフォルトでは、画面中央の「Inputs」欄に、データ名:text、データ型:stringで、初期値として「Hello World!」が設定されています。これらデータ名、データ型、初期値は、変更することができます。

 

■サンプルプロンプト:hello_prompt

「hello_prompt」は、プロンプトの内容を定義するサンプルテンプレートとして用意されたもので、上図中赤枠で示した「+Prompt」をクリックすることで、新たにプロンプトのテキスト部分を作成することができるようです。

「∨ Prompt」欄に2行のプロンプト(そのうち1行は、このテンプレートをあなたのプロンプトに置き換えてくださいというコメントですが)が記載されていますが、プロンプトの内容を変更するには、「Wrap text」ボタンをクリックして「オン」にする必要があります。ここで定義した内容が、そのままプロンプトの内容として出力(${hello_prompt.output})されます。

「∨ Inputs」欄には、データ名:text、データ型:string、値は「inputs」のtext(${inputs.text})となっていて、画面右側のビジュアルインタフェースで、「Inputs」から「hello_prompt」にデータが受け渡される図と対応しています。

また、「inputs」から渡されたデータ(${inputs.text})の値がプロンプト内の{{text}}で展開されるということのようです。したがって、テンプレートのままでこのプロンプトフローを実行すると、inputsの初期値の「Hello World!」という文字列がプロンプトの内容として展開され、「Write a simple Hello World! program that displays the greeting message when executed.」が出力されることになります。

■サンプルPythonコード:echo_my_prompt

「echo_my_prompt」は、プロンプトの内容にPythonコードの出力を反映させるためのサンプルテンプレートとして用意されたもので、上図中赤枠で示した「+Python」をクリックすることで、新たにPythonのコード部分を作成することができるようです。

「∨ Code」欄に11行のPythonのコード(そのうち半分は、このテンプレートをあなたのプロンプト用のコードに置き換えてくださいというコメントですが)が記載されていますが、コードの内容を変更するには、「Wrap text」ボタンをクリックして「オン」にする必要があります。ここで定義したコードを実行した結果が、出力(${echo_my_prompt.output})されます。

「∨ Inputs」欄には、データ名:input1、データ型:stringで、値は「hello_promptの出力(${hello_prompt.output})となっていて、画面右側のビジュアルインタフェースで、「hello_prompt」から「echo_my_prompt」にデータが受け渡される図と対応しています。

「Code」欄では、渡されたinput1のデータの前に「Prompt:」を付けたものが出力されるようになっているので、このテンプレートのままでプロンプトフローを実行すると「Prompt: Write a simple Hello World! program that displays the greeting message when executed.」が出力されることになります。

■サンプル出力:outputs

これは、プロンプトフローを終了するためのサンプルテンプレートとして用意されたもので、デフォルトでは、画面中央の「Outputs」欄に、データ名:output_prompt、値として「echo_my_prompt」の出力(${echo_my_prompt.output})が設定されていますので、テンプレートのままこのプロンプトフローを実行すると、echo_my_promptから渡されたデータがそのままoutputsとして出力されることになります。

■標準Prompt flowテンプレートの実行

画面右上の「▶Run」をクリックして、このプロンプトを実行すると、実行中は、「Run」およびビジュアルインタフェースの「hello_prompt」、「echo_my_prompt」に実行中であることを示す青い輪が表示され、実行が終了すると「Completed」が表示されます。

■hello_promptの実行結果の確認

「hello_prompt」の「Outputs」欄にある「View full output」をクリックすると、プロンプトを実行した結果のoutput(”Write a simple Hello World! program that displays the greeting message when executed.”)を見ることができ、inputの初期値が「hello_prompt」に引き渡されていることが確認できます。

■echo_my_promptの実行結果の確認

「echo_my_prompt」の「Outputs」欄にある「View full output」をクリックすると、プロンプトを実行した結果のoutput(”Prompt: Write a simple Hello World! program that displays the greeting message when executed.”)を見ることができ、「hello_prompt」の出力の先頭に「Prompt:」が付け加えられているのが確認できます。

■OpenAI Serviceとの連携

この標準Prompt flowテンプレートでは、OpenAI Serviceとの連携が行われていませんでした。

プロンプトフローの中でOpenAI Serviceと連携させるには、上図の赤枠で示した「+LLM」をクリックすることで、LLM定義を行うとともに、その定義と他のプロンプト部分との接続設定を行います。

■その他のツールとの連携

プロンプトフローの中でOpenAI Service以外のツールとの連携として、上図の赤枠で示した「+ More tools」をクリックすることで、Azure Translator以下8種類のツールとの連携を定義することができるようです。

 

長くなってしまったので、ここでいったん終わります。

今回も、Azure OpenAI Serviceではなく、Azure Prompt flowが用意した標準Prompt flowテンプレートについてのご紹介で終わってしまいましたので、前回のブログタイトルを含め、「Azure Prompt Flowについてーその1」、「Azure Prompt Flowについてーその2」と変更しました。

次回は、「+LLM」を使ってOpenAI serviceと連携したプロンプトフロー作成についてご紹介したいと思います。

 

終わり