你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
警告
Prompt Flow 功能开发于 2026 年 4 月 20 日结束。 该功能将于 2027 年 4 月 20 日完全停用。 在停用日期,Prompt Flow 进入只读模式。 现有流将继续运行到该日期。
Recommended action: 将提示流工作负载迁移到 2027 年 4 月 20 日之前Microsoft Agent Framework。
使用 Python 工具,可以在提示流中将自定义代码片段创建为自包含可执行节点。 可以轻松创建Python工具、编辑代码和验证结果。
Inputs
| Name | 类型 | Description | Required |
|---|---|---|---|
| Code | 字符串 | Python代码片段 | Yes |
| Inputs | - | 工具函数参数及其赋值列表 | - |
Types
| 类型 | Python示例 | Description |
|---|---|---|
| int | param: int | 整数类型 |
| bool | param: bool | 布尔类型 |
| 字符串 | param: str | 字符串类型 |
| double | param:float | Double 类型 |
| list | param: list 或 param: List[T] | 列表类型 |
| 对象 | param: dict 或 param: Dict[K, V] | 对象类型 |
| Connection | param:CustomConnection | 连接类型为专门处理 |
具有 Connection 类型注释的参数将视为连接输入,这意味着:
- 提示流扩展显示用于选择连接的选择器。
- 在执行期间,提示流尝试从传入的参数值中找到具有相同名称的连接。
Note
类型 Union[...] 批注 仅 支持连接类型,例如 param: Union[CustomConnection, OpenAIConnection]。
Outputs
输出是Python工具函数的返回值。
使用 Python 工具进行写入
使用 Python 工具编写时,请使用以下准则。
Guidelines
Python工具代码应包含完整的Python代码,包括任何必要的模块导入。
Python工具代码必须包含用
@tool(工具函数)修饰的函数,该函数用作执行入口点。 应仅在代码片段中应用@tool修饰器一次。下面的示例定义用
@tool修饰的 Python 工具my_python_tool。必须在
Inputs节中分配Python工具函数参数。下面的示例定义输入
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
Inputs
| Name | 类型 | 流 YAML 中的示例值 | 传递给函数的值 |
|---|---|---|---|
| 消息 | 字符串 | world |
world |
| my_conn | CustomConnection |
my_conn |
(属于CustomConnection 对象)的父级。 |
提示流尝试查找在执行期间命名 my_conn 的连接。
Outputs
"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
若要将一个键值对设置为机密,请选中 “是机密 ”复选框。 此选项将加密和存储密钥值。 确保至少将一个键值对设置为机密。 否则,连接不能成功创建。
在 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