適用対象:Foundry (クラシック) ポータル。 この記事は、新しい Foundry ポータルでは使用できません。
新しいポータルの詳細を確認します。
メモ
この記事のリンクは、現在表示している Foundry (クラシック) ドキュメントではなく、新しい Microsoft Foundry ドキュメントのコンテンツを開く場合があります。
警告
プロンプト フロー機能の開発は、2026 年 4 月 20 日に終了しました。 この機能は、2027 年 4 月 20 日に完全に廃止されます。 提供終了日に、プロンプト フローは読み取り専用モードになります。 既存のフローは、その日付まで動作し続けます。
Recommended action: 2027 年 4 月 20 日より前に、プロンプト フローワークロードを Microsoft Agent Framework に移行します。
プロンプト フローは、大規模言語モデル (LLM) を利用する AI アプリケーションの開発サイクル全体を効率化するように設計された開発ツールです。 プロンプト フローは、AI アプリケーションのプロトタイプ作成、実験、反復、デプロイのプロセスを簡略化する包括的なソリューションを提供します。
プロンプト フローを使用すると、次のことが可能になります。
- 視覚化されたグラフを使用して、LLM、プロンプト、Python ツールを使用して実行可能フローを調整します。
- フローを簡単にテスト、デバッグ、反復処理します。
- プロンプトバリアントを作成し、そのパフォーマンスを比較します。
この記事では、Microsoft Foundry ポータルで最初のプロンプト フローを作成し、開発する方法について説明します。
前提 条件
重要
この記事では、ハブ ベースのプロジェクトのレガシ サポートを提供します。 Foundry プロジェクトでは機能しません。 「自分が持っているプロジェクトの種類を確認する方法」を参照してください。
SDK 互換性に関するメモ: コード例では、特定のMicrosoft Foundry SDK バージョンが必要です。 互換性の問題が発生した場合は、 ハブ ベースから Foundry プロジェクトへの移行を検討してください。
- アクティブなサブスクリプションを持つAzure アカウント。 お持ちでない場合は、無料試用版サブスクリプションを含む無料Azure アカウントを作成します。
- ない場合は、 ハブベースのプロジェクトを作成します。
- プロンプト フローにはコンピューティング セッションが必要です。 ランタイムがない場合は、 Foundry ポータルで作成できます。
- デプロイされたモデルが必要です。
- プロジェクトで、BLOB ストレージ アカウントのアクセス制御を構成します。
ストレージ BLOB データ共同作成者ロールをユーザー アカウントに割り当てます。
- Foundry ポータルの左下にある [管理センター] を選択します。
- ハブの Connected resources で、Azure Blob Storage の種類に対応するリンクを選択します。
- Azure ポータルで表示を選択
- Azure ポータルで、Access コントロール (IAM) を選択します。
- ロールの割り当てを追加 を選択します。
- Storage Blob Data Contributorを検索し、それを選択します。
- [ ロールの割り当ての追加] ページを使用して、自分自身をメンバーとして追加します。
- レビューと割り当て を選択して、割り当てを確認します。
- [確認して割り当て] を選択してロールを割り当てます。
プロンプト フローを作成して開発する
フローを作成するには、ギャラリーで使用可能なサンプルを複製するか、最初からフローを作成します。 ローカルまたはファイル共有にフロー ファイルが既にある場合は、ファイルをインポートしてフローを作成することもできます。
Foundry ポータルでギャラリーからプロンプト フローを作成するには:
ヒント
Microsoft Foundry ポータルで左ペインをカスタマイズできるため、次の手順に示す項目とは異なる項目が表示される場合があります。 探しているものが見つからない場合は、左側のウィンドウの下部にある[...もっと見る]を選択してください。
Microsoft Foundry にサインイン>。 「New Foundry」トグルがオフになっていることを確認します。 これらの手順は Foundry (クラシック) を参照します。
プロジェクトを選択します。
管理センターにいる場合は、[ プロジェクトに移動 ] を選択してプロジェクトに戻ります。
折りたたみ可能な左側のメニューから、[ プロンプト フロー] を選択します。
[ + 作成] を選択します。
[標準フロー] タイルで、[作成] を選択します。
[ 新しいフローの作成 ] ページで、フォルダー名を入力し、[ 作成] を選択します。
プロンプト フローの作成ページが開きます。 [ コンピューティング セッションの開始] を選択して、フローに対してコンピューティング セッションを実行します。
これでフローの作成を開始できます。 既定では、サンプル フローが表示されます。 このフロー例には、LLM およびPython ツールのノードがあります。
メモ
視覚化のみのグラフ ビュー。 これは、開発しているフロー構造を示しています。 グラフ ビューを直接編集することはできませんが、拡大、縮小、スクロールは可能です。 グラフ ビューでノードを選択すると、ツールの編集ビューでノードを強調表示してノードに移動できます。
必要に応じて、フローにさらにツールを追加できます。 表示されるツール オプションは、LLM、Prompt、および Python です。 その他のツールを表示するには、[ + その他のツール] を選択します。
LLM ツール エディターで接続とデプロイを選択します。
[ 入力 ] セクションで、トピックの値を追加します。 たとえば、「原子」とします。
[ 実行 ] を選択してフローを実行します。
フローの実行状態が [ 実行中] と表示されます。
フローの実行が完了したら、[ 出力の表示 ] を選択してフローの結果を表示します。
フローの実行状態と出力は、[ 出力 ] セクションで確認できます。
フローの作成
各フローは、"flow.dag.yaml" ファイル、ソース コード ファイル、およびシステム フォルダーを含むフォルダーによって表されます。 新しいファイルの追加、既存のファイルの編集、ファイルの削除を行うことができます。 ファイルをローカルにエクスポートしたり、ローカルからファイルをインポートしたりすることもできます。
既定のビューでノードをインライン編集するだけでなく、[ Raw ファイル モード ] トグルをオンにして、ファイル名を選択して開くファイル タブでファイルを編集することもできます。
フローの入力と出力
フロー入力は、フロー全体に渡されるデータです。 名前と型を指定して、入力スキーマを定義します。 各入力の入力値を設定して、フローをテストします。 フローノード内のフロー入力は、後で ${inputs.[input name]} 構文を使用して参照できます。
フロー出力は、フロー全体によって生成されるデータであり、フロー実行の結果を要約します。 フローの実行またはバッチ実行の完了後に、出力テーブルを表示およびエクスポートできます。 構文 ${[node name].output} または ${[node name].output.[field name]}を使用して、フローの単一ノード出力を参照してフロー出力値を定義します。
ノードをリンクする
ノード出力を参照することで、ノードをリンクできます。 たとえば、Python ノード入力で LLM ノードの出力を参照して、Python ノードが LLM ノードの出力を使用できるようにし、グラフ ビューで 2 つのノードがリンクされていることを確認できます。
フローに対する条件付き制御を有効にする
プロンプト フローは、フローを効率的に実行する方法だけでなく、開発者向けの強力な機能 (ユーザーがフロー内の任意のノードを実行するための条件を設定できる条件付き制御) も提供します。
その中核となる条件付き制御は、フロー内の各ノードを アクティブ化構成に関連付ける機能を提供します。この構成は、基本的に、ノードを実行するタイミングを決定する "when" ステートメントです。 この機能の機能は、特定のタスクの実行が前のタスクの結果に依存する複雑なフローがある場合に実現されます。 条件付きコントロールを使用すると、指定した条件が満たされた場合にのみ実行するように特定のノードを構成できます。
具体的には、ノード カードの [構成のアクティブ化] ボタンを選択して、ノードの アクティブ化構成 を設定できます。 "when" ステートメントを追加し、条件を設定できます。
フロー入力またはノード出力を参照することで、条件を設定できます。 たとえば、条件 ${inputs.[input name]} を特定の値として設定したり、特定の値として ${[node name].output} したりできます。
条件が満たされていない場合、ノードはスキップされます。 ノードの状態は "Bypassed" と表示されます。
フローをテストする
フローは、次の 2 つの方法でテストできます。
1 つのノードを実行します。
- 1 つのノードを実行するには、既定のビューのノードで [実行 ] アイコンを選択します。 実行が完了したら、ノード 出力 セクションで結果をすばやく確認できます。
n
- 1 つのノードを実行するには、既定のビューのノードで [実行 ] アイコンを選択します。 実行が完了したら、ノード 出力 セクションで結果をすばやく確認できます。
n
フロー全体を実行します。
- フロー全体を実行するには、右上にある [実行 ] ボタンを選択します。
テスト結果とトレースの表示 (プレビュー)
トレースは既定で無効になっています。トレースを有効にするには、環境変数 PF_DISABLE_TRACING を false に設定する必要があります。 これを行う方法の 1 つは、Python ノードに以下を追加することです。
import os
os.environ["PF_DISABLE_TRACING"] = "false"
フローの実行全体について、フローを実行した後、実行バナーに実行状態を表示できます。 結果を確認し、フローの実行を監視するためのトレースを表示するには、[出力の 表示 ] を選択し、[ トレース ] タブを選択します。フロー全体と各ノードの入力と出力を、デバッグの詳細と共に確認できます。 これは、実行中と実行が完了した後に使用できます。
トレース ビューを理解する
[出力] 画面の [ トレース ] タブを選択すると、フローの期間と関連するトークン コストに関する情報を提供するグラフが表示されます。 ノード名の下のフローを選択すると、右側のウィンドウに詳細なフローの概要情報が表示されます。
メモ
プロンプト フロー SDK では、 LLM、 関数、 埋め込み、 取得、 フローなど、いくつかのスパンの種類を定義しました。 また、指定された属性とイベントに実行情報を含むスパンが自動的に作成されます。
スパンの種類の詳細については、「 トレース スパン」を参照してください。
チャット フローを開発する
チャット フローは、標準フローの機能に基づいて構築され、チャットの入力/出力とチャット履歴管理のサポートが強化された、会話型アプリケーション開発用に設計されています。 チャット フローを使用すると、チャットの入力と出力を処理するチャットボットを簡単に作成できます。
チャット フローの作成ページでは、チャット フローに "チャット" ラベルがタグ付けされ、標準のフローと評価フローと区別されます。 チャット フローをテストするには、[チャット] ボタンを選択して会話用のチャット ボックスをトリガーします。
チャットの入力/出力とチャット履歴
チャット フローと標準フローを区別する最も重要な要素は、 チャット入力、 チャット履歴、 チャット出力です。
- チャット入力: チャット入力は、ユーザーがチャットボットに送信したメッセージまたはクエリを指します。 ユーザーの意図を理解し、関連情報を抽出し、適切な応答をトリガーする必要があるため、チャット入力を効果的に処理することは、会話を成功させるために不可欠です。
- チャット履歴: チャット履歴は、ユーザー入力と AI によって生成された出力の両方を含む、ユーザーとチャットボット間のすべての対話の記録です。 チャット履歴を維持することは、会話コンテキストを追跡し、AI がコンテキストに関連する応答を生成できるようにすることに不可欠です。
- チャット出力: チャット出力は、入力に応答してユーザーに送信される AI によって生成されたメッセージを指します。 コンテキストに応じて適切で魅力的なチャット出力を生成することは、肯定的なユーザー エクスペリエンスを実現するために不可欠です。
チャット フローには、複数の入力、チャット履歴、チャット入力が 必要 な場合があります。
[チャット フロー入力] セクションでは、フロー入力をチャット入力としてマークできます。 その後、チャット ボックスに入力して、チャット入力値を入力できます。
プロンプト フローは、ユーザーがチャット履歴を管理するのに役立ちます。 [入力] セクションの
chat_historyは、チャット履歴を表す目的で予約されています。 ユーザー チャット入力、生成されたチャット出力、その他のフローの入力と出力など、チャット ボックス内のすべての操作は、チャット履歴に自動的に格納されます。 ユーザーは、[入力] セクションでchat_historyの値を手動で設定することはできません。 これは、入力と出力の一覧として構造化されています。[ { "inputs": { "<flow input 1>": "xxxxxxxxxxxxxxx", "<flow input 2>": "xxxxxxxxxxxxxxx", "<flow input N>""xxxxxxxxxxxxxxx" }, "outputs": { "<flow output 1>": "xxxxxxxxxxxx", "<flow output 2>": "xxxxxxxxxxxxx", "<flow output M>": "xxxxxxxxxxxxx" } }, { "inputs": { "<flow input 1>": "xxxxxxxxxxxxxxx", "<flow input 2>": "xxxxxxxxxxxxxxx", "<flow input N>""xxxxxxxxxxxxxxx" }, "outputs": { "<flow output 1>": "xxxxxxxxxxxx", "<flow output 2>": "xxxxxxxxxxxxx", "<flow output M>": "xxxxxxxxxxxxx" } } ]
メモ
チャット履歴を自動的に保存または管理する機能は、チャット ボックスでテストを実行する際のオーサリング ページの機能です。 バッチ実行の場合、ユーザーはバッチ実行データセット内にチャット履歴を含める必要があります。 テストに使用できるチャット履歴がない場合は、バッチ実行データセット内 [] 空のリストにchat_historyを設定します。
チャット履歴を含む作成者プロンプト
チャット履歴をプロンプトに組み込むことは、コンテキストに対応した魅力的なチャットボット応答を作成するために不可欠です。 プロンプトで、 chat_history を参照して過去の操作を取得できます。 これにより、以前の入力と出力を参照して、コンテキストに関連する応答を作成できます。
Jinja 言語の for ループ文法を使用して、chat_historyからの入力と出力の一覧を表示します。
{% for item in chat_history %}
user:
{{item.inputs.question}}
assistant:
{{item.outputs.answer}}
{% endfor %}
チャット ボックスを使用してテストする
チャット ボックスには、チャットボットとの会話をシミュレートして、チャット フローをテストする対話型の方法が用意されています。 チャット ボックスを使用してチャット フローをテストするには、次の手順に従います。
- [チャット] ボタンを選択して、チャット ボックスを開きます。
- テスト入力をチャット ボックスに入力し、Enter キーを押してチャットボットに送信します。
- チャットボットの応答を確認して、コンテキストに応じて適切で正確であることを確認します。
- トレース をインプレースで表示し、監視とデバッグをすばやく行います。