Streamlit 快速搭建私人大模型交互界面
·
Streamlit 快速搭建私人大模型交互界面
1. 安装依赖
pip3 install streamlit openai
2.代码
import streamlit as st
from openai import OpenAI
# ================= 1. 配置本地大模型参数 =================
LOCAL_API_BASE = "http://192.168.1.10:8000/v1"
LOCAL_MODEL_NAME = "Qwen/Qwen3-VL-30B-A3B-Instruct"
API_KEY = "None"
os.environ["NO_PROXY"] = "192.168.1.10"
# 设置网页标题和图标
st.set_page_config(page_title="私人本地 ChatGPT", page_icon="🤖")
st.title("🤖 我的私人本地大模型")
# 初始化 OpenAI 客户端
client = OpenAI(base_url=LOCAL_API_BASE, api_key=API_KEY)
# ================= 2. 初始化聊天历史记录 =================
if "messages" not in st.session_state:
st.session_state.messages = [
{"role": "assistant", "content": "你好!我是你的私人 AI 助手,有什么我可以帮你的吗?"}
]
# ================= 3. 渲染历史对话界面 =================
for message in st.session_state.messages:
with st.chat_message(message["role"]):
st.markdown(message["content"])
# ================= 4. 处理用户输入与模型响应 =================
if user_input := st.chat_input("输入你的问题..."):
# 1. 将用户输入存入历史记录并显示在前端
st.session_state.messages.append({"role": "user", "content": user_input})
with st.chat_message("user"):
st.markdown(user_input)
# 2. 调用本地大模型并以流式(Stream)响应
with st.chat_message("assistant"):
response_placeholder = st.empty()
full_response = ""
try:
stream = client.chat.completions.create(
model=LOCAL_MODEL_NAME,
messages=[
{"role": m["role"], "content": m["content"]}
for m in st.session_state.messages
],
stream=True,
)
# 动态接收文本块并刷新前端
for chunk in stream:
if chunk.choices[0].delta.content is not None:
full_response += chunk.choices[0].delta.content
response_placeholder.markdown(full_response + "▌")
# 流式结束后,渲染最终的干净文本
response_placeholder.markdown(full_response)
# 3. 将模型的回答完整存入历史记录
st.session_state.messages.append({"role": "assistant", "content": full_response})
except Exception as e:
st.error(f"连接本地模型服务失败,请检查服务是否开启。错误信息: {e}")
更多推荐

所有评论(0)