从零开始:理解并实践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实践之旅!

相关推荐
ssf-yasuo18 小时前
SPIRE: Semantic Prompt-Driven Image Restoration 论文阅读笔记
论文阅读·笔记·prompt
ToToBe1 天前
L1G3000 提示工程(Prompt Engineering)
chatgpt·prompt
龙的爹23331 天前
论文 | Legal Prompt Engineering for Multilingual Legal Judgement Prediction
人工智能·语言模型·自然语言处理·chatgpt·prompt
manfulshark1 天前
OPENAI官方prompt文档解析
ai·prompt
龙的爹23332 天前
论文 | Evaluating the Robustness of Discrete Prompts
人工智能·gpt·自然语言处理·nlp·prompt·agi
我爱学Python!2 天前
AI Prompt如何帮你提升论文中的逻辑推理部分?
人工智能·程序人生·自然语言处理·chatgpt·llm·prompt·提示词
落魚京2 天前
29种Prompt Engineering
prompt
编程武士3 天前
mark 一些攻防 prompt
prompt·攻防
坚定信念,勇往无前3 天前
AI-Prompt、RAG、微调还是重新训练?选择正确的生成式AI的使用方法
人工智能·prompt
bagell3 天前
全面掌握Prompt技术:通用框架详解、优化策略与关键指标综述
人工智能·深度学习·自然语言处理·prompt·产品经理