【创新实训】streamlit的组件和项目初始化

提示信息

streamlit提供了多种函数用于显示不同类型的消息,以呈现不同级别的通知和反馈。

st.error: 用于显示错误消息。通常用于向用户报告发生的错误或异常。
st.warning: 用于显示警告消息。通常用于向用户提供潜在的问题或需要注意的情况。
st.info: 用于显示一般信息消息。可以用于提供一般性的信息或指导。
st.success: 用于显示成功消息。通常用于向用户报告任务或操作成功完成。
st.exception: 用于显示异常消息。当发生异常时,可以使用此函数将异常信息呈现给用户。

这些函数提供了一种直观的方式来向用户传达不同类型的信息,并帮助改善用户体验。使用适当的消息类型能够更清晰地传达信息的重要性和紧急性。

import streamlit as st
 
st.error('错误信息')
 
st.warning('警告信息')
 
st.info('提示信息')
 
st.success('成功信息')
 
st.exception('异常信息')
显示执行状态

**st.progress:**用于显示一个进度条,可以设置最小值、最大值和当前值。它通常用于表示长时间运行的非阻塞任务的进度。
**st.spinner:**用于显示一个旋转的加载器,表示任务正在执行。它通常用于表示短时间运行的任务的执行状态。当任务完成时,加载器将自动消失。

import streamlit as st
import time
 
progress_bar = st.empty()
 
for i in range(10):
    progress_bar.progress(i / 10, '进度')
    time.sleep(0.5)
 
with st.spinner('加载中...'):
    time.sleep(2)
缓存修饰器

@st.cache_data装饰器用于记忆函数的历史执行。当使用@st.cache装饰一个函数时,Streamlit 会将该函数的结果存储在一个缓存中,以便在后续调用中直接返回缓存的结果,而不是重新计算。这可以提高应用程序的性能,特别是在处理大量数据或计算密集型任务时。

参数如下:

  • func:要缓存的函数。如果提供了函数,则会对该函数的计算结果进行缓存。如果为None,则返回一个可以接受函数作为参数的装饰器。
  • ttl(int or None):必需。缓存的生存时间,以秒为单位。在缓存的生存时间内,对函数的调用将返回缓存的结果而不是重新计算。如果设置为None,缓存将永不过期。
  • max_entries(int or None):可选。缓存的最大条目数。当达到指定的最大条目数时,新的计算结果将替换最早的计算结果。
  • show_spinner(bool):可选。当进行缓存计算时,是否显示加载指示器。默认为True。
  • persist(bool):可选。是否将缓存数据持久化到磁盘。如果为True,数据将在应用程序重新启动时仍然存在。默认为False。
  • experimental_allow_widgets(bool):可选。是否允许在被缓存的函数中使用Streamlit小部件。默认为False。启用此选项时,可以在被缓存的函数中使用小部件。
  • hash_funcs(dictorNone):可选。用于指定自定义哈希函数的字典。键是参数名称,值是哈希函数。如果为None,将使用默认哈希函数。

多页面设置

步骤:

1 创建主的.py文件 (以home.py)为例子

2 和主文件 同目录级下创建 名为 pages或Pages的文件夹(文件夹的名字必须为这两个,换成其他文件名的话,它就不会识别当作子页面了)

import sys
import streamlit as st
import streamlit_antd_components as sac
from configs import *

解释:

  1. streamlit as st:导入Streamlit库并将其别名为st。Streamlit用于创建机器学习和数据科学的Web应用程序。
  2. streamlit_antd_components as sac:导入一组额外的组件,用于Streamlit,这些组件模仿了Ant Design的组件风格。
  3. from configs import *:从本地的configs模块导入所有变量和函数。
if __name__ == "__main__":
    st.set_page_config(
        page_title="LecumentGEN中文法律文书生成系统",
        page_icon="👋",
        initial_sidebar_state="expanded",  # 修改为展开状态
        menu_items={
            'Get Help': 'https://gitee.com/yang-rongxing/cld',
            'Report a bug': "https://gitee.com/yang-rongxing/cld/issues",
            'About': f"""欢迎使用 LecumentGEN WebUI!"""
        },
        layout="wide"
    )

解释:

  1. if __name__ == "__main__"::检查脚本是否直接运行(而不是作为模块导入)。
  2. st.set_page_config(...):配置Streamlit应用程序的页面设置。
    • page_title:设置网页的标题。
    • page_icon:设置网页的图标(使用了一个emoji)。
    • initial_sidebar_state="expanded":确保侧边栏默认展开。
    • menu_items:提供了获取帮助、报告Bug和关于信息的链接。
    • layout="wide":设置页面布局为宽屏。
    DEFAULT_SYSTEM_PROMPT = '''
    You are LecumentGEN中文法律文书生成系统, a large language model trained by 山东大学软件学院CLD开发团队. Follow the user's instructions carefully. Respond using markdown.
    '''.strip()

解释:
这段代码设置了一个默认的提示文本,指定了语言模型的身份,并提供了使用Markdown格式进行回应的指示。

    st.title("LecumentGEN中文法律文书生成系统")

    st.markdown(
        """
        ## 面向专业人士的中文法律文书生成系统
            by.山东大学软件学院CLD开发团队
        """,
        unsafe_allow_html=True
    )

解释:

  1. st.title("LecumentGEN中文法律文书生成系统"):设置Streamlit应用程序的主标题。
  2. st.markdown(...):在页面上呈现Markdown格式的内容,包括HTML用于样式化。参数unsafe_allow_html=True允许包含原始HTML以进行增强的格式化。
    st.markdown(
        """
        <style>
        [data-testid="stSidebarUserContent"] {
            padding-top: 20px;
        }
        .block-container {
            padding-top: 25px;
        }
        [data-testid="stBottomBlockContainer"] {
            padding-bottom: 20px;
        }
        </style>
        """,
        unsafe_allow_html=True,
    )

解释:
这段代码使用CSS为Streamlit应用程序中的各个元素添加了自定义的填充,以改善布局和外观。

    st.write("# 欢迎使用 Streamlit! 👋")

解释:
这使用st.write来展示一个带有欢迎信息的标题。

    # 添加项目介绍
    st.markdown(
        """
        ## 项目介绍
.................................
        """
    )

解释:
这段代码使用st.markdown提供了详细的项目介绍,包括:

  • 系统的目的和能力。
  • 系统的关键特点。
  • 使用说明。
  • 开发团队信息和联系方式。
    st.sidebar.success("在上方选择一个演示。")

解释:
这添加了一个成功的消息到侧边栏,提示用户从上方选择一个演示。

    with st.sidebar:
        st.caption(
            f"""<p align="right">当前版本:v0.1.0</p>""",
            unsafe_allow_html=True,
        )

解释:

  1. with st.sidebar::打开一个上下文来修改侧边栏。
  2. st.caption(...):添加一个右对齐的标题,显示当前软件版本号。

技术介绍:

  1. Streamlit:一个快速构建和共享数据应用程序的工具。它能够将数据脚本转换为可分享的Web应用程序,全部使用纯Python编写。
  2. Streamlit AntD Components:一组定制的Streamlit组件,模仿了Ant Design框架,用于构建交互式用户界面。
  3. 自然语言处理(NLP):LecumentGEN使用NLP来理解和生成法律文书。涉及到文本生成、文本分类和命名实体识别等任务。

通过结合Streamlit的简易性和NLP的强大功能,该系统旨在简化法律文书的生成过程,使其对法律专业人士更加便捷和高效。

  • 25
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值