跳转到主要内容

Prompt flow Python SDK - 构建高质量的LLM应用

项目描述

Prompt flow

Python package Python PyPI - Downloads CLI vsc extension

Doc Issue Discussions CONTRIBUTING License: MIT

欢迎加入我们,通过参与讨论、提交问题和提交PRs来共同改善prompt flow。

Prompt flow 是一套开发工具,旨在简化基于LLM的AI应用的端到端开发周期,从构思、原型设计、测试、评估到生产部署和监控。它使得提示工程更加容易,并能够让您构建具有生产质量的应用。

使用prompt flow,您可以

  • 创建和迭代开发流程
  • 评估流程质量和性能
    • 使用更大的数据集评估您流程的质量和性能。
    • 将测试和评估集成到您的CI/CD系统中,以确保您流程的质量。
  • 简化生产流程的开发周期
    • 将您的流程部署到您选择的托管平台,或轻松集成到您的应用程序代码库中。
    • (可选但强烈推荐) 通过利用Azure AI中的prompt flow的云版本与您的团队协作。

安装

确保您有一个Python环境,推荐使用 python>=3.9, <=3.11

pip install promptflow promptflow-tools

快速入门 ⚡

使用提示流创建聊天机器人

运行命令从聊天模板启动提示流,它将创建名为 my_chatbot 的文件夹并在其中生成所需文件

pf flow init --flow ./my_chatbot --type chat

设置API密钥的连接

对于OpenAI密钥,通过运行命令建立连接,使用 my_chatbot 文件夹中的 openai.yaml 文件,该文件存储您的OpenAI密钥

# Override keys with --set to avoid yaml file changes
pf connection create --file ./my_chatbot/openai.yaml --set api_key=<your_api_key> --name open_ai_connection

对于Azure OpenAI密钥,通过运行命令建立连接,使用 azure_openai.yaml 文件

pf connection create --file ./my_chatbot/azure_openai.yaml --set api_key=<your_api_key> api_base=<your_api_base> --name open_ai_connection

与您的流程聊天

my_chatbot 文件夹中,有一个 flow.dag.yaml 文件,概述了流程,包括输入/输出、节点、连接以及LLM模型等

注意,在 chat 节点中,我们使用了一个名为 open_ai_connection 的连接(在 connection 字段中指定)和 gpt-35-turbo 模型(在 deployment_name 字段中指定)。deployment_name 字段用于指定OpenAI模型或Azure OpenAI部署资源。

通过运行以下命令与您的聊天机器人交互:(按 Ctrl + C 结束会话)

pf flow test --flow ./my_chatbot --interactive

继续深入了解 提示流

发行历史

v1.16.0 (2024.09.30)

修复了错误

  • [promptflow-core] 修复了promptflow服务应用使用默认日志级别输出日志输入的问题。

v1.15.0 (2024.08.15)

修复了错误

  • [promptflow-azure] 修复了在将运行注册到云时,从本地到云运行时发生的 Connection aborted 错误。
  • [promptflow-core] 修复了 AsyncPrompty 的错误处理器未正常工作。
  • [promptflow-devkit] 修复了跟踪视图无法显示布尔输出的情况。

v1.14.0 (2024.07.25)

改进

  • [promptflow-devkit] 当使用 python_requirements_txt 构建流程时,将 promptflow 添加到Dockerfile中,以防在自定义要求中不存在promptflow。
  • [promptflow-core] 移除了对docutils包的依赖。

v1.13.0 (2024.06.28)

修复了错误

  • 修复了当将导出器设置为prompt flow服务时,与 trace.NoOpTracerProvider 不兼容的问题。
  • 在跟踪使用遥测中添加了缺失的用户代理。

改进

  • [promptflow-devkit] 支持设置本地prompt flow服务的主机配置。
  • [promptflow-azure] 通过缓存arm令牌减少了本地到云运行的延迟时间。

v1.12.0 (2024.06.11)

修复了错误

  • [promptflow-core] 修复了在运行带有 pf flow build 命令的镜像构建时,ChatUI无法在Docker容器中工作的问题。
  • [promptflow-core] 修复了当在另一个流程内部调用流程时使用生成器时引发的 IndexError。
  • [promptflow-azure] 修复了本地到云运行创建时间的时间区域问题。

改进

  • [promptflow-devkit] 在上传运行详细信息到云时添加了重试逻辑。
  • [promptflow-devkit] 添加了跟踪使用遥测。

v1.11.0 (2024.05.17)

公告

  • 介绍灵活流 - 使用Python函数或类的设计强大的LLM应用,并使用我们的VS Code扩展无缝测试和运行您的逻辑。了解更多关于灵活流的信息 这里
  • 介绍prompty - 一个用于简化提示模板创建的实验性功能。使用 .prompty 文件简化您的开发,并轻松提升您的提示!了解更多关于prompty的信息 这里

添加了功能

  • [promptflow-devkit]: 当将跟踪目标配置为云时,上传本地运行详细信息到云。有关更多详细信息,请参阅 这里
  • [promptflow-core]: 通过环境变量支持修改promptflow记录器格式。有关更多详细信息,请参阅 这里

改进

  • [promptflow-devkit]: 当使用Azure AI连接时,默认排除交互式浏览器凭据,用户可以将 PF_NO_INTERACTIVE_LOGIN=False 设置为启用它。
  • 【promptflow-devkit】为 pf flow serve 添加新的 --engine 参数。此参数可用于在 flaskfastapi 之间切换 Python 服务引擎,目前默认为 flask
  • 【promptflow-azure】优化 Cosmos DB 设置过程,在过程中打印设置状态,并在设置失败时显示服务错误信息。
  • 【promptflow-devkit】【promptflow-azure】- 默认通过连接对象返回秘密,以改善灵活流体验。
  • 【promptflow-azure】在 Azure 中创建运行时检查工作区/项目跟踪 Cosmos DB 状态并尊重。

修复了错误

  • 修复了从 >=1.10.0 降级到 <1.8.0 后引发导入错误的问题。
  • 修复了 pf flow serve 在异常 NotADirectoryError 下损坏的问题。
  • 【promptflow-devkit】修复了聊天窗口错误难以理解的问题。
  • 【promptflow-devkit】修复了在检查 pfs 状态时由于 DNS 延迟导致的性能问题。
  • 【promptflow-devkit】修复了在测试非 YAML 流时原始 flex yaml 将被覆盖的问题。
  • 【promptflow-devkit】修复了运行快照不尊重 gitignore/amlignore 的问题。

v1.10.0 (2024.04.26)

添加了功能

  • 【promptflow-devkit】将 --ui 暴露出来以触发聊天窗口,更多详细信息请参阅 此处
  • 【promptflow-devkit】支持使用 fastapi 引擎进行本地服务容器,并通过环境变量调整工作进程/线程数,更多详细信息请参阅 此处
  • 【promptflow-core】添加 fastapi 服务引擎支持。
  • 【promptflow-devkit】支持在跟踪 UI 中使用简单的 Python 表达式进行搜索体验,更多详细信息请参阅 此处

v1.9.0 (2024.04.17)

添加了功能

  • 【promptflow-devkit】为 Linux 添加自动完成功能,更多详细信息请参阅 此处
  • 【promptflow-devkit】支持在流测试和批量运行中体验跟踪。更多详细信息请参阅 此处

修复了错误

  • 【promptflow-devkit】修复了在 pf.run 的某些情况下缺少目录名称的运行名称问题。
  • 【promptflow-devkit】在尝试创建 Azure AI 连接时,引发不支持错误而不是 404。

其他

  • 【promptflow-core】连接默认 API 版本已更改
    • AzureOpenAIConnection: 2023-07-01-preview -> 2024-02-01
    • CognitiveSearchConnection: 2023-07-01-preview -> 2023-11-01

v1.8.0 (2024.04.10)

公告

  • promptflow 包拆分为多个包。在安装 promptflow 时,您将获得以下包
    • promptflow:
      • promptflow-tracing:promptflow 的跟踪功能。
      • promptflow-core:运行流的核心功能。
      • promptflow-devkit:promptflow 的开发套件。
      • promptflow-azure:promptflow 与 Azure 集成所需的 Azure 额外要求(promptflow[azure])。

添加了功能

  • 【SDK/CLI】使用 resume_from 创建一个运行,请注意,只有使用 promptflow>=1.8.0 创建的运行才能用作 resume_from 的值
    • CLI:支持 pf run create --resume-from <original-run-name> 以从另一个运行创建运行。
    • SDK:支持 pf.run(resume_from=<original-run-name>) 以从另一个运行创建运行。
  • 【SDK/CLI】【azure】使用 resume_from 创建一个运行。
    • CLI:支持 pfazure run create --resume-from <original-run-name> 以从另一个运行创建运行。
    • SDK:支持 p.run(resume_from=<original-run-name>) 以从另一个运行创建运行。

v1.7.0 (2024.03.25)

公告

  • promptflow 命名空间导入时,将打印导入警告,请使用警告消息中建议的新命名空间导入。

添加了功能

  • [批量] 为批量运行添加了按行记录功能,存储在 flow_logs 文件夹下。
  • [SDK/CLI] 支持 AzureOpenAIConnection.from_envOpenAIConnection.from_env。更多详细信息请参见此处

修复了错误

  • [SDK/CLI] 环境变量 PF_HOME_DIRECTORY 对运行详情和日志不起作用。
  • [SDK/CLI] 支持覆盖硬编码的 "deployment_name" 和 "model"。
  • [SDK] 当将流程作为函数调用时,connection.provider 配置不起作用。
  • [SDK/CLI] 支持覆盖节点中的未提供连接输入。

v1.6.0 (2024.03.01)

添加了功能

  • [CLI] 支持配置环境变量以直接在 pfazure 命令中使用 AzureCliCredential
    PF_USE_AZURE_CLI_CREDENTIAL=true
    
  • [SDK/CLI] 支持为 pfazure run stream 设置超时。
  • [SDK/CLI] 支持 pfazure flow update 来更新流程的元数据,如 display_namedescriptiontags
  • [SDK/CLI][azure] 支持运行时自动运行的身份支持

修复了错误

  • [SDK/CLI] 由脚本工具生成的工具元包含输入设置。

改进

  • cryptography 的下限提升到 42.0.4。
  • [Executor] 将批量运行的默认工作进程数从 16 更改为 4。

修复了错误

  • [SDK/CLI][azure] 修复了当镜像更新时的自动运行会话 ID 缓存问题。

v1.5.0 (2024.02.06)

添加了功能

  • [SDK/CLI][azure] 支持在 run.yaml 中指定计算实例作为会话计算。
  • [SDK/CLI][azure] 停止支持指定 idle_time_before_shutdown_minutes 以自动运行,因为每个会话执行后将自动删除。

修复了错误

  • [SDK/CLI] 节点测试的输入允许直接传递引用节点输出的值。
  • [SDK/CLI][azure] 修复了云批量运行自动运行时引用注册表流程的漏洞。
  • [SDK/CLI] 修复了运行可视化页面中存在无效 JSON 值时的 "Without Import Data" 问题。
  • [SDK/CLI][azure] 修复了 azureml serving 获取 UAI(用户分配的标识)令牌失败的错误。
  • [SDK/CLI] 修复了节点具有默认变体时的流程作为函数连接覆盖。

改进

  • [SDK/CLI] 对于 pf run deletepf connection delete,引入了一个选项来跳过确认提示。
  • [SDK/CLI] 将 pfs 附加依赖项移动到必需依赖项。

v1.4.0 (2024.01.22)

添加了功能

  • [Executor] 在 api_calls 中递归计算系统指标。
  • [Executor] 添加了流程根级别的 api_calls,以便用户可以概述流程的聚合指标。
  • [Executor] 添加了 @trace 装饰器,以便为工具调用的函数记录跟踪。
  • [Tool] 工具的 InputSetting 支持传递未定义的配置。
  • [SDK/CLI][azure] 将自动运行的会话配置更改为系统等待。
  • [SDK/CLI] 向 pf flow serve 添加了 --skip-open-browser 选项以跳过打开浏览器。
  • [SDK/CLI][azure] 支持将流程提交到主权云。
  • [SDK/CLI] 支持 pf run delete 以不可逆地删除运行。
  • [SDK/CLI][azure] 如果在流程快照中存在,则自动将 requirements.txt 放置到 flow.dag.yaml 中。
  • [SDK/CLI] 支持 pf upgrade 以升级提示流程到最新版本。
  • [SDK/CLI] 支持yaml文件中的环境变量。

修复了错误

  • 修复了针对 Azure 中的运行获取详情时的未对齐输入和输出或 pandas 异常。
  • 修复了运行模式中流程路径验证宽松的问题。
  • 修复了运行可视化页面结果中的 "Without Import Data",原因是无效的 JSON 值(-InfinityInfinityNaN)。
  • 修复了在窄终端窗口中针对长列显示详情时出现的 "ValueError: invalid width -1"。
  • 修复了初始化带有图标的脚本工具时生成的无效工具代码。

改进

  • [SDK/CLI] 对于 pfazure flow create
    • 如果由非msft租户用户使用,请在远程流文件夹路径中使用用户名而不是用户对象ID。例如:Users/<用户名>/promptflow
    • 当流程具有未知属性时,记录警告而不是引发错误。
    • 使用本地流文件夹名称和时间戳作为Azure流文件共享文件夹名称。
  • [SDK/CLI] 对于 pf/pfazure run create,当运行具有未知属性时,记录警告而不是引发错误。
  • pyyaml 替换为 ruamel.yaml 以采用YAML 1.2规范。

v1.3.0 (2023.12.27)

添加了功能

  • [SDK/CLI] 支持 pfazure run cancel 以取消Azure AI上的运行。
  • 通过环境变量 PF_HOME_DIRECTORY 添加对配置提示流主目录的支持。
    • 请在导入 promptflow 之前设置,否则它不会生效。
  • [执行器] 在流测试中处理 KeyboardInterrupt,以便最终状态为已取消。

修复了错误

  • [SDK/CLI] 修复单节点运行在消费上游节点子项时无法工作的问题。

改进

  • ruamel.yaml 的下限更改为 0.17.10。
  • [SDK/CLI] 改进 pfazure run download 以处理大型运行数据文件。
  • [执行器] 当所有异步工具完成或取消后超出超时时间时退出进程。

v1.2.0 (2023.12.14)

添加了功能

  • [SDK/CLI] 支持 pfazure run download 以从Azure AI下载运行数据。
  • [SDK/CLI] 支持 pf run create 以从下载的运行数据创建本地运行记录。

修复了错误

  • [SDK/CLI] 在运行命令时移除遥测警告。
  • 清空节点stdout & stderr 以避免生成大型可视化HTML。
  • 隐藏运行列表中的不必要字段以提高可读性。
  • 修复了批处理运行状态摘要中忽略超时行的错误。

v1.1.1 (2023.12.1)

修复了错误

  • [SDK/CLI] 修复与 semantic-kernel==0.4.0.dev0azure-ai-ml==1.12.0 的兼容性问题。
  • [SDK/CLI] 在CLI遥测中恢复工作空间信息。
  • [SDK/CLI] 禁用CLI中自定义用户代理的功能,以避免更改操作上下文。
  • 修复了openai度量计算器以适应openai v1。

v1.1.0 (2023.11.30)

添加了功能

  • 添加 pfazure flow show/list 以显示或列出来自Azure AI的流程。
  • 在运行可视化页面图形视图中显示节点状态。
  • 在提示流中添加对图像输入和输出的支持。
  • [SDK/CLI] SDK/CLI默认会收集遥测数据,用户可以使用pf config set telemetry.enabled=false退出。
  • 为流运行API添加 raise_on_error,默认情况下我们对失败的运行引发异常。
  • 流作为函数:将流像函数一样消费,参数映射到流输入。
  • 允许指定运行的默认输出路径。
    • 使用 pf config set run.output_path=<output-path> 指定,运行输出路径将是 <output-path>/<run-name>
    • 在配置中引入宏 ${flow_directory} 用于 run.output_path,它将被替换为相应的流目录。
    • 流目录不能设置为运行输出路径,这意味着 pf config set run.output_path='${flow_directory}' 是无效的;但可以使用子文件夹,例如 pf config set run.output_path='${flow_directory}/.runs'
  • 支持使用远程流进行pfazure run create。
    • 对于远程工作区流: pfazure run create --flow azureml:<flow-name>
    • 对于远程注册表流: pfazure run create --flow azureml://registries/<registry-name>/models/<flow-name>/versions/<flow-version>
  • 支持通过环境变量 PF_LOGGING_LEVEL 设置日志级别,有效值包括 CRITICALERRORWARNINGINFODEBUG,默认为 INFO
  • 移除openai版本限制。

修复了错误

  • [SDK/CLI] 修复了使用字典节点输入进行节点测试会引发 "Required input(s) missing" 的问题。
  • [SDK/CLI] 如果未指定显示名称,则将使用运行名称作为显示名称(之前使用流文件夹名称)。
  • 【SDK/CLI】修复pf流程构建在dist文件夹中创建了意外的层。
  • 【SDK/CLI】修复部署提示流:连接值可能为空。

改进

  • 如果在使用cli命令时使用azureml连接提供程序,强制执行'az login'。
  • 如果在使用提示流SDK的azureml连接提供程序时,添加环境变量'PF_NO_INTERACTIVE_LOGIN'以禁用交互式登录。
  • 改进CLI调用时间。
  • pydash的上限提升到8.0.0。
  • SQLAlchemy的上限提升到3.0.0。
  • flask的上限提升到4.0.0,flask-restx的上限提升到2.0.0。
  • ruamel.yaml的上限提升到1.0.0。

v1.0.0 (2023.11.09)

添加了功能

  • 【执行器】在tools.json中为客户的Python工具添加enable_kwargs标签。
  • 【SDK/CLI】支持pfazure flow create。从本地流程文件夹在Azure AI上创建流程。
  • 【SDK/CLI】更改列映射${run.inputs.xx}的行为,它将引用运行的数据列而不是运行输入列。

修复了错误

  • 【SDK/CLI】在运行输出.jsonl中保持原始格式。
  • 【执行器】修复了聚合节点引用绕过的节点时引发错误的bug。

改进

  • 【执行器】将绕过的节点的输出设置为None。

v0.1.0b8 (2023.10.26)

添加了功能

  • 【执行器】将平均执行时间和估计执行时间添加到批量运行日志中。
  • 【SDK/CLI】支持pfazure run archive/restore/update
  • 【SDK/CLI】支持自定义强类型连接。
  • 【SDK/CLI】启用遥测,默认不收集,使用pf config set cli.telemetry_enabled=true进行选择。
  • 【SDK/CLI】公开函数from promptflow import load_run,用于从本地YAML文件加载运行对象。
  • 【执行器】支持脚本工具的ToolProvider

修复了错误

  • pf config set:
    • 修复工作空间connection.provider=azureml不起作用的bug。
  • 【SDK/CLI】修复使用sdk/cli提交批量运行时未正确显示日志的bug。
  • 【SDK/CLI】修复使用pf flow test时,输入非英文时的编码问题。
  • 【执行器】修复了无法读取包含“私有用途”Unicode字符的文件的bug。
  • 【SDK/CLI】修复字符串类型数据将被转换为整数/浮点数的bug。
  • 【SDK/CLI】移除加载数据的最大行数限制。
  • 【SDK/CLI】修复创建运行时从文件创建时--set不起作用的bug。

改进

  • 【SDK/CLI】在pf run visualize页面中进行体验改进。
    • 添加列状态。
    • 支持通过单击运行ID打开流程文件。

v0.1.0b7.post1 (2023.09.28)

错误修复

  • 修复在没有安装azure-ai-ml时导入promptflow时的额外依赖项bug。

v0.1.0b7 (2023.09.27)

添加了功能

  • pf flow validate:支持验证流程
  • pf config set:支持设置用户级promptflow配置。
    • 支持工作空间连接提供程序,用法:pf config set connection.provider=azureml://subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.MachineLearningServices/workspaces/<workspace_name>
  • 支持在提交流程时覆盖openai连接的模型。例如:pf run create --flow ./ --data ./data.jsonl --connection llm.model=xxx --column-mapping url='${data.url}'

修复了错误

  • 【流程构建】修复连接名称包含空格时流程构建文件名和环境变量名称的问题。
  • 在转储运行快照时保留.promptflow文件夹。
  • 使用指定的编码读取/写入日志文件。
  • 避免执行器异常退出时出现不一致的错误消息。
  • 对齐输入和输出行号,以防部分完成的运行会破坏pfazure run show-details
  • 修复当表单是资产ID时无法解析运行数据的portal URL的bug。
  • 修复批量运行时长时间挂起的問題。

改进

  • 【执行器】【内部】通过更多详细信息和可操作信息改进错误消息。
  • 【SDK/CLI】pf/pfazure run show-details
    • 添加--max-results选项以控制显示的结果数量。
    • 添加 --all-results 选项以显示所有结果。
  • 为 azure 的 PFClient 构造函数添加验证,以防传递错误的参数。

v0.1.0b6 (2023.09.15)

添加了功能

  • [promptflow][功能] 将令牌指标存储在运行属性中

修复了错误

  • 优化 flow_validator.py 的错误信息正文
  • 优化 run_tracker.py 的错误信息正文
  • [执行器][内部] 添加一些单元测试以提高日志/指标代码覆盖率
  • [SDK/CLI] 更新门户链接以删除航班。
  • [执行器][内部] 改进输入映射的错误信息。
  • [API] 解决 sphinx 构建过程中的警告/错误

v0.1.0b5 (2023.09.08)

添加了功能

  • pf run visualize:支持谱系图和可视化页面上的显示名称

修复了错误

  • setup.py 中添加缺失的依赖项 psutil

v0.1.0b4 (2023.09.04)

新增功能

  • 支持 pf flow build 命令

v0.1.0b3 (2023.08.30)

  • 修复了一些小错误。

v0.1.0b2 (2023.08.29)

  • 第一个预览版本,包含主要的 CLI 和 SDK 功能。

新增功能

  • pf flow:init/test/serve/export
  • pf run:create/update/stream/list/show/show-details/show-metrics/visualize/archive/restore/export
  • pf connection:create/update/show/list/delete
  • Azure AI 支持
    • pfazure run:create/list/stream/show/show-details/show-metrics/visualize

v0.1.0b1 (2023.07.20)

  • 在 PyPi 中提供存根版本。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。

源代码分发

此版本没有可用的源代码分发文件。有关生成分发存档的教程,请参阅 此处

构建的分发

promptflow-1.16.0-py3-none-any.whl (19.6 kB 查看哈希值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面