Streamlit 在 AI 大模型(如 GPT、LLaMA、Claude 等) 和 RAG(检索增强生成) 中的应用非常广泛,它能够快速构建交互式界面,让用户直观体验大模型的能力,并灵活调整参数或输入数据。以下是具体应用场景和实现方法:
Streamlit 可以轻松集成 OpenAI、Hugging Face、LangChain 等库,构建大模型的聊天、文本生成或问答应用。
import streamlit as st
import openai
# 设置 OpenAI API 密钥
openai.api_key = st.secrets["OPENAI_KEY"]
st.title(" GPT-4 聊天助手")
if "messages" not in st.session_state:
st.session_state.messages = []
# 显示历史消息
for message in st.session_state.messages:
with st.chat_message(message["role"]):
st.markdown(message["content"])
# 用户输入
if prompt := st.chat_input("输入你的问题..."):
st.session_state.messages.append({"role": "user", "content": prompt})
with st.chat_message("user"):
st.markdown(prompt)
# 调用 GPT-4 生成回复
with st.chat_message("assistant"):
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": m["role"], "content": m["content"]} for m in st.session_state.messages],
stream=True
)
reply = st.write_stream(response)
st.session_state.messages.append({"role": "assistant", "content": reply})
RAG 结合了 检索(Retrieval) 和 生成(Generation),适用于知识问答、文档分析等任务。Streamlit 可以构建完整的 RAG 前端,让用户上传文档、调整检索策略并查看生成结果。
import streamlit as st
from langchain.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import FAISS
from langchain.chat_models import ChatOpenAI
from langchain.chains import RetrievalQA
# 上传 PDF
uploaded_file = st.file_uploader("上传 PDF", type="pdf")
if uploaded_file:
# 保存并加载 PDF
with open("temp.pdf", "wb") as f:
f.write(uploaded_file.getbuffer())
loader = PyPDFLoader("temp.pdf")
pages = loader.load_and_split()
# 文本分块 + 向量存储
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
texts = text_splitter.split_documents(pages)
embeddings = OpenAIEmbeddings()
db = FAISS.from_documents(texts, embeddings)
# 构建 RAG 链
retriever = db.as_retriever(search_kwargs={"k": 3})
qa = RetrievalQA.from_chain_type(
llm=ChatOpenAI(model="gpt-3.5-turbo"),
chain_type="stuff",
retriever=retriever
)
# 用户提问
query = st.text_input("输入你的问题")
if query:
result = qa.run(query)
st.write("回答:", result)
效果:
Streamlit 可用于:
import streamlit as st
prompt_template = st.text_area(
"Prompt 模板",
value="请用简洁的语言回答以下问题:\n问题:{question}\n回答:"
)
question = st.text_input("输入问题", "Python 如何读取 CSV 文件?")
if st.button("生成回答"):
final_prompt = prompt_template.format(question=question)
st.write("最终 Prompt:", final_prompt)
# 调用大模型生成回答...
streamlit run app.py
本地运行,或部署到 Streamlit Cloud、Hugging Face Spaces。✅ 极速开发:无需前端,几小时构建完整应用。
✅ 交互灵活:支持参数调整、文件上传、实时生成。
✅ 适合演示:方便向客户或团队展示 AI 能力。
Streamlit 让大模型和 RAG 技术的应用更加直观和易用,是 AI 原型开发和轻量级部署的理想工具。