一、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。以下是部署的基本步骤:

  1. 创建一个Procfilesetup.sh文件,用于配置环境。

  2. 将应用代码和依赖文件上传到GitHub仓库。

  3. 在Heroku上创建应用,并连接到GitHub仓库。

  4. 部署应用并访问。

二、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的步骤:

  1. 创建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"]
  2. 部署到Koyeb: 使用Koyeb的CLI工具或Web界面部署应用。确保在配置中设置OPENAI_API_KEY环境变量。

4. 应用场景
  • 知识问答:用户可以针对自定义数据(如文档、PDF等)提问。

  • 数据探索:快速探索和分析数据。

  • 内容生成:基于用户输入生成内容。

通过结合Streamlit和LlamaIndex,可以快速构建功能强大的AI应用,同时保持开发的灵活性和高效性。

Logo

脑启社区是一个专注类脑智能领域的开发者社区。欢迎加入社区,共建类脑智能生态。社区为开发者提供了丰富的开源类脑工具软件、类脑算法模型及数据集、类脑知识库、类脑技术培训课程以及类脑应用案例等资源。

更多推荐