Prompt flow Python SDK - 构建高质量的LLM应用
项目描述
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
参数。此参数可用于在flask
和fastapi
之间切换 Python 服务引擎,目前默认为flask
。 - 【promptflow-azure】优化 Cosmos DB 设置过程,在过程中打印设置状态,并在设置失败时显示服务错误信息。
- 【promptflow-devkit】【promptflow-azure】- 默认通过连接对象返回秘密,以改善灵活流体验。
- 有关更多详细信息,请参阅子包文档。 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】修复了在
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>)
以从另一个运行创建运行。
- CLI:支持
- 【SDK/CLI】【azure】使用
resume_from
创建一个运行。- CLI:支持
pfazure run create --resume-from <original-run-name>
以从另一个运行创建运行。 - SDK:支持
p.run(resume_from=<original-run-name>)
以从另一个运行创建运行。
- CLI:支持
v1.7.0 (2024.03.25)
公告
- 从
promptflow
命名空间导入时,将打印导入警告,请使用警告消息中建议的新命名空间导入。
添加了功能
- [批量] 为批量运行添加了按行记录功能,存储在
flow_logs
文件夹下。 - [SDK/CLI] 支持
AzureOpenAIConnection.from_env
和OpenAIConnection.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_name
、description
或tags
。 - [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 delete
和pf 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 值(
-Infinity
、Infinity
和NaN
)。 - 修复了在窄终端窗口中针对长列显示详情时出现的 "ValueError: invalid width -1"。
- 修复了初始化带有图标的脚本工具时生成的无效工具代码。
改进
- [SDK/CLI] 对于
pfazure flow create
- 如果由非msft租户用户使用,请在远程流文件夹路径中使用用户名而不是用户对象ID。例如:
Users/<用户名>/promptflow
。 - 当流程具有未知属性时,记录警告而不是引发错误。
- 使用本地流文件夹名称和时间戳作为Azure流文件共享文件夹名称。
- 如果由非msft租户用户使用,请在远程流文件夹路径中使用用户名而不是用户对象ID。例如:
- [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.dev0
和azure-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
设置日志级别,有效值包括CRITICAL
、ERROR
、WARNING
、INFO
、DEBUG
,默认为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 查看哈希值)