基于python的大模型可视化开发

        接触到大模型后,会发现很多为了简化可视化,不需要像flask那般,直接借助python完成web界面的可视化,下面介绍几种库:

gradio streamit dash
主要使用场景 可交互小 Demo 工作流、DashBoard DashBoard、生产环境的复杂演示应用
上手难度 简单 简单 中等
组件丰富度
综合扩展性
Jupyter Notebook 内支持
是否完全开源 部分企业级功能未开源
github stars 13.4k 23.1k 18.2k
案例列表 https://github.com/gradio-app/awesome-demos https://streamlit.io/gallery https://dash.gallery/Portal/

(1)gradio

安装: pip install gradio -i https://pypi.tuna.tsinghua.edu.cn/simple

使用:

Gradio 基于 svelte,官方文档Gradio, 提供两个类来构建应用程序UI:

  1. gr.Interface:gr.Interface模块用于创建简易场景下的应用界面。它是使用Gradio构建交互式应用程序的核心模块之一。通过gr.Interface,您可以快速定义输入和输出函数,并将它们与界面组件进行关联,以创建一个具有交互性的应用程序。这个模块提供了简洁的API和直观的界面,使得构建应用程序变得简单易懂。
  2. gr.Blocks:gr.Blocks模块用于定制化场景下的应用界面。它提供了更高级的界面定制和扩展功能,适用于需要更精细控制界面布局和组件交互的情况。通过gr.Blocks,您可以使用不同的布局块(Blocks)来组织界面组件,以实现更灵活、复杂的界面设计。这个模块适用于那些需要对界面进行高度定制的开发者,可以根据具体需求构建独特的应用界面。

Gradio的应用界面模块提供了不同的选择,根据开发者的需求和技术水平,可以选择使用gr.Interface进行简易场景的应用界面开发,或使用gr.Blocks进行更定制化的界面设计。其常见组件如下:

输入输出组件:

    • gr.Image(图像):用于处理图像输入和输出。
    • gr.Textbox(文本框):用于接收和显示文本输入和输出。
    • gr.DataFrame(数据框):用于处理表格数据的输入和输出。
    • gr.Dropdown(下拉选项):用于创建下拉选项菜单,方便用户进行选择。
    • gr.Number(数字):用于处理数值输入和输出。
    • gr.Markdown:用于渲染和显示Markdown格式的文本。
    • gr.Files:用于处理文件的输入和输出。

控制组件:

    • gr.Button(按钮):用于创建按钮,用户可以点击按钮执行特定的操作。
    • gr.Slider(滑块):用于创建可拖动的滑块,用于选择范围内的数值。
    • gr.Checkbox(复选框):用于创建复选框,用户可以选择或取消选择。
    • gr.Radio(单选框):用于创建单选框,用户可以从多个选项中选择一个。
    • gr.Switch(开关):用于创建开关按钮,用户可以切换开关的状态。
    • gr.ColorPicker(颜色选择器):用于选择颜色的输入和输出。
    • 等等

布局组件:

    • gr.Tab(标签页):用于创建多个标签页,使界面更加有组织和易于导航。
    • gr.Row(行布局):用于将组件水平排列在一行中。
    • gr.Column(列布局):用于将组件垂直排列在一列中。

Gradio 支持的主要响应事件包括

事件类型 触发条件 适用组件
change 用户完成输入或选择后触发 Textbox, Slider, Dropdown, File, Image, Audio, Video
input 用户每次输入内容时触发 Textbox, Slider
click 用户点击按钮时触发 Button
edit 用户完成图像编辑时触发 Image(编辑模式)
submit 用户按下回车键提交内容时触发 Textbox, Textarea

这些事件提供了丰富的动态交互支持,可以用来增强用户体验,实现高度个性化和实时交互的 Web 应用程序。

简单使用案例:

###基于gr.Interface
import gradio as gr
 
def greet(name):
    return "Hello " + name + "!"
 
demo = gr.Interface(
    fn=greet,
    inputs=gr.Textbox(lines=2, placeholder="Name Here..."),
    outputs="text",
)
demo.launch()

###基于gr.Blocks
####with gr.Tab分页, with gr.Accordion可折叠框,with gr.Row()行内显示
import numpy as np
import gradio as gr
 
 
def flip_text(x):
    return x[::-1]
 
 
def flip_image(x):
    return np.fliplr(x)
 
 
with gr.Blocks() as demo:
    gr.Markdown("Flip text or image files using this demo.")
    with gr.Tab("Flip Text"):
        text_input = gr.Textbox()
        text_output = gr.Textbox()
        text_button = gr.Button("Flip")
    with gr.Tab("Flip Image"):
        with gr.Row():
            image_input = gr.Image()
            image_output = gr.Image()
        image_button = gr.Button("Flip")
 
    with gr.Accordion("Open for More!"):
        gr.Markdown("Look at me...")
 
    text_button.click(flip_text, inputs=text_input, outputs=text_output)
    image_button.click(flip_image, inputs=image_input, outputs=image_output)
 
demo.launch()

具体使用可以参考:Gradio入门到进阶全网最详细教程[一]:快速搭建AI算法可视化部署演示(侧重项目搭建和案例分享) - 知乎

 (2) streamit

安装方式:

pip install streamit

基本使用:

streamit基于 React ,它的上手使用也非常之简单,下面是一个简单示例

import streamlit as st
import numpy as np
import pandas as pd
st.title("This is my first app")
# 有很多方式展示数据 (表格、数组、pandas的表格数据结构),magic方法、st.write()方法

# magic方法
st.write("magic方法使用")
df = pd.DataFrame({
    'first column': [1, 2, 3, 4],
    'second column': [10, 20, 30, 40]
})
# pd.DataFrame( data, index, columns, dtype, copy)
# data数据,index 行标签,columns列标签 默认为np.arange(n),dtype 每一列数据类型,copy 能复制数据默认false

df  # 每当Streamlit在自己的行中看到变量或文字值时,它都会使用st.write()自动将其写入您的应用程序。

# st.write()方法,可以自动渲染 文本、数据、Matplotlib图形、Altair图表等等。
st.write("write() 方法使用")
st.write(pd.DataFrame({
    'first column': [1, 2, 3, 4],
    'second column': [10, 20, 30, 40]
}))

运行Streamlit的另一种方法是将其作为Python模块运行。这在配置 PyCharm 等 IDE 以使用 Streamlit 时很有用:

# Running

python -m streamlit run your_script.py

# is equivalent to:

streamlit run your_script.py

对其基础使用可以参考streamlit 入门之基本概念 - 知乎

你可能感兴趣的:(python,开发语言)