プロンプト フローの開発 (クラシック)

適用対象:Foundry (クラシック) ポータル。 この記事は、新しい Foundry ポータルでは使用できません。 新しいポータルの詳細を確認します

この記事のリンクは、現在表示している Foundry (クラシック) ドキュメントではなく、新しい Microsoft Foundry ドキュメントのコンテンツを開く場合があります。

Warnung

プロンプト フロー機能の開発は、2026 年 4 月 20 日に終了しました。 この機能は、2027 年 4 月 20 日に完全に廃止されます。 提供終了日に、プロンプト フローは読み取り専用モードになります。 既存のフローは、その日付まで動作し続けます。

Recommended action: 2027 年 4 月 20 日より前に、プロンプト フローワークロードを Microsoft Agent Framework に移行します。

プロンプト フローは、大規模言語モデル (LLM) によって動作する AI アプリケーションの開発サイクル全体を合理化するために設計された開発ツールです。 プロンプト フローは、AI アプリケーションのプロトタイプ作成、実験、反復、デプロイのプロセスを簡素化する包括的なソリューションを提供します。

プロンプト フローを使用すると、次のことが可能になります。

  • 視覚化されたグラフを使用して、LLM、プロンプト、Python ツールを使用して実行可能フローを調整します。
  • フローを簡単にテスト、デバッグ、反復処理する。
  • プロンプト バリアントを作成し、そのパフォーマンスを比較する。

この記事では、Microsoft Foundry ポータルで最初のプロンプト フローを作成し、開発する方法について説明します。

[前提条件]

Important

この記事では、ハブ ベースのプロジェクトのレガシ サポートを提供します。 Foundry プロジェクトでは機能しません。 参照してください どのタイプのプロジェクトを自分が持っているかを知るにはどうすればよいですか?

SDK 互換性に関するメモ: コード例では、特定のMicrosoft Foundry SDK バージョンが必要です。 互換性の問題が発生した場合は、ハブ ベースから Foundry projectへのアクセスを検討してください。

  • プロンプト フローにはコンピューティング セッションが必要です。 ランタイムがない場合は、 Foundry ポータルで作成できます。
  • デプロイされたモデルが必要です。
  • プロジェクトで BLOB ストレージ アカウントのアクセス コントロールを構成します。 Storage BLOB データ共同作成者 ロールをユーザー アカウントに割り当てます。
    • Foundry ポータルの左下にある [管理センター] を選択します。
    • ハブの Connected resources で、Azure Blob Storage の種類に対応するリンクを選択します。
    • Azure ポータルで 表示を選択
    • Azure ポータルで、Access コントロール (IAM) を選択します。
    • [追加]>[ロールの割り当てを追加] の順に選びます。
    • Storage BLOB データ共同作成者を検索して選択します。
    • [ロールの割り当てを追加] ページを使用して、自分自身をメンバーとして追加します。
    • [確認と割り当て] を選択して割り当てを確認します。
    • [確認と割り当て] を選択してロールを割り当てます。

プロンプト フローを作成して開発する

フローを作成するには、ギャラリーで使用可能なサンプルを複製するか、最初からフローを作成します。 ローカルまたはファイル共有にフロー ファイルが既にある場合は、ファイルをインポートしてフローを作成することもできます。

Foundry ポータルでギャラリーからプロンプト フローを作成するには:

ヒント

Microsoft Foundry ポータルで左ペインをカスタマイズできるため、次の手順に示す項目とは異なる項目が表示される場合があります。 探しているものが表示されない場合は、左側のペインの下部にある… もっと見るを選択してください。

Microsoft Foundry にサインイン>。 「New Foundry」トグルがオフになっていることを確認します。 これらの手順は Foundry (クラシック) を参照します。

  1. プロジェクトを選んでください。

  2. 管理センターにいる場合は、Go to project を選択してprojectに戻ります。

  3. 折りたたみ可能な左側のメニューから [プロンプト フロー] を選びます。

  4. [+ 作成] を選択します。

  5. [標準フロー] タイルで、[作成] を選びます。

  6. [新しいフローを作成する] ページでフォルダー名を入力し、[作成] を選択します。

    標準フローの選択と作成のスクリーンショット。

  7. プロンプト フローの作成ページが開きます。 [コンピューティング セッションの開始] を選択して、フローのコンピューティング セッションを実行します。

  8. 今すぐフローを作成できます。 既定では、サンプル フローが表示されます。 このフロー例には、LLM およびPython ツールのノードがあります。

    [プロンプト フローの編集] ページでのフローの入力と出力のスクリーンショット。

    視覚化専用のグラフ ビュー。 これは、開発中のフロー構造を示しています。 グラフ ビューを直接編集することはできませんが、拡大、縮小、スクロールは可能です。 グラフ ビューでノードを選択すると、そのノードが強調表示され、ツール編集ビューでそのノードに移動できます。

  9. オプションで、フローにツールを追加することもできます。 表示されるツール オプションは、LLMPrompt、および Python です。 その他のツールを表示するには、[+その他のツール] を選択します。

    [プロンプト フローの編集] ページで他のツールを見つけることができる場所のスクリーンショット。

  10. LLM ツール エディターで接続とデプロイを選択します。

    [プロンプト フローの編集] ページの LLM ツールで選択した接続とデプロイのスクリーンショット。

  11. [入力] セクションで、トピックの値を追加します。 たとえば、"atoms" とします。

  12. [実行] を選んでフローを実行します。

    [プロンプト フローの編集] ページで [実行] を選択する場所のスクリーンショット。

  13. フロー実行の状態は、[実行中] と表示されます。

    [プロンプト フローの編集] ページの実行中状態のフローのスクリーンショット。

  14. フローの実行が完了したら、[出力内容を表示する] を選択してフロー結果を表示します。

    [プロンプト フローの編集] ページからフローの結果を表示することを選択できる場所のスクリーンショット。

  15. [出力] セクションでフローの実行状態と出力を表示できます。

    出力の詳細のスクリーンショット。

フローの作成

各フローは、flow.dag.yaml ファイル、ソース コード ファイル、システム フォルダーを含むフォルダーで表されます。 新しいファイルの追加、既存のファイルの編集、ファイルの削除を行うことができます。 ファイルをローカルにエクスポートしたり、ローカルからファイルをインポートしたりすることもできます。

既定のビューでノードをインライン編集するだけでなく、[生ファイル モード] トグルをオンにし、ファイル名を選択して開いているファイル タブでファイルを編集することもできます。

フロー入力とフロー出力

フロー入力は、全体としてフローに渡されるデータです。 名前と型を指定して、入力スキーマを定義します。 各入力の入力値を設定して、フローをテストします。 ${inputs.[input name]} 構文を使用して、フローノードのフロー入力を後で参照できます。

フロー出力は、全体としてフローによって生成されるデータであり、フロー実行の結果が要約されています。 フロー実行またはバッチ実行の完了後に、出力テーブルを表示してエクスポートできます。 構文 ${[node name].output} または ${[node name].output.[field name]}を使用して、フローの単一ノード出力を参照してフロー出力値を定義します。

ノード出力を参照することで、ノードを互いにリンクできます。 たとえば、Python ノード入力で LLM ノードの出力を参照して、Python ノードが LLM ノードの出力を使用できるようにし、グラフ ビューで 2 つのノードがリンクされていることを確認できます。

フローに対する条件付き制御を有効にする

プロンプト フローでは、フローを効率的に実行する方法だけでなく、開発者向けの強力な機能である条件付き制御も提供されており、この機能により、ユーザーはフロー内の任意のノードを実行するための条件を設定できます。

条件付き制御では、その中核として、フロー内の各ノードをアクティブ化構成に関連付ける機能が提供されます。この構成は基本的に、ノードを実行するタイミングを決定する "when" ステートメントです。 この機能の能力が認識できるのは、特定のタスクの実行が前のタスクの結果に依存する複雑なフローがある場合です。 条件付き制御を使用することで、指定した条件が満たされた場合にのみ実行するように特定のノードを構成できます。

具体的には、ノード カードの [Activate config] \(構成のアクティブ化\) ボタンを選択して、ノードのアクティブ化構成を設定できます。 "when" ステートメントを追加し、条件を設定できます。 フロー入力またはノード出力を参照することで、条件を設定できます。 たとえば、条件 ${inputs.[input name]} を特定の値として設定したり、${[node name].output} を特定の値として設定したりできます。

条件が満たされていない場合、ノードはスキップされます。 ノードの状態は "バイパス" と表示されます。

フローをテストする

フローは次の 2 つの方法でテストできます。

  • 単一ノードを実行します:

    • 単一ノードを実行するには、既定のビューのノードで [実行] アイコンを選択します。 実行が完了したら、ノードの [出力] セクションで結果をすばやく確認できます。 n ノード カードの [実行] ボタンを示すスクリーンショット。
  • フロー全体を実行します:

    • フロー全体を実行するには、右上にある [実行] ボタンを選択します。

テスト結果とトレースを表示する (プレビュー)

トレースは既定で無効になっています。トレースを有効にするには、環境変数 PF_DISABLE_TRACINGfalse に設定する必要があります。 これを行う方法の 1 つは、Python ノードに以下を追加することです:

import os
os.environ["PF_DISABLE_TRACING"] = "false"

フロー全体の実行について、フローを実行した後、実行バナーで実行状態を確認できます。 結果を確認し、フローの実行を監視するためのトレースを表示するには、[出力の 表示] を選択し、[トレース] タブを選択します。フロー全体と各ノードの入力と出力を、デバッグの詳細と共に確認できます。 これは、実行中と実行が完了した後に使用できます。

トレース ビューについて

[出力] 画面の [トレース] タブを選択すると、フローの実行時間と関連するトークンのコストに関する情報を示すグラフが表示されます。 ノード名の下のフローを選ぶと、右側のペインに詳細なフローの概要情報が表示されます。

 トレースの詳細のスクリーンショット。

プロンプト フロー SDK では、LLM関数埋め込み取得フローなど、いくつかのスパンの種類を定義しました。 指定された属性とイベントに実行情報を含むスパンは、システムによって自動的に作成されます。

スパンの種類の詳細については、「Trace span」を参照してください。

チャット フローを開発する

チャット フローは会話型アプリケーション開発用に設計されており、標準フローの機能に基づいて構築され、チャットの入力/出力とチャット履歴管理の高度なサポートを提供します。 チャット フローを使用すると、チャットの入力と出力を処理するチャットボットを簡単に作成できます。

チャット フローの作成ページでは、チャット フローは、標準フローや評価フローと区別するために "チャット" ラベルでタグ付けされています。 チャット フローをテストするには、[チャット] ボタンを選択して会話用のチャット ボックスをトリガーします。

チャットの入力/出力とチャット履歴

チャット フローを標準フローと区別する最も重要な要素は、チャット入力チャット履歴チャット出力です。

  • チャット入力: チャット入力とは、ユーザーによってチャットボットに送信されたメッセージまたはクエリを指します。 チャット入力を効果的に処理することは会話を成功させるために重要で、これにはユーザーの意図の理解、関連情報の抽出、適切な応答のトリガーが含まれます。
  • チャット履歴: チャット履歴は、ユーザー入力と 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 を参照して過去のやり取りを取得できます。 これにより、前の入力と出力を参照して、コンテキストに関連する応答を作成できます。

For-loop grammar of Jinja language を使用して、chat_history からの入力と出力の一覧を表示します。

{% for item in chat_history %}
user:
{{item.inputs.question}}
assistant:
{{item.outputs.answer}}
{% endfor %}

チャット ボックスを使用してテストする

チャット ボックスには、チャットボットとの会話をシミュレートすることで、チャット フローをテストする対話型の方法が用意されています。 チャット ボックスを使用してチャット フローをテストするには、次の手順に従います。

  1. [チャット] ボタンを選択して、チャット ボックスを開きます。
  2. テスト入力をチャット ボックスに入力し、Enter キーを押してチャットボットに送信します。
  3. チャットボットの応答を確認して、コンテキスト的に適切で正確であることを確認します。
  4. [トレースの表示] では、すばやく監視およびデバッグできます。

次のステップ