当前位置: 首页 > article >正文

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


http://www.kler.cn/news/290692.html

相关文章:

  • inotify + rsync 实时同步 ,定时备份
  • Android12上新增jar遇到的问题总结
  • fedora siliverblue adb
  • 为虚拟机配置固定的IP地址(CentOS9)
  • c++162 类的封装和访问
  • 转载【FIR 线性相位系统 最小相位系统 滤波器延迟】
  • 使用Dbeaver 操作 mongodb
  • 「小明赠书活动」第五期“网安三剑客”套系图书《内网渗透技术》《渗透测试技术》《Web应用安全》
  • Luminar Neo for Mac智能图像处理软件【操作简单,轻松上手】
  • LeetCode 热题100-11 滑动窗口的最大值
  • 前端防抖和节流函数的实现原理
  • MFC的控件无法触发事件函数(ON_COMMAND_RANGE的映射范围冲突)
  • 百度翻译API翻译Qt LinguistTools的ts文件
  • 百度飞浆目标检测PPYOLOE模型在PC端、Jetson上的部署(python)
  • React 创建和嵌套组件
  • 策略规划:在MySQL中实现数据恢复的全面指南
  • [Python图论]在用图nx.shortest_path求解最短路径时,节点之间有多条边edge,会如何处理?
  • 【MySQL】索引使用规则——(覆盖索引,单列索引,联合索引,前缀索引,SQL提示,数据分布影响,查询失效情况)
  • Proteus 仿真设计:开启电子工程创新之门
  • Unity3D中控制3D场景中游戏对象显示层级的详解
  • 构建数据恢复的硬件基础:MySQL中的硬件要求详解
  • draw.io图片保存路径如何设置
  • linux(ubuntu)安装QT-ros插件
  • Ferrari求解四次方程
  • VTK随笔十三:QT与VTK的交互
  • jupyter 笔记本中如何判定bash块是否执行完毕
  • CentOS7 yum 报错解决方案
  • FFmpeg源码:get_audio_frame_duration、av_get_audio_frame_duration2函数分析
  • Splasthop 安全远程访问帮助企业对抗 Cobalt Strike 载荷网络攻击
  • 鸿蒙(API 12 Beta6版)图形【NativeImage开发指导 (C/C++)】方舟2D图形服务