首页 AI教程 Streamlit是什么?怎么部署(附:基于Streamlit搭建一个ChatPDF可视化应用)

Streamlit是什么?怎么部署(附:基于Streamlit搭建一个ChatPDF可视化应用)

作者: AI反应堆 更新时间:2024-11-13 09:07:22 分类:AI教程

今天咱们来聊聊Streamlit,它可是Python界的“前端神器”,尤其适合咱们这种想做可视化应用的小伙伴。更妙的是,Streamlit能让你用Python代码一键生成网页应用,不需要懂前端技能,轻轻松松部署在服务器上。今天小堆就给你唠唠啥是Streamlit、怎么部署它,最后再带你手把手搭建一个基于Streamlit的ChatPDF应用,来个实操演示!

Streamlit是什么?怎么部署(附:基于Streamlit搭建一个ChatPDF可视化应用)


一、Streamlit到底是啥?

简单来说,Streamlit是一款专为数据科学家和Python开发者设计的开源Web应用框架。它的特点是:代码简洁、可视化强、部署方便。通常我们用Jupyter Notebook处理数据吧?Streamlit就像一个能自动生成页面的Notebook,不需要学HTML、CSS、JavaScript这些前端语言,直接把Python代码丢进来,就能生成交互性很强的网页应用,非常适合数据展示和分析。

Streamlit的特点

  • 简洁的API:一行代码生成复杂图表、表单等交互组件,几分钟搞定应用。
  • 实时更新:数据、图表会随代码变化实时刷新,方便测试。
  • 一键分享:Streamlit提供了自己的云服务,部署和分享几步搞定。

二、Streamlit应用怎么部署?

Streamlit的部署方式很灵活,我们可以选择它自带的Streamlit Cloud,或者用自有服务器部署,下面我就详细说说这两种方法。

1. 使用Streamlit Cloud(最简单)

Streamlit Cloud是Streamlit官方的托管服务,不需要自己管理服务器,适合快速发布和分享。

  • 步骤一:注册Streamlit Cloud账号,并登录。
  • 步骤二:把你的代码推送到GitHub仓库。
  • 步骤三:在Streamlit Cloud中,连接GitHub仓库,选择主文件(通常是app.py),点击部署即可。

这样做的好处是,部署快、更新方便,一改代码就能自动同步!

2. 自有服务器部署(适合长期应用)

如果你想在自己服务器上运行,步骤会稍微复杂些:

  • 步骤一:确保服务器上有Python环境,安装Streamlit。
    bash
    pip install streamlit
  • 步骤二:将应用脚本上传到服务器,比如命名为app.py
  • 步骤三:运行Streamlit应用:
    bash
    streamlit run app.py --server.port <端口号> --server.address 0.0.0.0
  • 步骤四:若要实现外网访问,可以用nginxapache配置反向代理。

这样Streamlit应用就可以稳定运行在你的服务器上啦!


三、基于Streamlit实现一个ChatPDF应用

ChatPDF应用是个很有趣的项目:上传PDF文件,应用就可以用类似ChatGPT的方式回答关于PDF内容的问题。这种功能在信息提取、问答等场景中特别实用,接下来咱们看看代码怎么写!

1. 环境配置

  • 安装必要库
    bash
    pip install streamlit
    pip install PyMuPDF # 用于解析PDF内容
    pip install openai # 用于调用GPT-3.5或4的API

2. 基本代码结构

python
import streamlit as st
import fitz # PyMuPDF
import openai
# 设置API密钥
openai.api_key = "你的OpenAI API密钥"

# 定义读取PDF文件的函数
def read_pdf(file):
text = ""
with fitz.open(file) as pdf:
for page_num in range(pdf.page_count):
page = pdf.load_page(page_num)
text += page.get_text()
return text

# 定义提问函数
def ask_question(pdf_text, question):
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are an assistant for answering questions based on PDF content."},
{"role": "user", "content": f"PDF content: {pdf_text}. Question: {question}"}
]
)
return response.choices[0].message['content']

# Streamlit界面
st.title("ChatPDF可视化应用")
uploaded_file = st.file_uploader("上传PDF文件", type="pdf")

if uploaded_file:
pdf_text = read_pdf(uploaded_file)
st.write("PDF文件已上传!")

question = st.text_input("请输入您的问题:")
if question:
answer = ask_question(pdf_text, question)
st.write("回答:", answer)

3. 代码解读

  • 文件上传st.file_uploader允许用户上传PDF文件。
  • 文本读取read_pdf函数利用PyMuPDF读取PDF文件内容。
  • 生成回答ask_question函数使用OpenAI API,将PDF内容和问题一起传递给GPT模型,生成回答。

4. 运行和部署

保存为app.py后,通过命令运行:

bash
streamlit run app.py

然后选择部署方式即可,是不是很方便?


小结

今天小堆带你认识了Streamlit的基本概念和两种部署方式,还手把手实现了一个ChatPDF应用。Streamlit真的是一个高效实用的工具,尤其是搭配AI模型,让咱们在数据应用和展示上更自由。赶快试试搭建自己的应用吧!

相关文章