Streamlit框架介绍及如何使用
Streamlit是一个开源的Python框架,专为数据科学家和机器学习工程师设计,用于快速创建交互式Web应用。它简单易用,支持与流行的Python数据科学库无缝集成,非常适合快速原型开发和项目共享。
一、Streamlit框架介绍及使用方法
1. Streamlit框架简介
Streamlit是一个开源的Python框架,专为数据科学家和机器学习工程师设计,用于快速创建交互式Web应用。它简单易用,支持与流行的Python数据科学库无缝集成,非常适合快速原型开发和项目共享。
2. 安装Streamlit
安装Streamlit非常简单,只需使用pip命令:
bash复制
pip install streamlit
安装完成后,可以通过以下命令测试安装:
bash复制
streamlit hello
这将自动打开一个示例页面。
3. 运行Streamlit应用
运行Streamlit应用也很简单。将Streamlit命令嵌入到普通的Python脚本中,然后使用以下命令运行:
bash复制
streamlit run your_python_file.py
应用将在本地启动,并在默认浏览器中打开。如果需要在IDE(如PyCharm)中配置Streamlit,可以使用以下命令:
bash复制
python -m streamlit run your_python_file.py
4. Streamlit基本用法
以下是Streamlit的一些基本用法示例:
-
显示文本:
Python复制
import streamlit as st st.title("Hello World") st.write("This is a simple Streamlit app.") -
显示数据:
Python复制
import pandas as pd df = pd.DataFrame({ 'column1': [1, 2, 3], 'column2': [4, 5, 6] }) st.write(df) -
输入组件:
Python复制
user_input = st.text_input("Enter your name", "Type here...") st.write("Hello,", user_input) -
显示进度和状态:
Python复制
import time with st.spinner("Wait for it..."): time.sleep(5) st.success("Done!") -
侧边栏和容器:
Python复制
sidebar = st.sidebar sidebar.title("Sidebar Title") sidebar.write("This is a sidebar.") -
数据可视化:
Python复制
import matplotlib.pyplot as plt import numpy as np fig, ax = plt.subplots() ax.plot(np.random.rand(10)) st.pyplot(fig)
5. Streamlit的优势
-
快速开发:Streamlit允许开发者在几分钟内创建和部署Web应用。
-
易于学习:其语法简单,适合初学者快速上手。
-
数据可视化:支持丰富的数据可视化功能,适合展示复杂的图表和数据。
-
交互式界面:通过侧边栏和输入组件,用户可以轻松与应用交互。
6. 适用场景
Streamlit非常适合以下场景:
-
机器学习模型部署:快速创建模型预测界面。
-
数据分析和可视化:展示数据探索和分析结果。
-
快速原型开发:在短时间内构建和测试新想法。
7. 示例项目
以下是一个简单的Streamlit应用示例,用于预测客户流失:
Python复制
import streamlit as st
import pandas as pd
import pickle
# 加载模型
model = pickle.load(open('churn_clf.pkl', 'rb'))
# 创建输入表单
st.title("Customer Churn Prediction")
gender = st.selectbox("Gender", ["Male", "Female"])
monthly_charges = st.number_input("Monthly Charges", min_value=0.0)
tenure = st.number_input("Tenure", min_value=0)
payment_method = st.selectbox("Payment Method", ["Bank Transfer", "Credit Card", "Electronic Check"])
# 将输入转换为模型输入
input_data = pd.DataFrame({
'gender': [gender],
'MonthlyCharges': [monthly_charges],
'tenure': [tenure],
'PaymentMethod': [payment_method]
})
# 预测
prediction = model.predict(input_data)
st.write("Prediction:", "Churn" if prediction[0] == 1 else "Not Churn")
8. 部署Streamlit应用
Streamlit应用可以通过多种方式部署,例如使用Heroku。以下是部署的基本步骤:
-
创建一个
Procfile和setup.sh文件,用于配置环境。 -
将应用代码和依赖文件上传到GitHub仓库。
-
在Heroku上创建应用,并连接到GitHub仓库。
-
部署应用并访问。
二、Streamlit与LlamaIndex配合使用指南
1. 简介
LlamaIndex 是一个用于构建基于大型语言模型(LLM)的应用程序的数据框架,专注于上下文增强(context augmentation),允许用户在不微调模型的情况下注入自定义数据。Streamlit 是一个用于快速构建数据驱动Web应用的Python框架。将两者结合,可以高效地创建交互式AI应用。
2. 配合使用步骤
2.1 安装依赖
首先,确保安装了必要的依赖:
bash复制
pip install streamlit llama-index
2.2 创建项目目录
创建一个项目目录并初始化:
bash复制
mkdir example-llamaindex
cd example-llamaindex
2.3 创建Streamlit应用
在项目目录中创建一个app.py文件,并添加以下代码:
Python复制
# app.py
import os
import streamlit as st
from llama_index.core import (
VectorStoreIndex,
SimpleDirectoryReader,
StorageContext,
load_index_from_storage,
)
# 设置存储目录
PERSIST_DIR = "./storage"
# 检查是否已存在存储
if not os.path.exists(PERSIST_DIR):
# 加载文档并创建索引
documents = SimpleDirectoryReader("data").load_data()
index = VectorStoreIndex.from_documents(documents)
# 持久化存储
index.storage_context.persist(persist_dir=PERSIST_DIR)
else:
# 加载已存在的索引
storage_context = StorageContext.from_defaults(persist_dir=PERSIST_DIR)
index = load_index_from_storage(storage_context)
# 创建查询引擎
query_engine = index.as_query_engine()
# 定义Streamlit应用
st.title("Ask Llama about Your Data")
query = st.text_input("What would you like to ask?", "Tell me about the data.")
# 如果点击“提交”按钮
if st.button("Submit"):
if not query.strip():
st.error("Please provide the search query.")
else:
try:
response = query_engine.query(query)
st.success(response)
except Exception as e:
st.error(f"An error occurred: {e}")
2.4 测试应用
在本地运行应用:
bash复制
streamlit run app.py
访问http://127.0.0.1:8501查看应用。
3. 部署到云端
可以将应用部署到Hugging Face Spaces或Koyeb等平台。以下是部署到Koyeb的步骤:
-
创建Dockerfile: 在项目目录中创建一个
Dockerfile,内容如下:dockerfile复制
FROM python:3.11-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . CMD ["streamlit", "run", "app.py"] -
部署到Koyeb: 使用Koyeb的CLI工具或Web界面部署应用。确保在配置中设置
OPENAI_API_KEY环境变量。
4. 应用场景
-
知识问答:用户可以针对自定义数据(如文档、PDF等)提问。
-
数据探索:快速探索和分析数据。
-
内容生成:基于用户输入生成内容。
通过结合Streamlit和LlamaIndex,可以快速构建功能强大的AI应用,同时保持开发的灵活性和高效性。
更多推荐


所有评论(0)