警告
Microsoft Foundry 與 Azure Machine Learning 中的提示流程將於 2027 年 4 月 20 日退役。 新開發不再建議使用提示流程。 請於 2027 年 4 月 20 日前將現有的提示流程應用程式與部署遷移至 Microsoft Agent Framework。
提示流程容器映像檔不再接收更新,包括安全性與套件更新。 此規定適用於提示流程執行時影像,包括 promptflow-runtime、、 promptflow-runtime-stable及 promptflow-python。
自 2027 年 4 月 20 日起,Prompt 流程,包括 Microsoft Foundry 與 Azure Machine Learning 中的網頁撰寫體驗、VS Code 擴充套件及相關的 Prompt 流程容器映像,將不再支援或提供。
如果您的應用程式依賴提示流程部署或執行時映像檔,請計畫在退休日前將這些工作負載移至支援的替代方案,如
Python 工具讓你能在提示流程中建立自訂的程式碼片段,作為自包含的可執行節點。 你可以輕鬆建立 Python 工具、編輯程式碼並驗證結果。
輸入
| Name | 類型 | Description | 為必填項目 |
|---|---|---|---|
| Code | 字串 | Python 程式碼片段 | 是的 |
| 輸入 | - | 工具函數參數及其指派列表 | - |
Types
| 類型 | Python 範例 | Description |
|---|---|---|
| int | 參數:整數 | 整數型 |
| bool | param:bool | 布林型 |
| 字串 | 參數:字串 | 字串類型 |
| double | param:float | 雙型 |
| list | param: list 或 param: List[T] | 清單類型 |
| 物件 | param: dict 或 param: Dict[K, V] | 物件類型 |
| 連線 | param: CustomConnection | 連線類型是專門處理的 |
帶有 型 Connection 別註解的參數被視為連接輸入,意即:
- 提示流程擴充功能會顯示一個選擇器來選擇連接。
- 執行時,提示流程會嘗試從傳入的參數值中尋找同名的連線。
Note
Union[...]類型註解僅支援連線類型,例如。 param: Union[CustomConnection, OpenAIConnection]
輸出
輸出是 Python 工具函式的回傳值。
用 Python 工具寫作
使用Python工具寫作時請遵循以下指引。
指導方針
Python 工具程式碼應包含完整的 Python 程式碼,包括必要的模組匯入。
Python工具程式碼必須包含一個以
@tool(工具函式)裝飾的函式,作為執行的入口。 裝飾劑只在片段中塗抹@tool一次。以下範例定義了Python工具
my_python_tool,並以@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 金鑰或其他必要的憑證。
Note
要將一對鍵值設定為秘密,請選擇 is secret 勾選框。 這個選項會加密並儲存你的金鑰值。 確保至少有一對鍵值設定為秘密。 否則,連結就無法成功建立。
用 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