从零开始:理解并实践Prompt Flow

在人工智能领域中,代码先行与模型紧密结合的Prompt Flow 逐渐成为开发者关注的新焦点。今天,我们将共同探索如何快速启动Prompt Flow 项目,深入了解流(flow)的概念,并学习如何使用VS Code ExtensionYAML 来编辑flow,最终在CLI、SDK或VS Code扩展中测试flow。本文将为初学者提供一个清晰的操作指引,即使您是Python新手,也能轻松迈出Prompt Flow之旅的第一步。

掌握语义内核(Semantic Kernel):如何精进你的提示词工程

设置开发环境:

我们需要一个安装了3.9或更高版本的Python环境,推荐使用Python环境管理器Miniconda。安装好Miniconda后,运行以下命令创建一个Python环境:

复制代码
conda create --name pf python=3.9conda 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.jsoninputs:  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实践之旅!

相关推荐
semantist@语校14 小时前
第十九篇|东京世界日本语学校的结构数据建模:制度函数、能力矩阵与升学图谱
数据库·人工智能·线性代数·矩阵·prompt·github·数据集
山海青风1 天前
12 Prompt 模板化与参数化
人工智能·prompt
山海青风1 天前
11 Prompt 工程进阶:Few-shot 与 Chain-of-Thought
人工智能·prompt
人工智能培训1 天前
AI提示词(Prompt)基础核心知识点
大模型·prompt·提示词·input
虫无涯3 天前
LangChain中的Prompt模板如何使用?
服务器·langchain·prompt
今天也要学习吖3 天前
谷歌nano banana官方Prompt模板发布,解锁六大图像生成风格
人工智能·学习·ai·prompt·nano banana·谷歌ai
zzywxc7873 天前
AI在金融、医疗、教育、制造业等领域的落地案例
人工智能·机器学习·金融·prompt·流程图
落樱弥城5 天前
Prompt Engineering to Context Engineering
prompt
非晓为骁5 天前
【AI】AI 评测入门(二):Prompt 迭代实战从“能跑通”到“能落地”
人工智能·prompt·提示词工程·ai评测
leo03085 天前
7种流行Prompt设计模式详解:适用场景与最佳实践
设计模式·prompt