Azure Machine Learning新機能 prompt flowで大規模言語モデルを活用する

Azure Machine Learningでprompt flowの機能が実装されました。

本機能はLLMの専門ライブラリを使わなくても視覚的に開発を行うことができます。APIのデプロイやテストなどの機能も用意されており、今後のLLMシステム開発において一貫したプラットフォームとして活用することができます。

本記事ではplomt flow機能の立ち位置から、導入方法とチュートリアルの実行方法までを解説します。

概要

2023年5月のMS Buildで、Azure Machine Learningにprompt flowの機能がプレビューされました。

prompt flowは、プロンプトエンジニアリングにおける内部的な仕組みを視覚的に用意することができるツールです。これによってより簡単に、複雑な機能を持ったシステムを実装することができます。

本記事では、prompt flowを使用するために必要な手順について解説します。

Prompt Flowとは?

GPTモデルを使用して複雑な処理を行わせる場合、タスクを完了するために手順を踏む必要があります。 ケースとしては検索エンジンを使用しての回答生成、社内ナレッジの検索などのプラグイン開発を行うような場合です。

他のデータソースを使用して会話を生成するGroundingや、Grounding動的に実行するReActなどが、いわゆるプロンプトエンジニアリングと呼ばれています。

このようなプロンプトエンジニアリング プロジェクトの開発、評価、継続的インテグレーション (CI/CD) を、自然言語やPythonコードなどを使用して実装します。その際に「Prompt Flow」を使用することができます。

以下の記事で詳しい解説がなされています。 techcommunity.microsoft.com

6月時点では一部ユーザーのみ使用されていましたが、2023年7月6日時点で、本機能が全体のAzure Machine Learningユーザーにプレビューとして公開されました。

Azure Machine Learningを使用しているユーザーはこの機能を使用できます。

チュートリアル実行手順

接続の作成

プロンプトフロー機能を開いて「接続」タブを選択します。
選択肢の中から「Azure OpenAI」を選択します。

API Keyと、API Base(エンドポイントURL)を設定します。
その他の項目は適切に設定します。

ランタイムの作成

プロンプトフロー機能を開いて「ランタイム」タブを選択します。
作成ボタンから、コンピューティングインスタンスランタイムを選択します。

以下の通り作成したランタイムは一覧で管理されます。

余談ですが、最小のSTANDARD_A1_V2ではランタイムの作成がうまくいかなかったため、最低スペック以上のコンピューティングインスタンスを用意する必要がありそうです。(Standard_DS12_v2 以上では問題なく動作しました)

Prompt Flowの作成

プロンプトフロー機能を開いて「フロー」タブを選択します。

作成ボタンを押すと、次のようにフローを作成することができる画面に移行します。
単純に複数のフローから回答を作成したり、チャットベースでログを保持しながらの会話を実行したりさせることができます。

今回は例としてAsk Wikipediaを選択します。

サンプルのフローが表示されます。
このフローはWikipediaのソースを使用して、ユーザーの入力から結果を生成します。
デフォルトではユーザーが「When did OpenAI announce GPT-4?」と入力したことを想定しており、アウトプットはフローの最終出力をそのまま使用するように設定されています。
この部分を変更することで、入出力の結果を変えてフローを簡易的にテストすることができます。

フローではざっくり以下の処理を行っています。

  • get_wiki_url
  • search_result_from_url
    • get_wiki_urlで取得したURLを使って、同じくWebスクレイピングを行い具体的なコンテンツを取得します
  • process_search_result
    • 検索したコンテンツ(今回の場合は2件)を1つのString型変数にまとめます
  • augmented_qna
    • 「検索したWikipediaのソースを使用して結果を作ること」という風にプロンプトが組まれており、GPTで生成した結果をアウトプットに出力します。

実行のために「augmented_qna」ノードの接続を、自身で作成したopen aiリソースの接続に変更しておく必要があります。
(接続のタブを上記で設定した名前のOpenAIリソースに、deployment_nameのタブを使用するモデルに切り替えておきます)

実行ボタンを押すことでフローを実行します。
各フローで取得される結果を左側のセルごとの出力、もしくは右側フローのDetailsから確認できます。

既存のライブラリとの違いは何か

ReActなどを実装したい場合、Lang Chainでも同様の仕組みを構成することができます。

しかしprompt flow機能を使用することで、Python+LLMの知識のみで、専門ライブラリの知識がなくてもプログラムの流れを作っていくことができます。

Azure Machine Learningによって外部のAzure サービスと統合しやすく、また計算リソースもAzure Machine Learningマネージドなコンピューターを使用するため管理が非常にやりやすいです。

作成したフローをAPIとしてデプロイするのも「デプロイ」のボタンを押して設定していくだけなので、ほぼ即座に行うことができます。

テスト用のデータを用意しておくことで、自分が作ったフローをテストすることができるようです。
今回の記事ではそこまで踏み込みませんが、作成したプラグインに対するテストを簡単に行うことができる点はLang Chainのライブラリにはない明確に優れた点です。

おわりに

今回の記事ではAzure Machine Learningのprompt flowについて解説しました。

Azure Machine Learningはデータセット管理、コンピューティングリソース管理、環境管理、APIデプロイといった既存の機能に加えて、HuggingFaceと統合されたモデル管理機能などを使用することができるようになっています。

LLMシステム開発において使いやすい機能がそろっているため、ぜひAzure Machine Learningを使ってみてください。

執筆担当者プロフィール
西野 佑基

西野 佑基(日本ビジネスシステムズ株式会社)

機械学習系ソリューション開発、業務Webアプリ開発、開発環境自動化などを担当。

担当記事一覧