Streamlit开发手册,网上最全,加速大模型应用开发!

最近想整理下 Streamlit 的开发教程,看了网上的教程,总少一部分,所以结合自己的开发经验,做了整合和补充,提供给初学者入门。

1. 安装与配置

1.1. 安装 Streamlit

可以使用pip包管理器安装 Streamlit。在终端或命令提示符中运行以下命令:

pip install streamlit

1.2. 配置文件

在某些情况下,可能需要配置Streamlit,配置文件的位置是 ~/.streamlit/config.toml(windows系统中为:C:\Users\Administrator.streamlit)。如果没有这个文件,你可以自己创建一个。

以下是一个config.toml示例:

[server]
port = 8501
enableCORS = false 

[browser]
serverAddress = "localhost"
gatherUsageStats = false

[runner]
magicEnabled = false

**注意:**在config.toml文件中,大小写是敏感的,确保配置文件中的各个部分和参数名的大小写一致。

参数:
1、port:Streamlit应用的端口号,默认为 8501。
2、enableCORS:是否启用跨域资源共享,默认为false。如果需要开放Streamlit应用,在非本机电脑也行访问,则需要设置为true。
3、serverAddress:Streamlit服务器的地址,默认为 “localhost”。
4、gatherUsageStats参数默认是true,表示允许streamlit收集使用统计信息。一般禁用就行。
5、magicEnabled参数的默认值是true,表示启用Streamlit的魔法命令功能。即:任何时候如果Streamlit看到一个变量或常量值, 它就会自动将其使用st.write写入应用。所以可能容易导致网页速度变慢、重复加载数据等等情况。

命令行查看streamlit配置信息:

streamlit config show

1.3. 运行Streamlit应用

运行streamlit演示项目:

streamlit hello

上面有 4个示例项目:
DataFrame Demo
在这里插入图片描述

Plotting Demo
在这里插入图片描述

Mapping Demo
在这里插入图片描述

Animation Demo
在这里插入图片描述

如果需要运行你自己的py文件,在终端或命令提示符中运行:

streamlit run your_app.py

在运行上述命令后,你的默认浏览器将自动跳转Streamlit应用。

2. streamlit显示数据

首先,导入streamlit包:

import streamlit as st

2.1. 显示标题

st.title():用于创建页面的主要标题,通常是最大和最显眼的标题。它是在应用的顶部设置的,并且在整个页面中通常只使用一次,用于表示应用的主题或总体内容。
st.header():用于创建一个相对较小的标题,比st.title()稍微小一些。可以在应用中多次使用,用于将内容分成不同的部分或主题。
st.subheader():用于创建相对较小的标题,比st.header()还要小。可以在应用中多次使用,用于在小节内更细致地标识内容。
st.caption(): 用于创建更小的标题

总体来说,这些函数可以根据文档结构和内容的层次结构来选择使用。使用st.title()来设置整个应用的主标题,使用st.header()和st.subheader()来划分和标识各个部分或小节的标题。这样可以使应用更易于阅读和理解。

import streamlit as st
 
st.title("这是一个标题")
st.header("这是一个较小的标题")
st.subheader("这是一个相对较小的标题")
st.caption("这是一段说明文字")

在这里插入图片描述

2.2. 显示文本

st.markdown():用于支持Markdown格式的文本,允许你使用Markdown语法来添加样式、链接、列表等元素。它提供更灵活的文本呈现选项,允许你使用Markdown标记来创建富文本内容。
st.text():不支持Markdown语法,只显示纯文本内容。

import streamlit as st
 
st.markdown("""
## 定义
CO-STAR是六个关键要素的缩写,每个字母代表一个特定的部分:
- **Context(上下文)** :提供任务的背景信息或环境
`当前任务是为一家科技公司撰写一篇关于人工智能发展趋势的文章`/ `需要为一场面向高中生的科普讲座准备内容`
- **Objective(目标)** :明确任务的具体目标或期望结果
`生成一篇逻辑清晰、通俗易懂的科普文章`/ `总结出人工智能领域的三大关键趋势并解释其影响`
- **Style(风格)** :定义语言表达的风格或语气
`正式且专业的学术风格`/ `轻松幽默、适合青少年理解的科普风格`
- **Tone(语调)** :设定沟通的情感基调
`积极乐观,传递对未来技术的信心`/ `中立客观,避免过度夸张的技术描述`
- **Audience(受众)** :明确内容的目标受众
`面向科技行业的从业者和决策者`/ `面向对人工智能感兴趣的普通大众或学生群体`
- **Response(响应格式)** :规定输出的形式或结构要求
`使用Markdown格式输出,包含标题、段落和项目符号列表`/ `附带一个可视化图表示例,并用简短的语言解释数据来源`
""")

st.text("""
春花秋月何时了,往事知多少。小楼昨夜又东风,故国不堪回首月明中。
""")

在这里插入图片描述

可以看到,Markdown打印方式更灵活,而text打印方式较为单一。

2.3. 显示代码段

st.code() 调用参数如下:
body:要显示的代码字符串。
language:代码所使用的开发语言,字符串,默认值:python。 如果省略的话,将没有语法高亮效果。

import streamlit as st
 
st.markdown('**以下为打印的代码:**')
 
st.code('''
def bubble_sort(arr):
    n = len(arr)
    # 遍历所有数组元素
    for i in range(n):
        # 最后 i 个元素已经排好序,不需要再比较
        for j in range(0, n-i-1):
            # 如果元素比下一个元素大,则交换它们
            if arr[j] > arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]
# 示例使用
if __name__ == "__main__":
    # 测试数据
    example_list = [64, 34, 25, 12, 22, 11, 90]
    print("原始数组:", example_list)
    # 调用冒泡排序函数
    bubble_sort(example_list)
    print("排序后的数组:", example_list)
''', language='python')

效果如下:
在这里插入图片描述

2.4. 显示公式

st.latex: 用于在页面中渲染 LaTeX 格式的数学公式,支持复杂的数学表达式和符号。这在需要展示数学内容时非常有用。
调用方式:
通过 st.latex(body) 渲染 LaTeX 公式,body 是包含公式的字符串。

import streamlit as st

# 渲染单行公式
st.latex(r"E = mc^2")

# 渲染多行复杂公式
st.latex(r"""
f(x) = \int_{-\infty}^\infty
\hat{f}(\xi)\,e^{2 \pi i \xi x}
\,d\xi
""")

# 结合 Markdown 和 LaTeX
st.markdown("以下是一个带解释的公式:")
st.latex(r"\text{概率密度函数:} P(X = k) = {n \choose k} p^k (1-p)^{n-k}")

在这里插入图片描述

2.5. 通用显示方法

st.write(): 是Streamlit中用于在应用程序中展示文本和数据的通用函数。它是一个多功能的函数,可以接受多种类型的参数,包括Markdown格式的字符串、数字、DataFrame、图表等。

import streamlit as st
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
 
# 字符串
st.write("这是一段文本。")
 
# 数字
st.write(42)
 
# 列表
st.write([1, 2, 3])
 
# 字典
st.write({
   "key": "value"})
 
# 数据框(DataFrame)
df = pd.DataFrame({
   "Column 1": [1, 2, 3], "Column 2": ["A", "B", "C"]})
st.write(df)
 
#多参数用法
st.write("这是一个字符串", 42, [1, 2, 3], {
   "key": "value"})
 
#自定义渲染
fig, ax = plt.subplots()
x = np.linspace(0, 10, 100)
y = np.sin(x)
ax.plot(x, y)
st.write(fig)

效果如下:
在这里插入图片描述

在这里插入图片描述

2.6. 显示表格

2.6.1. st.dataframe

st.dataframe(): 以表格的形式呈现数据,支持Pandas的特有功能,如排序、过滤等,并且会自动适应数据框的大小,如果数据框太大,它会自动启用滚动条。
参数如下:
①width:UI元素的期望宽度,单位为像素,类型为Int或None,如果是None的话,Streamlit将基于页面宽度计算元素宽度。
②height:UI元素的期望高度,单位为像素,类型为Int或None。

另外,st. dataframe 还可以传入一个 Pandas Styler 对象来修改所渲染的 DataFrame 的样式,例如将每一列的最大值高亮显示:

"""
- highlight_null:空值高亮
- highlight_min:最小值高亮
- highlight_max:最大值高亮
- highlight_between:某区间内的值高亮
- highlight_quantile:暂没用过
"""
st.dataframe(df.style.highlight_max(axis=0))

2.6.2. st.table

**st.table():**用于显示通用表格数据,不仅支持Pandas,还可以处理列表、元组等可迭代数据结构。但st.table仅用于显示数据,而不提供诸如排序和过滤等数据框专有功能。

import streamlit as st
import pandas as pd
import numpy as np
 
random_data = np.random.rand(100, 10)
df = pd.DataFrame(random_data, columns=[f'Col{
     i}' for i in range(1, 11)])
 
st.dataframe(df)
st.table(df)

如上所示,st.dataframe打印出来的表格可以缩放、下载、滑动、查找等功能,而st.table是将所有数据行和列都打印出来,功能单一。

2.7. 显示JSON

**st.json():**主要用于展示JSON格

### 使用 DeepSeek 和 RAG 技术实现智能客服 #### 构建基于 RAG 的智能客服架构 构建高效的企业级智能客服系统依赖于动态更新的知识库以及强大的自然语言处理能力。通过集成 DeepSeek 模型与 RAG(Retrieval-Augmented Generation)框架,可以实现实时获取最新的企业内部资料,并将其转化为有效的客户服务响应[^1]。 为了确保智能客服能及时回应用户的查询请求并给出精准的答案,在设计阶段需考虑以下几个方面: - **数据源接入**:利用 Amazon SageMaker 创建的连接器对接多种类型的数据存储服务,如数据库、文件系统等,以便从中抽取结构化或非结构化的文档作为知识库的一部分[^3]。 - **索引优化**:借助 Amazon OpenSearch Service 对导入的内容建立高效的全文搜索引擎,加速信息检索过程的同时提高匹配精度。 - **对话管理机制**:采用 Streamlit 开发 Web UI 接口用于展示交互界面,允许用户查看过往交流记录,同时支持多轮次问答逻辑控制,使得会话更加流畅自然[^2]。 #### 应用实例分析 在一个实际应用场景中,某大型金融机构希望通过引入先进的 AI 技术改进其在线咨询服务的质量。为此选择了融合了 DeepSeek 及 RAG 方法论的产品方案来进行改造升级。具体措施如下: - 定期同步官方公告、产品手册等相关材料至云端仓库; - 配置好相应的 API 调用来触发模型推理操作,当收到新的咨询工单时即刻启动搜索任务寻找最接近的标准答案; - 将生成的回答反馈给前端页面显示出来供座席人员审核确认后再发送给最终求助者; 经过一段时间试运行之后发现不仅减少了人工干预次数还大幅缩短了解决周期平均耗时降低了约40%,客户满意度也有所上升。 ```python import boto3 from sagemaker import get_execution_role, session from deepseek.rag import RagPipeline def create_sagemaker_endpoint(model_name='deepseek-rag'): sm_client = boto3.client('sagemaker') role = get_execution_role() sess = session.Session() pipeline = RagPipeline( model=model_name, endpoint_instance_type="ml.m5.large", region_name=sess.region_name, role=role ) return pipeline.deploy() if __name__ == "__main__": rag_pipeline = create_sagemaker_endpoint() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值