Warnung
Microsoft Foundry と Azure Machine Learning のプロンプト フローは、2027 年 4 月 20 日に廃止されます。 新しい開発では、プロンプト フローは推奨されなくなりました。 2027 年 4 月 20 日より前に、既存の Prompt フロー アプリケーションとデプロイを Microsoft Agent Framework に移行します。
プロンプト フロー コンテナー イメージは、セキュリティやパッケージの更新プログラムなど、更新プログラムを受信しなくなりました。 これは、 promptflow-runtime、 promptflow-runtime-stable、 promptflow-pythonなどのプロンプト フロー ランタイム イメージに適用されます。
2027 年 4 月 20 日以降、Microsoft Foundry と Azure Machine Learning の Web 作成エクスペリエンス、VS Code 拡張機能、関連する Prompt フロー コンテナー イメージなど、プロンプト フローはサポートされなくなり、使用できなくなります。
アプリケーションがプロンプト フローのデプロイまたはランタイム イメージに依存している場合は、提供終了日より前に、サポートされている代替手段 (Microsoft Agent Framework にワークロードを移動することを計画します。 移行ガイダンスについては、プロンプト フロー移行ガイドと移行コード サンプルを参照してください。
Python ツールを使用すると、プロンプト フローで自己完結型の実行可能ノードとしてカスタマイズされたコード スニペットを作成できます。 Pythonツールの作成、コードの編集、結果の確認を簡単に行うことができます。
入力
| Name | タイプ | Description | Required |
|---|---|---|---|
| Code | 文字列 | Python コード スニペット | はい |
| 入力 | - | ツール関数パラメーターとその割り当ての一覧 | - |
Types
| タイプ | Pythonの例 | Description |
|---|---|---|
| 整数 (int) | param: int | 整数型 |
| bool | param: bool | ブール型 |
| 文字列 | パラメータ: 文字列 | 文字列の種類 |
| double | パラメータ: float | Double 型 |
| list | param: list または param: List[T] | リスト タイプ |
| オブジェクト | param: dict または param: Dict[K, V] | オブジェクトの種類 |
| Connection | param: CustomConnection | 接続の種類は特別に処理されます |
Connection型注釈を持つパラメーターは、接続入力として扱われます。つまり、次のことを意味します。
- プロンプト フロー拡張機能には、接続を選択するセレクターが表示されます。
- 実行中、プロンプト フローは、渡されたパラメーター値から同じ名前の接続を検索しようとします。
Note
Union[...]型注釈は、接続の種類 (たとえば、) param: Union[CustomConnection, OpenAIConnection]サポートされます。
出力
出力は、Python ツール関数の戻り値です。
Python ツールを使用して書き込む
Python ツールを使用して記述する場合は、次のガイドラインに従います。
Guidelines
Pythonツール コードは、必要なモジュールのインポートを含む完全なPython コードで構成されている必要があります。
Pythonツール コードには、
@tool(ツール関数) で修飾された関数が含まれている必要があります。これは、実行のエントリ ポイントとして機能します。 スニペット内で@toolデコレーターを 1 回だけ適用します。次の例では、
my_python_toolで修飾される Python ツール@toolを定義します。Pythonツール関数パラメーターは、
Inputsセクションで割り当てる必要があります。次の例では、入力
messageを定義し、world割り当てます。Python ツール関数には戻り値が必要です。
次の例では、連結された文字列が返されます。
Code
次のスニペットは、ツール関数の基本的な構造を示しています。 プロンプト フローは、関数を読み取り、関数パラメーターと型注釈から入力を抽出します。
from promptflow import tool
from promptflow.connections import CustomConnection
# The inputs section will change based on the arguments of the tool function, after you save the code
# Adding type to arguments and return value will help the system show the types properly
# Please update the function name/signature per need
@tool
def my_python_tool(message: str, my_conn: CustomConnection) -> str:
my_conn_dict = dict(my_conn)
# Do some function call with my_conn_dict...
return 'hello ' + message
入力
| Name | タイプ | フロー YAML のサンプル値 | 関数に渡される値 |
|---|---|---|---|
| メッセージ | 文字列 | world |
world |
| my_conn | CustomConnection |
my_conn |
CustomConnection オブジェクト |
プロンプト フローは、実行中に my_conn という名前の接続を見つけようとします。
出力
"hello world"
Python ツールから推論モデルを呼び出す
LLM ノードでサポートされていない推論モデルを呼び出す必要がある場合は、Python ツールを使用してモデルを直接呼び出すことができます。 次の例は、Python ツールから推論モデルを呼び出す方法を示しています。
from promptflow import tool
from promptflow.connections import AzureOpenAIConnection
from openai import AzureOpenAI
@tool
def my_python_tool(
OpenAIConnection: AzureOpenAIConnection,
scope_reply: str
):
model_name = "o3-mini"
deployment = "o3-mini"
print(OpenAIConnection['api_base'])
endpoint = OpenAIConnection['api_base'] #"https://<your endpoint>.openai.azure.com/"
model_name = "o3-mini" #your model name
deployment = "o3-mini" #your deployment name
subscription_key = OpenAIConnection['api_key']
api_version = "2024-12-01-preview" #Supply an API version that supports reasoning models.
client = AzureOpenAI(
api_version=api_version,
azure_endpoint=endpoint,
api_key=subscription_key,
)
response = client.chat.completions.create(
messages=[
{
"role": "system",
"content": "You are a helpful assistant.",
},
{
"role": "user",
"content": "I am going to Paris, what should I see?",
}
],
max_completion_tokens=100000,
model=deployment
)
return response.choices[0].message.content
Python ツールでのカスタム接続
認証を使用して外部サービスを呼び出す必要があるPython ツールを開発している場合は、プロンプト フローでカスタム接続を使用します。 これを使用して、アクセス キーを安全に格納し、Python コードで取得できます。
カスタム接続を作成する
大規模言語モデル API キーまたはその他の必要な資格情報をすべて格納するカスタム接続を作成します。
ワークスペースのプロンプト フローに移動し、[ 接続 ] タブを選択します。
[ 作成>Custom] を選択します。
右側のウィンドウで、接続名を定義できます。 [キーと値のペアの追加] を選択すると、複数のキーと値の ペアを追加して資格情報とキーを格納できます。
Note
1 つのキーと値のペアをシークレットとして設定するには、[ シークレット ] チェック ボックスをオンにします。 このオプションは、キー値を暗号化して格納します。 少なくとも 1 つのキーと値のペアがシークレットとして設定されていることを確認します。 それ以外の場合、接続は正常に作成されません。
Pythonでカスタム接続を使用する
Python コードでカスタム接続を使用するには:
Python ノードのコード セクションで、カスタム接続ライブラリ
from promptflow.connections import CustomConnectionをインポートします。 ツール関数でCustomConnection型の入力パラメーターを定義します。入力セクションへの入力を解析し、[ 値 ] ドロップダウンでターゲット のカスタム接続を選択します。
例えば次が挙げられます。
from promptflow import tool
from promptflow.connections import CustomConnection
@tool
def my_python_tool(message: str, myconn: CustomConnection) -> str:
# Get authentication key-values from the custom connection
connection_key1_value = myconn.key1
connection_key2_value = myconn.key2