Microsoft PromptFlow 快速入门指南:开发DAG工作流
前言
在现代机器学习工作流中,构建高效、可维护的流程至关重要。Microsoft PromptFlow 提供了一个强大的框架,允许开发者以代码优先的方式创建和管理机器学习工作流。本文将带您快速了解如何使用PromptFlow开发基于DAG(有向无环图)的工作流。
环境准备
在开始之前,请确保您已准备好以下环境:
-
Python环境:推荐使用Python 3.9或更高版本。可以使用conda创建隔离环境:
conda create --name pf python=3.9 conda activate pf
-
安装PromptFlow:
pip install promptflow promptflow-tools
-
验证安装:
pf -v
理解PromptFlow的核心概念
什么是Flow?
在PromptFlow中,Flow是一个由YAML文件定义的DAG(有向无环图),它由多个相互连接的函数节点组成。每个节点代表一个特定的处理步骤,节点之间通过输入/输出依赖关系连接。
Flow目录结构
典型的Flow目录包含以下关键文件:
flow.dag.yaml
:定义Flow的结构、输入输出、节点和工具.promptflow/flow.tools.json
:包含工具元数据- 源代码文件(.py, .jinja2等):实现具体功能的脚本
requirements.txt
:Python依赖包列表
实战:Web分类示例
让我们通过一个实际的Web分类示例来理解PromptFlow的工作方式。
1. 获取示例项目
示例项目演示了如何使用GPT模型对URL进行分类。项目结构清晰,是学习PromptFlow的理想起点。
2. 安装依赖
进入项目目录后,首先安装所需依赖:
pip install -r requirements.txt
3. 理解DAG定义
flow.dag.yaml
文件定义了整个工作流的拓扑结构。主要包含以下部分:
- inputs:定义Flow的输入参数
- nodes:定义各个处理节点及其连接关系
- outputs:定义Flow的最终输出
开发工具推荐
VS Code扩展
PromptFlow提供了专门的VS Code扩展,极大地提升了开发体验:
- 安装VS Code Python扩展
- 安装PromptFlow扩展
- 选择合适的Python解释器
扩展提供了可视化编辑器,可以直观地查看和编辑Flow结构。
开发与测试流程
编辑Flow
您可以通过以下方式修改Flow:
- 修改默认输入值
- 添加/删除节点
- 调整节点连接关系
例如,修改flow.dag.yaml
中的默认URL:
inputs:
url:
type: string
default: https://www.example.com
创建连接
许多Flow需要与外部服务(如OpenAI API)交互。PromptFlow使用"连接"来安全地管理这些服务的凭据。
使用CLI创建连接
准备connection.yaml
文件:
name: open_ai_connection
type: azure_open_ai
api_key: your_api_key
api_base: your_api_endpoint
然后执行:
pf connection create -f connection.yaml
使用SDK创建连接
from promptflow.client import PFClient
from promptflow.entities import AzureOpenAIConnection
pf = PFClient()
connection = AzureOpenAIConnection(
name="open_ai_connection",
api_key="your_api_key",
api_base="your_api_endpoint"
)
pf.connections.create_or_update(connection)
测试Flow
PromptFlow提供多种测试方式:
CLI方式
pf flow test --flow web-classification
SDK方式
from promptflow.client import PFClient
pf = PFClient()
flow_result = pf.test(flow="web-classification",
inputs={"url": "https://www.example.com"})
VS Code扩展方式
通过可视化界面点击"Run Flow"按钮即可测试。
最佳实践建议
- 版本控制:将Flow定义文件和源代码纳入版本控制
- 模块化设计:将复杂逻辑拆分为多个小节点
- 文档注释:为每个节点添加清晰的文档说明
- 参数化配置:将可能变化的参数提取到Flow输入中
后续学习路径
掌握基础后,您可以进一步学习:
- 从零开始创建自定义Flow
- 使用多行数据文件运行和评估Flow
- 将Flow部署为Web应用
- 在Azure AI环境中使用PromptFlow进行团队协作
PromptFlow为机器学习工作流开发提供了强大而灵活的工具集,通过本文的入门指南,您已经掌握了基本概念和操作方法。接下来,可以通过实践项目深化理解,构建更复杂的机器学习工作流。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考