Taipy:AI应用全栈开发神器

news2024/11/24 4:33:29

Taipy 是一个免费使用的 Python 库,任何具备基本 Python 技能的人都可以使用。它是数据科学家、机器学习工程师和 Python 程序员的得力工具。使用 Taipy,你可以轻松地将数据和机器学习模型转换为功能齐全的 Web 应用程序。在我们生活的瞬息万变的世界中,拥有强大而灵活的工具非常重要。这就是 Taipy 的作用所在!

Vincent Gosselin 和 Albert Antoine 创立了 Taipy,他们在领先的软件公司拥有丰富的背景。他们专注于应对三大挑战 —

  • 所有与数据处理相关的职业都存在孤立的工作。
  • 缺乏用于前端和后端开发的 Python 工具。
  • 专注于数据科学应用,但考虑不足

NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - AI模型在线查看 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割 

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:AI应用开发神器 - BimAnt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2193894.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

消费者Rebalance机制

优质博文&#xff1a;IT-BLOG-CN 一、消费者Rebalance机制 在Apache Kafka中&#xff0c;消费者组 Consumer Group会在以下几种情况下发生重新平衡Rebalance&#xff1a; 【1】消费者加入或离开消费者组&#xff1a; 当一个新的消费者加入消费者组或一个现有的消费者离开消费…

springboot工程中使用tcp协议

文章目录 一、概述二、实现思路三、代码结构四、代码放送五、运行界面六. 主要技术点 一、概述 在上文JAVA TCP协议初体验 中&#xff0c;我们使用java实现了tcp协议的一个雏形&#xff0c;实际中大部分项目都已采用springboot&#xff0c;那么&#xff0c;怎么在springboot中…

【机器学习】知识总结1(人工智能、机器学习、深度学习、贝叶斯、回归分析)

目录 一、机器学习、深度学习 1.人工智能 1.1人工智能概念 1.2人工智能的主要研究内容与应用领域 1.2.1主要研究内容&#xff1a; 1.2.2应用领域 2.机器学习 2.1机器学习的概念 2.2机器学习的基本思路 2.3机器学习的分类 3.深度学习 3.1深度学习的概念 3.2人工智能…

Cocos_鼠标滚轮放缩地图

文章目录 前言一、环境二、版本一_code2.分析类属性方法详细分析详细分析onLoad()onMouseWheel(event)详细分析 总结 前言 学习笔记&#xff0c;请多多斧正。 一、环境 通过精灵rect放置脚本实现鼠标滚轮放缩地图。 二、版本一_code import { _decorator, Component, Node }…

task【XTuner微调个人小助手认知】

1 微调前置基础 本节主要重点是带领大家实现个人小助手微调&#xff0c;如果想了解微调相关的基本概念&#xff0c;可以访问XTuner微调前置基础。 2 准备工作 环境安装&#xff1a;我们想要用简单易上手的微调工具包 XTuner 来对模型进行微调的话&#xff0c;第一步是安装 XTu…

Trie树之最大异或对问题

这是C算法基础-数据结构专栏的第二十八篇文章&#xff0c;专栏详情请见此处。 从这篇博客开始&#xff0c;文章将会于每周一更新&#xff0c;望周知&#xff01; 引入 上次&#xff0c;我们学习了Trie树之字符串统计问题&#xff0c;字符串统计问题中的Trie树节点存储的是字符…

面试官:如何实现分布式系统的限流?

限流的概念以及作用我前一篇文章已经做了介绍:并发限流算法的实践 目录 限流的几种算法 : 1、令牌桶算法 2、漏桶算法 3. 滑动时间窗口计数器算法 5. 全局限流 6. 客户端限流 7. API网关限流 8. 熔断与降级 本篇重点: 具体实现: 限流的几种算法 : 这里主要讲在分…

快速熟悉Nginx

一、Nginx是什么&#xff1f; ‌Nginx是一款高性能、轻量级的Web服务器和反向代理服务器。‌ ‌特点‌&#xff1a;Nginx采用事件驱动的异步非阻塞处理框架&#xff0c;内存占用少&#xff0c;并发能力强&#xff0c;资源消耗低。‌功能‌&#xff1a;Nginx主要用作静态文件服…

Arduino UNO R3自学笔记22 之 Arduino基础篇学习总结

注意&#xff1a;学习和写作过程中&#xff0c;部分资料搜集于互联网&#xff0c;如有侵权请联系删除。 前言&#xff1a;目前将Arduino的大多数基础内容学习了&#xff0c;做个总结。 1.编程语言 学习单片机&#xff0c;在面向单片机编程时&#xff0c;语言是最基础的&#…

给Linux操作系统命令取个别名

一个Linux终端命令的别名通常是其命令的缩写&#xff0c;用来减少键盘输入。命令格式为&#xff1a; alias &#xff3b;alias-name‘original-command’&#xff3d; 其中&#xff0c;alias-name是用户给命令取的别名&#xff08;新名&#xff09;&#xff0c;original-comm…

whisper 实现语音识别 ASR - python 实现

语音识别&#xff08;Speech Recognition&#xff09;&#xff0c;同时称为自动语音识别&#xff08;英语&#xff1a;Automatic Speech Recognition, ASR&#xff09;&#xff0c;将语音音频转换为文字的技术。 whisper是一个通用的语音识别模型&#xff0c;由OpenAI公司开发。…

浸没边界 直接强迫法 圆球绕流验证 阅读笔记

Combined multi-direct forcing and immersed boundary method for simulating flows with moving particles https://doi.org/10.1016/j.ijmultiphaseflow.2007.10.004 他的意思是&#xff0c;不止需要一次的直接强迫 直接强迫的次数与误差成低于二阶的关系 不知道是不是一阶…

输电线路悬垂线夹检测无人机航拍图像数据集,总共1600左右图片,悬垂线夹识别,标注为voc格式

输电线路悬垂线夹检测无人机航拍图像数据集&#xff0c;总共1600左右图片&#xff0c;悬垂线夹识别&#xff0c;标注为voc格式 输电线路悬垂线夹检测无人机航拍图像数据集介绍 数据集名称 输电线路悬垂线夹检测数据集 (Transmission Line Fittings Detection Dataset) 数据集…

sv标准研读第十二章-过程性编程语句

书接上回&#xff1a; sv标准研读第一章-综述 sv标准研读第二章-标准引用 sv标准研读第三章-设计和验证的building block sv标准研读第四章-时间调度机制 sv标准研读第五章-词法 sv标准研读第六章-数据类型 sv标准研读第七章-聚合数据类型 sv标准研读第八章-class sv标…

使用链地址法实现哈希表(哈希函数为除留余数法)

该代码实现了一个哈希表&#xff0c;使用拉链法&#xff08;链地址法&#xff09;来解决哈希冲突&#xff0c;核心思想是通过链表存储哈希冲突的数据。哈希表的大小被设置为 MAX_SIZE&#xff0c;其中哈希函数采用除留余数法。以下是代码的详细解释和总结&#xff1a; #includ…

C++关于链表基础知识

单链表 // 结点的定义 template <class T> struct Node { T data ; Node <T> *next; //指向下一个node 的类型与本node相同 } // 最后一个node指针指向Null 生成结点&#xff1a; Node <T> * p new Node < T>; 为结点赋值: p-> data …

LLM+知识图谱新工具! iText2KG:使用大型语言模型构建增量知识图谱

iText2KG是一个基于大型语言模型的增量知识图谱构建工具&#xff0c;通过从文本文档中提取实体和关系来逐步构建知识图谱。该工具具有零样本学习能力&#xff0c;能够在无需特定训练的情况下&#xff0c;在多个领域中进行知识提取。它包括文档提炼、实体提取和关系提取模块&…

BM1 反转链表

要求 代码 /*** struct ListNode {* int val;* struct ListNode *next;* };*/ /*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可*** param head ListNode类* return ListNode类*/ struct ListNode* ReverseList(struct …

【LeetCode-热题100-128题】官方题解好像有误

最长连续序列 题目链接&#xff1a;https://leetcode.cn/problems/longest-consecutive-sequence/?envTypestudy-plan-v2&envIdtop-100-liked 给定一个未排序的整数数组 nums &#xff0c;找出数字连续的最长序列&#xff08;不要求序列元素在原数组中连续&#xff09;的…

Linux高阶——0928—Github本地仓库与云端仓库关联

1、安装代理软件 steam 选择Github和系统代理模式&#xff0c;一键加速即可 2、 安装Git 3、访问Github网站&#xff0c;创建新用户 4、Github探索 &#xff08;1&#xff09;Explore探索标签 &#xff08;2&#xff09;工程结构 用户名/仓库名 自述文件&#xff0c;用markdo…