提示信息
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 *
解释:
streamlit as st
:导入Streamlit库并将其别名为st
。Streamlit用于创建机器学习和数据科学的Web应用程序。streamlit_antd_components as sac
:导入一组额外的组件,用于Streamlit,这些组件模仿了Ant Design的组件风格。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"
)
解释:
if __name__ == "__main__":
:检查脚本是否直接运行(而不是作为模块导入)。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
)
解释:
st.title("LecumentGEN中文法律文书生成系统")
:设置Streamlit应用程序的主标题。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,
)
解释:
with st.sidebar:
:打开一个上下文来修改侧边栏。st.caption(...)
:添加一个右对齐的标题,显示当前软件版本号。
技术介绍:
- Streamlit:一个快速构建和共享数据应用程序的工具。它能够将数据脚本转换为可分享的Web应用程序,全部使用纯Python编写。
- Streamlit AntD Components:一组定制的Streamlit组件,模仿了Ant Design框架,用于构建交互式用户界面。
- 自然语言处理(NLP):LecumentGEN使用NLP来理解和生成法律文书。涉及到文本生成、文本分类和命名实体识别等任务。
通过结合Streamlit的简易性和NLP的强大功能,该系统旨在简化法律文书的生成过程,使其对法律专业人士更加便捷和高效。