Taipy:AI应用开发神器
Taipy 是一个免费使用的 Python 库,任何具备基本 Python 技能的人都可以使用。它是数据科学家、机器学习工程师和 Python 程序员的得力工具。使用 Taipy,你可以轻松地将数据和机器学习模型转换为功能齐全的 Web 应用程序。在我们生活的瞬息万变的世界中,拥有强大而灵活的工具非常重要。这就是 Taipy 的作用所在!
Vincent Gosselin 和 Albert Antoine 创立了 Taipy,他们在领先的软件公司拥有丰富的背景。他们专注于应对三大挑战 —
- 所有与数据处理相关的职业都存在孤立的工作。
- 缺乏用于前端和后端开发的 Python 工具。
- 专注于数据科学应用,但考虑不足
1、Taipy vs. Streamlit
使用 Streamlit 设计应用程序非常简单,只需要很少的代码,因此它是快速展示原型的绝佳选择。任何对 Python 语法有基本了解的人都可以使用它。
Taipy 同样简单、清晰、优雅,易于开发。虽然添加超链接和视觉元素等任务可能需要对 markdown 有一定了解,但 Taipy 提供了灵活性并允许轻松参数化。
Streamlit 遵循 Web 应用程序的标准设计模板,因此很难使用 CSS 和 HTML 更改应用程序的布局。相比之下,Taipy 非常灵活,可以轻松调整视觉元素的显示属性,而无需具备 CSS 方面的专业知识。
Streamlit 主要依靠简单的前端框架进行应用程序控制和设计。另一方面,Taipy 为创建应用程序的后端提供专门支持,从而促进场景、管道和版本控制的高效创建、组织和处理。Taipy 的核心视觉元素进一步简化了前端和后端之间的联系。
Streamlit 缺乏处理大量数据的固有支持/优化。无论数据大小如何,每个 Streamlit 应用程序在后台都以相同的方式构建/编译。 Taipy 具有表格分页、图表抽取器和异步执行功能等功能,在支持大数据和重度处理方面胜过 Streamlit。
2、Taipy 的核心概念
它旨在对任何类型的数据进行建模:输入、中间或输出数据、内部或外部数据、本地或远程数据、历史数据、一组参数、经过训练的模型等。
Taipy GUI
Taipy GUI 库提供了 Python 类,可让您在几分钟内轻松创建强大的 Web 应用程序。
在 Taipy 中,图形用户界面 (GUI) 是由 Taipy 应用程序本身或 Taipy 应用程序所依赖的 Web 服务器生成的网页制作而成。Taipy 通过其 Gui 类简化了此过程,该类管理服务器及其设置。
在 GUI 类中,你可以创建多个页面,你可以在其中放置文本和图形。这些元素可以动态显示应用程序变量的状态,为用户提供相关信息。用户可以与这些元素交互以触发应用程序代码、更改显示的信息、生成更多数据或移动到不同的页面。
网页由你提供的模板文本文件构建,其中包含显示应用程序数据的占位符。这些视觉和交互元素称为视觉元素。
Taipy 支持两种模板格式,由 Markdown 和 Html 类处理,用于描述页面内容。基本思想是根据需要创建页面,为它们分配名称以便于访问,并将它们提供给应用程序中的 GUI 实例。
当你使用 GUI 的 run()
方法时,它会启动一个 Web 服务器,允许客户端连接并请求页面。然后 Taipy 将创建的页面转换为发送回客户端的 HTML 内容,使用户能够查看并与应用程序界面交互。
数据节点
在 Taipy Core 中,数据节点是一个至关重要的概念。它不保存实际数据,而是包含访问和修改数据所需的所有基本信息——一种数据集描述符或数据引用。
数据节点可以灵活地引用各种类型的数据:
- 文本
- 数值
- 参数的列表、元组、集合或字典
- 自定义 Python 对象(如数据框或数据类)
- 来自 JSON、CSV、Pickle 或 Parquet 等文件的内容
- 来自一个或多个数据库表的数据
- 任何其他形式的数据
其目的是对各种数据类型进行建模,无论它们是输入、中间或输出数据、内部或外部、本地或远程、历史数据、一组参数、经过训练的模型等等。
任务
Taipy 中的任务是开发人员打算执行的 Python 函数。它表示开发人员打算在序列中实现的步骤之一。
例如,任务可能是负责清理初始数据集的预处理函数。或者,它可能是一个涉及训练机器学习模型的更复杂的函数。
鉴于任务代表一个函数,它可以接收一组参数作为输入并产生一组结果作为输出。每个输入参数和输出结果都被视为一个数据节点。
任务的特征(包括输入数据节点、输出数据节点和 Python 函数)由任务配置 (TaskConfig) 指定。创建新任务时必须提供此配置。(有关配置的更多详细信息,请参阅配置文档。)
作业
可以发送任务、序列和场景等实体以供执行。提交场景时,它会启动其包含的所有任务的提交。同样,提交序列会触发该序列内所有任务的执行。
每次提交任务以供执行时,都会生成一个新的作业。作业代表任务的单一执行实例。它包含与任务执行相关的所有相关信息,例如创建日期、执行状态、用户函数日志消息以及可能发生的任何异常堆栈跟踪。
场景
Taipy 场景表示具有一致数据和参数的业务问题。
场景是一种强大的工具,可用于根据不同的假设创建业务问题的不同版本。这对于决策过程中的假设分析特别有用,允许用户在单个应用程序中生成、保存、编辑和运行具有各种参数的多个场景。
每个场景都包含一个可提交执行的有向无环图 (DAG)。此 DAG 是一组连接数据节点的任务,可以通过定义序列将其进一步划分为较小的图以供执行。序列是来自场景任务集的连接任务的子集,形成可独立提交的较小的可执行 DAG。此外,场景可能包含不属于场景 DAG 的额外数据节点,表示与场景相关的额外数据。但是,场景的执行不会计算这些额外的数据节点。
用户分析了初始场景后,他们可能想要调整输入数据节点(不包括中间节点和输出节点),重新运行相同的序列或整个场景,并比较结果。
这涉及创建新场景、调整输入数据、执行该场景,然后将结果与第一个场景进行比较。
此迭代过程可以在多个场景中重复,从而可以彻底探索和分析问题的各种版本。
周期
数据应用程序通常解决遵循特定时间周期的重复性业务挑战。
示例包括:
- 商店 X 的每周销售数据预测。
- 公司 A 的供应链的每月总体规划。
为了满足这一需求,Taipy 引入了“周期”(或工作周期)的概念,表示这种时间模式的单次迭代。 每个周期都有一个开始日期和持续时间,由场景的选定时间频率决定。在 Taipy 中,场景可以具有以下频率:
- Frequency.DAILY
- Frequency.WEEKLY
- Frequency.MONTHLY
- Frequency.QUARTERLY
- Frequency.YEARLY
创建新场景时,它会链接到与其频率和创建日期相匹配的特定周期。
范围
数据节点的范围由具有以下值的枚举确定:
- Scope.SCENARIO(默认值)
- Scope.CYCLE
- Scope.GLOBAL
每个数据节点都拥有一个范围,这是由 DataNodeConfig 定义的属性,指示数据节点在实体图中的可见性。在此图中,每个节点都是一个或多个父节点的一部分。数据节点与单个周期内的至少一个场景相关联。
简而言之:
- 具有 Scope.SCENARIO 的数据节点可以由单个场景中的多个任务和序列使用,但不能成为另一个场景的任务或序列的一部分。
- Scope.CYCLE 的数据节点可以在一个周期内的所有任务、序列和场景之间共享,但不能与不同周期的任务、序列或场景共享。
- Scope.GLOBAL 的数据节点可以由任何任务、序列和场景共享,无论它们的周期如何。
3、Taipy Studio
Taipy Studio 是 Visual Studio Code 的一个扩展,它显著简化了 Taipy 应用程序的开发,重点关注两个关键领域:
构建配置:
- 对于 Taipy Core 功能,创建 Taipy 配置至关重要。这涉及声明 DataNode 配置、任务配置等。
- 应用程序执行通常从制作依赖于这些配置元素的实体开始。
- Taipy Studio 具有一个图形编辑器,可以创建和配置存储在 TOML 文件中的元素。这些文件由 Taipy 应用程序在运行时加载。
- 编辑器将序列和场景表示为图形,其中节点代表数据节点或任务。
- 在配置文件版本页面上探索有关编辑 Taipy 配置文件的更多详细信息。
使用 Markdown 定义 Taipy GUI 页面内容:
- Taipy GUI 利用 Markdown 语法的增强实现,允许定义应用程序页面的视觉元素。
- 鉴于可用的视觉元素种类繁多,手动输入所有内容可能会很麻烦。Taipy Studio 提供代码完成功能,以帮助填充元素定义文本片段。
- 检测 Markdown 文本中的拼写错误和错误可能具有挑战性。 Taipy Studio 会识别这些问题并在“问题”视图中报告它们,通常会提供“快速修复”操作以快速解决语法问题。
安装后,Taipy Studio 在以下条件下变为活动状态:
- 当前项目包含任何带有 .toml 扩展名的文件(假定为 Taipy 配置文件)。
- 当前项目包含任何带有 .md 扩展名的文件(假定为 Taipy GUI 页面定义页面)。
- 当前项目包含任何带有 .py 扩展名的文件(可能包含定义 Taipy GUI 页面的字符串的 Python 源文件)。
- 使用“视图 > 打开视图…”菜单选项明确打开 Taipy 配置视图时。
5、UI 视觉元素
以下是Taipy 中可用控件的列表:
文本
按钮
输入
数字
滑块
切换
日期
文件下载
文件选择器
图像
指示器
菜单
导航栏
选择器
状态
表格
对话框
树
图表
以下是Taipy 中所有可用块元素的列表:
零件
可展开
布局
窗格
6、Taipy安装
使用 pip 安装 taipy 库:
pip install taipy
7、场景和数据管理示例
以下示例展示了 Taipy 分析 CSV 文件并提供富有洞察力的演示的能力。它充分利用了 Taipy 的功能,涵盖了前端和后端开发。
虽然此演示中的后端涉及一个由单个任务组成的简单管道,但需要注意的是,Taipy 旨在构建具有多个任务的更复杂的管道。
在这种情况下,管道(在 Taipy 中称为“场景”)根据所选类型过滤电影数据。对类型选择的任何修改都会触发管道的自动运行,显示一个图表,其中包含该类型中最受欢迎的七部电影。
import taipy as tp
import pandas as pd
from taipy import Config, Scope, Gui
# Taipy Scenario & Data Management
# Filtering function - task
def filter_genre(initial_dataset: pd.DataFrame, selected_genre):
filtered_dataset = initial_dataset[initial_dataset["genres"].str.contains(selected_genre)]
filtered_data = filtered_dataset.nlargest(7, "Popularity %")
return filtered_data
# Load the configuration made with Taipy Studio
Config.load("config.toml")
scenario_cfg = Config.scenarios["scenario"]
# Start Taipy Core service
tp.Core().run()
# Create a scenario
scenario = tp.create_scenario(scenario_cfg)
# Taipy User Interface
# Let's add a GUI to our Scenario Management for a full application
# Callback definition - submits scenario with genre selection
def on_genre_selected(state):
scenario.selected_genre_node.write(state.selected_genre)
tp.submit(scenario)
state.df = scenario.filtered_data.read()
# Get list of genres
genres = [
"Action", "Adventure", "Animation", "Children", "Comedy", "Fantasy", "IMAX"
"Romance","Sci-FI", "Western", "Crime", "Mystery", "Drama", "Horror", "Thriller", "Film-Noir","War", "Musical", "Documentary"
]
# Initialization of variables
df = pd.DataFrame(columns=["Title", "Popularity %"])
selected_genre = "Action"
## Set initial value to Action
def on_init(state):
on_genre_selected(state)
# User interface definition
my_page = """
# Film recommendation
## Choose your favorite genre
<|{selected_genre}|selector|lov={genres}|on_change=on_genre_selected|dropdown|>
## Here are the top seven picks by popularity
<|{df}|chart|x=Title|y=Popularity %|type=bar|title=Film Popularity|>
"""
Gui(page=my_page).run()
8、在 Taipy Cloud 中部署
使用 Taipy Cloud,我们可以部署 Taipy 应用程序。
9、为什么你应该尝试 Taipy
Taipy 为寻求打造高度特定用户体验的开发人员提供了广泛的自定义选项。同时,它为那些想要快速创建简单应用程序的人提供了合理的默认设置。
使用 Taipy GUI,开发人员可以毫不费力地创建多页应用程序,处理各个页面之间的共享状态,应用 CSS 样式,以及许多其他多功能功能。Taipy 的学习曲线比 Streamlit 略高,但提供的自定义功能使其成为非常好的权衡。
原文链接:Taipy: Magical Python Library to Create Simple, Quick & Efficient Way Build a Full-Stack Data App
BimAnt翻译整理,转载请标明出处