在人工智能领域中,代码先行与模型紧密结合的Prompt Flow逐渐成为开发者关注的新焦点。今天,我们将共同探索如何快速启动Prompt Flow项目,深入了解流(flow)的概念,并学习如何使用VS Code Extension或YAML来编辑flow,最终在CLI、SDK或VS Code扩展中测试flow。本文将为初学者提供一个清晰的操作指引,即使您是Python新手,也能轻松迈出Prompt Flow之旅的第一步。
掌握语义内核(Semantic Kernel):如何精进你的提示词工程
设置开发环境:
我们需要一个安装了3.9或更高版本的Python环境,推荐使用Python环境管理器Miniconda。安装好Miniconda后,运行以下命令创建一个Python环境:
conda create --name pf python=3.9
conda activate pf
然后,安装Prompt Flow及其工具:
pip install promptflow promptflow-tools
检查安装是否成功:
# 应打印出Prompt Flow的版本,例如:"0.1.0b3"
pf -v
理解flow的概念:
在Prompt Flow中,flow是通过输入/输出依赖连接起来并基于拓扑结构执行的函数的有向无环图(DAG),表示为YAML文件。
获取flow的demo示例:
克隆样本仓库,检查examples/flows文件夹中的flow:
git clone https://github.com/microsoft/promptflow.git
理解flow目录:
本教程中使用的示例flow是web-classification流,它将URLs归类为几个预定义的类别。分类是一个传统的机器学习任务,而这个样本展示了如何使用GPT及提示进行分类:
cd promptflow/examples/flows/standard/web-classification
flow的目录包含flow的所有内容,结构如下:
-
flow.dag.yaml:flow定义,包括输入/输出、节点、工具和用于编写目的的变体;
-
.promptflow/flow.tools.json:包含在flow.dag.yaml中引用的工具元数据;
-
源代码文件(.py, .jinja2):用户管理的,被工具引用的代码脚本;
-
requirements.txt:此flow需要的Python包依赖。
要运行特定的flow,您首先需要安装其依赖项:
pip install -r requirements.txt
理解flow的YAML:
flow目录的入口文件是flow.dag.yaml,它描述了flow的DAG结构。以下是flow DAG的一个示例:
其实如果大家之前有接触过 workflow-core、elsa-core之类的工作流引擎,可能对这种YAML的配置并不陌生。
使用VS Code扩展来可视化flow:
注意:强烈建议开发和调试flow时使用Prompt Flow的VS Code扩展。
VS Code扩展的前提条件:
-
安装最新稳定版本的VS Code;
-
安装VS Code Python扩展;
-
安装Prompt Flow的VS Code扩展;
-
选择Python解释器;
-
在VS Code中打开dag,您可以将flow.dag.yaml作为yaml文件打开,也可以在可视化编辑器中打开。
我们选中一个节点,然后打开看一下Prompt
系统:
请用一段话概括以下内容。100字。
不要添加文本中没有的任何信息。
用户:
文本:{{Text}}
摘要:
在此,各位可能开始感到一丝熟悉。的确,此处所述与SK的Prompt模板非常相似。
通过预先配置Prompt flow的步骤,我们能够在正式编码之前对业务逻辑进行核验,同时对Prompt的提示进行验证测试,这样做有助于减少在开发完成后才发现业务逻辑不可行的问题。
开发和测试您的flow:
如何编辑flow:
如果您熟悉结构,可以通过修改默认输入或添加/删除节点来改变flow的布局,并用不同的输入数据测试flow。
$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Flow.schema.json
inputs:
url:
type: string
# change the default value of input url here
default: https://play.google.com/store/apps/details?id=com.twitter.android
...
创建必要的连接:
注意:
如果您使用WSL或其他没有默认密钥存储后端的操作系统,可能会遇到StoreConnectionEncryptionKeyError,请参考FAQ解决方案。
connection
有助于安全地存储和管理用于与LLM及其他外部工具(例如Azure内容安全)交互所需的秘密密钥或其他敏感凭据。
样本flow web-classification内部使用了open_ai_connection连接,例如,classify_with_llm节点需要通过连接与llm对话。
如果我们之前未添加连接,我们需要设置它。创建后,连接将存储在本地数据库中,并且可以在任何flow中使用。
1.点击Prompt Flow进入界面
2、创建您的连接。
这里我使用的是Azure OpenAI
测试flow:
注意:
测试flow不会创建批次运行记录,因此无法使用诸如pf run show-details之类的命令来获取运行信息。如果您希望保留运行记录,请参见“运行和评估flow”。
假设您正在工作目录promptflow/examples/flows/standard/中,
在"初始化和测试flow"中查看此主题的更多详情。
单击可视化编辑器顶部的运行流按钮以触发流测试。
后续:
学习更多关于如何:
-
开发flow:详细了解如何通过编写flow yaml从零开始开发流;
-
初始化和测试flow:详细了解如何从头或现有代码开发flow;
-
给flow添加条件控制:如何使用activate配置为flow添加条件控制;
-
运行和评估flow:使用多行数据文件运行和评估flow;
-
部署flow:如何将flow部署为网络应用程序;
-
管理连接:如何管理访问LLMs等外部服务的端点/秘密信息;
-
在Azure AI中的Prompt Flow:在Azure AI中运行和评估flow,您可以更好地与团队合作。
并且您还可以查看官方的示例,尤其是:
-
Prompt Flow入门:该内容涵盖了本文档中介绍的示例的Python SDK体验;
-
教程:与PDF聊天:一个端到端的教程,展示如何使用Prompt Flow构建一个高质量的聊天应用程序,包括flow开发和带指标的评估。
结语:
Prompt Flow作为连接代码与机器学习的桥梁,为数据科学家和开发者提供了新的工具和视角。通过本文的详细指引及实际操作,相信您已经对Prompt Flow有了初步的认识和了解。正如掌握了Python编程的您,走上了机器学习之路一样,Prompt Flow会是您自动化流程、探索智能应用新模式的得力助手。让我们一起迎接智能编程的崭新未来,欢迎继续关注我的后续内容,开启更深入的Prompt Flow实践之旅!