LangChain Python ライブラリは、大規模言語モデル (LLM)、エージェント、依存関係ツールを使用するアプリケーションを開発するためのフレームワークです。 この記事では、Azure Machine Learning プロンプト フローを使用して LangChain 開発をパワーアップする方法について説明します。
LangChain とプロンプト フローの統合は、カスタム言語モデルを簡単に構築およびテストするのに役立つ強力な組み合わせです。 LangChain モジュールを使用してフローを構築してから、プロンプト フロー プロセスを使用して一括テスト、評価、最終的なデプロイ用の実験をスケーリングできます。 たとえば、より大規模なデータセットに基づいて大規模な実験を実行できます。
LangChain コードに基づくローカル プロンプト フローが既にある場合は、それをさらなる実験のために Azure Machine Learning プロンプト フローに簡単に変換できます。 また、LangChain SDK のクラスと関数を直接使用する場合は、カスタム LangChain コードを使用する Python ノードを使用して Azure Machine Learning フローを簡単に構築できます。
前提条件
- 適切にテストされ、デプロイの準備ができているローカルの LangChain フロー。
langchain
を含む、requirements.txt ファイルに一覧表示されているパッケージを追加することで Machine Learning プロンプト フローを実行できるコンピューティング セッション。 詳細については、「プロンプト フロー コンピューティング セッションを管理する」を参照してください。
LangChain コードをプロンプト フローに変換する
次のプロセスを使用して、ローカル LangChain コードを実行可能な Azure Machine Learning プロンプト フローに変換します。
資格情報をプロンプト フロー接続に変換する
LangChain コードでは、AzureOpenAI モデルを呼び出すために必要な AzureOpenAI API キーなどの資格情報を保存するための環境変数を定義する場合があります。 たとえば、次のコードは、OpenAI API の種類、キー、ベース、バージョンに設定されている環境変数を示しています。
os.environ["OPENAI_API_TYPE"] = "azure"
os.environ["OPENAI_API_VERSION"] = "2023-05-15"
os.environ["OPENAI_API_BASE"] = "https://contosobamiopenai.openai.azure.com/"
os.environ["OPENAI_API_KEY"] = "abc123abc123abc123abc123abc123ab"
クラウドで Azure Machine Learning プロンプト フローを実行する場合は、資格情報を環境変数として公開しないことをお勧めします。 コードとは別に資格情報を安全に保存および管理するには、環境変数をプロンプト フロー接続に変換する必要があります。
カスタム資格情報 (LLM API キーまたはその他の必要な資格情報など) を安全に保存する接続を作成するには:
Azure Machine Learning ワークスペースの [プロンプト フロー] ページで、[接続] タブを選択し、[作成] を選択します。
ドロップダウン リストから接続の種類を選択します。 この例では、[カスタム] を選択します。
右側のウィンドウで、接続の [名前] を定義し、[キーと値のペアの追加] を選択して、資格情報とキーを保存する [キーと値のペア] を追加します。
暗号化されたキーの値を保存するには、1 つ以上のキーと値のペアの横にある [はシークレット] チェック ボックスをオンにします。 カスタム接続を正常に作成するには、少なくとも 1 つの値をシークレットとして設定する必要があります。
[保存] を選択します。
カスタム接続は、キーと資格情報、または LangChain コードに明示的に定義されている対応する環境変数を置き換えることができます。 フローでカスタム接続を使用するには、「接続の構成」を参照してください。
LangChain コードを実行可能なフローに変換する
フローを作成するには、Azure Machine Learning スタジオ内の [プロンプト フロー] ページの [作成] を選択し、フローの種類を選択します。 フローの作成ページで、フローを作成する前にコンピューティング セッションを開始します。 ページの上部にあるツールの種類を選択し、対応するノードをフローに挿入します。 フローの作成手順の詳細については、「プロンプト フローの開発」を参照してください。
コンピューティング セッションに langchain
パッケージの依存関係が含まれている限り、すべての LangChain コードをフロー内の Python ノードで直接実行できます。
LangChain コードを Azure Machine Learning プロンプト フローに変換するには、2 つの方法があります。 実装するフローの種類は、ユース ケースによって異なります。
実験管理を向上させるために、フローで Azure Machine Learning Python とプロンプト ツールを使用するようにコードを変換できます。 プロンプト テンプレートをコードからプロンプト ノードに抽出し、残りのコードを単一または複数の Python ノードまたはツールに結合します。 このオプションを使用すると、バリアントを実行してプロンプトを簡単に調整でき、評価結果に基づいて最適なプロンプトを選択できます。
次の例は、プロンプト ノードと Python ノードの両方を使用するフローを示しています。
変換プロセスをより簡単にするために、Python ノード内から LangChain LLM ライブラリを直接呼び出すことができます。 プロンプト定義を含むすべてのコードが Python ノードで実行されます。 このオプションは、より大規模なデータセットやその他の構成に基づくより高速なバッチ テストをサポートしています。
次の例は、Python ノードのみを使用するフローを示しています。
接続の構成
フローを構造化し、コードを特定のツール ノードに移動した後、元の環境変数を接続内の対応するキーに置き換える必要があります。 作成したカスタム接続を使用するには、次の手順に従います。
Python ノードで、次を入力してカスタム接続ライブラリをインポートします。
[https://login.microsoftonline.com/consumers/](from promptflow.connections import CustomConnection
)Note
Azure OpenAI 接続をインポートするには、
from promptflow.connections import AzureOpenAIConnection
を使用します。ツール関数で、
CustomConnection
型の入力パラメータを定義します。キーまたは資格情報を最初に定義した環境変数を、接続内の対応するキーに置き換えます。
ノード UI の入力セクションへの入力を解析し、UI 内の [値] ドロップダウンからカスタム接続を選択します。
また、LLM ノードなど、これらを必要とするその他任意のノードで接続パラメーターを必ず構成してください。
入力と出力を構成する
フローを実行する前に、ノードの入力と出力およびフロー全体の入力と出力を構成してください。 必要なすべてのデータがフローを適切に通過し、目的の結果が得られるようにするには、この手順が重要です。 詳細については、「フローの入力と出力」を参照してください。