次の方法で共有


LLM ベースのアプリケーション用にプロンプト フローを DevOps と統合する

Azure Machine Learning プロンプト フローは、大規模言語モデル (LLM) ベースのアプリケーション開発用のフローを開発および反復するための、開発者向けの使いやすいコードファースト メソッドです。 プロンプト フローには、SDK と CLI、Visual Studio Code 拡張機能、フロー作成 UI が用意されています。 これらのツールにより、ローカル フローの開発、ローカル フローの実行と評価実行のトリガー、ローカルとクラウドのワークスペース環境間のフローの移行が容易になります。

プロンプト フロー エクスペリエンスとコード機能を開発者操作 (DevOps) と組み合わせて、LLM ベースのアプリケーション開発ワークフローを強化できます。 この記事では、Azure Machine Learning LLM ベースのアプリケーション用のプロンプト フローと DevOps の統合に焦点を当てます。

次の図は、DevOps を使用したローカルおよびクラウドベースのプロンプト フロー開発の相関関係を示しています。

次のフローを示す図: フローの作成、フローの開発とテスト、コード リポジトリでのバージョン管理、クラウドへの実行の送信、デビューと反復。

前提条件

プロンプト フローでコードファースト エクスペリエンスを使用する

通常、LLM ベースのアプリケーションの開発は、ソース コード リポジトリと継続的インテグレーションと継続的デプロイ (CI/CD) パイプラインを含む標準化されたアプリケーション エンジニアリング プロセスに従います。 このプロセスにより、チーム メンバー間の開発、バージョン管理、コラボレーションの合理化が促進されます。

DevOps とプロンプト フロー コード エクスペリエンスの統合により、次の主な機能と利点を備えた、より効率的な GenAIOps または LLMOps 反復プロセスがコード開発者に提供されます。

  • コード リポジトリでのフローのバージョン管理。 フロー ファイルは YAML 形式で定義でき、同じフォルダー構造の参照元ファイルに合わせて配置されます。

  • CI/CD パイプラインとのフロー実行の統合。 プロンプト フロー CLI または SDK を使用してフロー実行を自動的にトリガーすることで、プロンプト フローを CI/CD パイプラインと配信プロセスにシームレスに統合できます。

  • ローカルとクラウドの間のスムーズな移行。 バージョン管理、ローカル開発、共有のために、フロー フォルダーをローカルまたはアップストリームのコード リポジトリに簡単にエクスポートできます。 また、フロー フォルダーを Azure Machine Learning に簡単にインポートして、クラウド リソースを使用してさらに作成、テスト、デプロイすることもできます。

プロンプト フロー コードにアクセスする

各プロンプト フローには、フローを定義する重要なコード ファイルを含むフロー フォルダー構造があります。 フォルダー構造でフローが整理され、ローカルとクラウド間のスムーズな移行が容易になります。

Azure Machine Learning により、すべてのワークスペース ユーザーに共有ファイル システムが提供されます。 フローの作成時に、対応するフロー フォルダーが自動的に生成され、Users/<ユーザー名>/promptflow ディレクトリに格納されます。

新しいフローを示す標準フロー作成のスクリーンショット。

フロー コード ファイルを操作する

Azure Machine Learning スタジオでフローを作成したら、フロー作成ページの [ファイル] セクションでフロー ファイルを表示、編集、管理できます。 ファイルに加えた変更は、ファイル共有ストレージに直接反映されます。

[ファイル] ペインが強調表示されている標準フロー作成ページのスクリーンショット。

LLM ベース フローのフロー フォルダーには、次の主なファイルが含まれています。

  • flow.dag.yaml は、YAML 形式のプライマリ フロー定義ファイルです。 このファイルは、プロンプト フローの作成と定義に不可欠です。 このファイルには、フローで使用される入力、出力、ノード、ツール、バリアントに関する情報が含まれています。

  • Python (.py) または Jinja 2 (.jinja2) 形式のユーザー管理ソース コード ファイルでは、フロー内のツールとノードを構成します。 Python ツールでは、Python ファイルを使用してカスタム Python ロジックを定義します。 プロンプト ツールと LLM ツールでは、Jinja 2 ファイルを使用してプロンプト コンテキストを定義します。

  • ユーティリティおよびデータ ファイルなどのソース以外のファイルは、ソース ファイルと共にフロー フォルダーに含めることができます。

ファイル エディターで flow.dag.yaml ファイルとソース ファイルの生コードを表示および編集するには、[生ファイル モード] を有効にします。

標準フローの [生ファイル モード] のスクリーンショット。

または、Azure Machine Learning スタジオの [ノートブック] ページから、すべてのフロー フォルダーとファイルにアクセスして編集することもできます。

Azure Machine Learning の [ノートブック] のスクリーンショット。プロンプト フロー フォルダーのファイルが表示されています。

プロンプト フロー コードをダウンロードしてチェックインする

フローをコード リポジトリにチェックインするには、Azure Machine Learning スタジオからローカル コンピューターにフロー フォルダーをエクスポートします。 フロー作成ページの [ファイル] セクションにあるダウンロード アイコンを選択して、すべてのフロー ファイルを含む ZIP パッケージをダウンロードします。 その後、そのファイルをコード リポジトリにチェックインするか、解凍してファイルをローカルで操作できます。

[ファイル] エクスプローラーのダウンロード アイコンを示すスクリーンショット。

Azure Machine Learning との DevOps 統合の詳細については、「Azure Machine Learning との Git 統合」を参照してください。

ローカルで開発およびテストする

反復開発中にフローやプロンプトを改良して微調整する際に、コード リポジトリ内で複数の反復をローカルで実行できます。 VS Code コミュニティ バージョン、VS Code プロンプト フロー拡張機能、プロンプト フロー ローカル SDK と CLI により、Azure に縛られることなく、完全にローカルの開発とテストを進めることができます。

ローカルで作業することで、毎回メイン コード リポジトリを更新しなくても、変更をすばやく行ってテストできます。 ローカル バージョンの使用に関する詳細とガイダンスについては、プロンプト フローの GitHub コミュニティを参照してください。

VS Code プロンプト フロー拡張機能を使用する

プロンプト フロー VS Code 拡張機能を使用して、クラウドと同様の UI エクスペリエンスで、フローを VS Code エディターでローカルで簡単に作成できます。

プロンプト フロー拡張機能を使用して VS Code でファイルをローカルで編集するには:

  1. プロンプト フロー拡張機能が有効になっている VS Code で、プロンプト フロー フォルダーを開きます。

  2. flow.dag.yaml ファイルを開き、そのファイルの上部にあるビジュアル エディター リンクを選択します。

    VS Code のフロー定義ファイルの上部にあるビジュアル エディター リンクのスクリーンショット。

  3. プロンプト フロー ビジュアル エディターを使用して、バリアントのプロンプトを調整したり、ノードをさらに追加するなどして、フローに変更を加えます。

    VS Code のビジュアル プロンプト フロー エディターのスクリーンショット。

  4. フローをテストするには、ビジュアル エディターの上部にある [実行] アイコンを選択します。または、任意のノードをテストするには、そのノードの上部にある [実行] アイコンを選択します。

    ビジュアル エディターでのフローまたはノードの実行を示す VS Code のスクリーンショット。

プロンプト フロー SDK と CLI を使用する

コードで直接作業する場合、または Jupyter、PyCharm、Visual Studio、またはその他の統合開発環境 (IDE) を使用する場合は、flow.dag.yaml ファイル内の YAML コードを直接変更できます。

VS Code の YAML ファイルのスクリーンショット。既定の入力とフローのディレクトリが強調表示されています。

その後、次のようにターミナルでプロンプト フロー CLI または SDK を使用して、テスト用に 1 つのフロー実行をトリガーできます。

作業ディレクトリから実行をトリガーするには、次のコードを実行します。

pf flow test --flow <directory-name>

戻り値はテスト ログと出力です。

PowerShell のフロー テスト出力のスクリーンショット。

ローカル リポジトリからクラウドに実行を送信する

ローカル テストの結果に満足したら、プロンプト フロー CLI または SDK を使用して、ローカル リポジトリからクラウドに実行を送信できます。 次の手順とコードは、GitHub の Web 分類のデモ プロジェクトに基づいています。 プロジェクト リポジトリをクローンするか、プロンプト フロー コードをローカル コンピューターにダウンロードできます。

プロンプト フロー SDK をインストールする

pip install promptflow[azure] promptflow-tools を実行して、Azure プロンプト フロー SDK/CLI をインストールします。

デモ プロジェクトを使っている場合は、以下を使用して requirements.txt をインストールし、SDK とその他の必要なパッケージを取得します:
[https://login.microsoftonline.com/consumers/](pip install -r <path>/requirements.txt)

Azure Machine Learning ワークスペースに接続する

az login

フローをアップロードして実行を作成する

クラウドでのこのフロー実行の構成を定義するために、run.yml ファイルを準備します。

$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Run.schema.json
flow: <path-to-flow>
data: <path-to-flow>/<data-file>.jsonl

column_mapping:
  url: ${data.url}

# Define cloud compute resource

resources:
  instance_type: <compute-type>

# If using compute instance compute type, also specify instance name
#  compute: <compute-instance-name> 

# Specify connections

  <node-name>:
    connection: <connection-name>
    deployment_name: <deployment-name>

接続を必要とするフロー内の各ツールの接続とデプロイ名を指定できます。 接続とデプロイ名を指定しない場合は、ツールで flow.dag.yaml ファイル内の接続とデプロイが使用されます。 接続を書式設定するには、次のコードを使用します。

...
connections:
  <node-name>:
    connection: <connection-name>
      deployment_name: <deployment-name>
...

実行を作成します。

pfazure run create --file run.yml

評価フロー実行を作成する

クラウドでこの評価フロー実行の構成を定義するために、run_evaluation.yml ファイルを準備します。

$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Run.schema.json
flow: <path-to-flow>
data: <path-to-flow>/<data-file>.jsonl
run: <id-of-base-flow-run>
column_mapping:
  <input-name>: ${data.<column-from-test-dataset>}
  <input-name>: ${run.outputs.<column-from-run-output>}

resources:
  instance_type: <compute-type>
  compute: <compute_instance_name> 

connections:
  <node-name>:
    connection: <connection-name>
    deployment_name: <deployment-name>
  <node-name>:
    connection: <connection-name>
    deployment_name: <deployment-name>

評価実行を作成します。

pfazure run create --file run_evaluation.yml

実行結果の表示

フロー実行をクラウドに送信すると、実行のクラウド URL が返されます。 URL を開き、Azure Machine Learning スタジオで実行結果を表示できます。 次の CLI または SDK コマンドを実行して、実行結果を表示することもできます。

ログをストリーミングする

pfazure run stream --name <run-name>

実行の出力を表示する

pfazure run show-details --name <run-name>

評価実行メトリックを表示する

pfazure run show-metrics --name <evaluation-run-name>

DevOps との統合

ローカル開発環境と Git などのバージョン管理システムの組み合わせは、通常、反復開発に最も効果的です。 変更を加えてコードをローカルでテストし、変更を Git にコミットできます。 このプロセスにより、変更の進行中の記録が作成され、必要に応じて以前のバージョンに戻す機能が提供されます。

異なる環境間でフローを共有する必要がある場合は、GitHub や Azure Repos などのクラウドベースのコード リポジトリにプッシュできます。 この戦略により、任意の場所から最新のコード バージョンにアクセスでき、コラボレーションとコード管理のためのツールが提供されます。

これらのプラクティスに従うことで、チームは、プロンプト フロー開発のためのシームレスで効率的な生産性の高いコラボレーション環境を作成できます。

Web 分類フローを実行するエンド ツー エンドの LLMOps パイプラインの例については、「プロンプト フロートと GitHub を使ってエンド ツー エンドの GenAIOps を設定する」と GitHub の Web 分類のデモ プロジェクトを参照してください。

CI パイプラインでのフロー実行をトリガーする

フローを正常に開発してテストし、初期バージョンとしてチェックインしたら、調整とテストの反復の準備が整います。 この段階では、プロンプト フロー CLI を使用して CI パイプラインの手順を自動化することで、バッチ テストや評価実行を含むフロー実行をトリガーできます。

フロー反復のライフサイクル全体を通して、CLI を使用して次の操作を自動化できます。

  • pull request 後のプロンプト フローの実行
  • 結果が高品質であることを確認するためのプロンプト フロー評価の実行
  • プロンプト フロー モデルの登録
  • プロンプト フロー モデルのデプロイ

継続的な開発にスタジオ UI を使用する

フロー開発の任意の時点で、Azure Machine Learning スタジオ UI に戻り、クラウド リソースとエクスペリエンスを使用してフローを変更できます。

最新バージョンのフロー ファイルの開発と操作を続行するために、[ノートブック] ページのターミナルにアクセスし、リポジトリから最新のフロー ファイルをプルできます。 または、ローカル フロー フォルダーを新しいドラフト フローとして直接インポートして、ローカルとクラウドの開発をシームレスに切り替えることができます。

[新しいフローの作成] 画面のスクリーンショット。ローカルへのアップロードが強調表示されています。

フローをオンライン エンドポイントとしてデプロイする

運用環境に移動する最後の手順は、オンライン エンドポイントとしてフローを Azure Machine Learning にデプロイすることです。 このプロセスにより、フローをアプリケーションに統合し、使用できるようになります。 フローのデプロイ方法の詳細については、リアルタイム推論のための Azure Machine Learning マネージド オンライン エンドポイントへのフローのデプロイに関するページを参照してください。

フロー開発で共同作業を行う

プロンプト フローを使用して LLM ベースのアプリケーションを開発する場合、チーム メンバー間のコラボレーションが不可欠になる場合があります。 チーム メンバーは、同じフローを作成してテストしたり、フローのさまざまなファセットに取り組んだり、反復的な変更や機能強化を同時に行ったりすることがあります。 このコラボレーションでは、コードの共有、変更の追跡、バージョンの管理、最終的なプロジェクトへの変更の統合のための効率的で合理化されたアプローチが必要です。

プロンプト フロー SDK/CLI と VS Code プロンプト フロー拡張機能により、ソース コード リポジトリ内でのコードベースのフロー開発の簡単なコラボレーションが促進されます。 GitHub や Azure Repos などのクラウドベースのソース管理システムを使用して、変更の追跡、バージョンの管理、およびこれらの変更の最終的なプロジェクトへの統合を行うことができます。

コラボレーション開発のベスト プラクティスに従う

  1. 一元化されたコード リポジトリを設定します。

    コラボレーション プロセスの最初の手順では、プロンプト フロー コードを含む、プロジェクト コードのベースとしてコード リポジトリを設定します。 この一元化されたリポジトリにより、効率的な組織化、変更の追跡、チーム メンバー間のコラボレーションが可能になります。

  2. プロンプト フロー拡張機能を使用して、VS Code でフローをローカルで作成して 1 回テストします。

    リポジトリが設定されたら、チーム メンバーは、フローをローカルで作成し、入力テストを 1 回行うためにプロンプト フロー拡張機能と共に VS Code を使用できます。 標準化された統合開発環境により、フローのさまざまな側面に取り組む複数のメンバー間のコラボレーションが促進されます。

    ローカル開発のスクリーンショット。

  3. pfazure CLI または SDK を使用して、ローカル フローからクラウドにバッチ実行と評価実行を送信します。

    ローカルでの開発とテストの後、チーム メンバーはプロンプト フロー CLI/SDK を使用して、バッチおよび評価実行をクラウドに送信して評価できます。 このプロセスにより、クラウド コンピューティングの使用、永続的な結果の格納、デプロイ用のエンドポイントの作成、スタジオ UI での効率的な管理が可能になります。

    クラウドに実行を送信する pfazure コマンドのスクリーンショット。

  4. Azure Machine Learning スタジオ ワークスペース UI で実行結果を表示および管理します。

    クラウドに実行を送信した後、チーム メンバーはスタジオ UI にアクセスして結果を表示し、効率的に実験を管理できます。 クラウド ワークスペースにより、実行履歴、ログ、スナップショット、インスタンス レベルの入力と出力を収集および管理するための一元的な場所が提供されます。

    クラウド実行スナップショットのスクリーンショット。

  5. すべての実行履歴が記録される [実行] リストを使用すると、さまざまな実行の結果を簡単に比較できるため、品質分析と必要な調整に役立ちます。

    ワークスペース内の実行リストのスクリーンショット。

  6. ローカルの反復開発を引き続き使用します。

    実験の結果を分析した後、チーム メンバーは、さらに開発して微調整するためにローカル環境とコード リポジトリに戻り、その後の実行を繰り返しクラウドに送信できます。 この反復的なアプローチにより、チームが運用環境の品質に満足するまで、一貫した強化が保証されます。

  7. スタジオでの運用環境への 1 ステップ デプロイを使用します。

    チームがフローの品質に完全に自信を持てたら、堅牢なクラウド環境でオンライン エンドポイントとしてシームレスにデプロイできます。 オンライン エンドポイントとしてのデプロイは、実行スナップショットに基づいて行うことができます。これにより、安定した安全なサービス提供、さらなるリソースの割り当てと使用状況の追跡、クラウドでのログ監視が可能になります。

    実行スナップショットからのフローのデプロイのスクリーンショット。

    Azure Machine Learning スタジオの [デプロイ] ウィザードは、デプロイを簡単に構成するのに役立ちます。

    デプロイ ウィザードのスクリーンショット。