BEACHSIDE BLOG

Azure と GitHub と C# が好きなエンジニアの個人メモ ( ・ㅂ・)و ̑̑

Prompt Flow で環境変数やシークレットを利用する

Prompt Flow で Python のコードを実行する際、環境変数やシークレットを利用する方法のメモです。

Connections で Custom を使って実現できます。

余談ですが、公式のドキュメントだと Connections の翻訳が「つながり」になってたり、他の単語も変な翻訳があって混乱するので Prompt Flow 関連のドキュメントや Azure Machine Learning Studio は英語で見た方が良いと個人的に感じてます。

Connections を構成する

Azure Machine Learning Studio の Prompt Flow で、"Connections" タブをクリック → "Create" ボタンをクリック → "Custom" を選びます。

Name を入力して、あとは必要な Key と value を入力していきます。シークレットは "is secret" のチェックを入れましょう。

最後に "Save" ボタンをクリックして作成完了です。

作成した Connection をみるとこんな感じ。シークレットとして登録した値は、"Show" ボタンをクリックしてみることはできるので、そこまで制約として強くないですが、Permission で見えないように制御はできるみたい。

Prompt Flow の Python 側で利用する

Flow を作って Python tool で以下のようにコードを変えます。

  • 2行目にあるように from promptflow.connections import CustomConnection を追加します。
  • 5行目のようにメソッドの型が CustomConnection の引数を追加します。
  • 6, 7 行目で書いた感じでキーを指定して値の取得が可能です。

あとは、どの custom connection を利用するかですが、この Python tool の inputs から指定します。ただ、私の環境ではいつも以下図のようにコードで追加した conn が表示されないです。その場合は、一度実行してエラーにするとよいです (実行が遅いからだるいですが...)。

※ Row file mode で flow.dag.yaml に直接書くのが早そうですが、私の環境で何度か試しても2024年6月現時点では Flow を実行すると値が空っぽになってしまいます💦

実行して一度エラーになると、以下図のように Inputs でメソッドの2つ目の引数が指定できるようになります。値は利用可能な Connections が選択可能となっています。

ようやく設定ができましたのでこれで実行すると、こんな感じで正しく取得できてることが確認できます。