时间:2026-03-22 21:00
人气:
作者:admin
本篇承接上篇入门实战|RTX3060本地私有化部署DeepSeek 7B聊天机器人(离线可用+GPU加速调优),聚焦Streamlit+Ollama本地大模型聊天机器人开发,全程基于WSL2环境实操,解决URL连接报错、会话丢失、服务无法访问等核心问题,搭建支持本地模型与云端API双调用的聊天机器人。
基于WSL2环境,搭配Streamlit快速搭建Web可视化界面,直连本地Ollama部署的DeepSeek大模型,实现无云端API依赖、纯本地运行、多轮对话持久化的轻量AI聊天机器人,同时解决WSL2环境下模型连接、前端访问的各类实操bug,打造可直接落地的Demo项目。
运行环境:WSL2(Ubuntu),核心解决GPU支持与Linux环境适配,规避WSL1不兼容问题
前端框架:Streamlit,零前端基础快速搭建可视化聊天界面,轻量化部署
大模型管理:Ollama,本地快速部署DeepSeek-r1:7b模型,简化本地模型调用流程
开发工具:VS Code+Remote-WSL插件,替代PyCharm社区版(不支持WSL远程解释器),无缝衔接WSL环境
遵循迭代开发逻辑:环境预检查→基础界面搭建→会话历史解决→真实模型接入→报错调试→最终优化,从Demo到可运行项目逐步推进。
在私有化部署基础上,基于WSL+Ubuntu搭建标准化Linux开发环境,依托LangChain实现模型统一调用封装,通过Streamlit快速搭建Web可视化聊天界面,实现本地Ollama模型+阿里云通义云端模型双模式切换,打造可自定义、可演示的完整聊天机器人。
Streamlit与LangChain在Linux环境下兼容性更佳,且便于后续扩展RAG、AI Agent功能,通过WSL快速部署Ubuntu子系统,无需双系统或虚拟机。
踩坑点:勾选后默认是WSL1(无GPU支持导致推理卡慢/报错),还需升级为WSL2,并配置GPU驱动和适配GPU的python环境
# 一、升级 / 安装 WSL2
# 以管理员身份打开 Windows 终端,执行:
wsl --stop # 停止现有 WSL 实例
wsl --set-default-version 2 # 设置默认 WSL 版本为 2
# 查看已安装的发行版版本,确认是 WSL2:
wsl --list --verbose
# 如果是 WSL1,执行升级:
wsl --set-version <你的发行版名称> 2 # 比如 Ubuntu-22.04
# 二、升级安装 GPU 驱动
# WSL2 中安装 CUDA Toolkit(以 NVIDIA 为例)
sudo apt update
sudo apt install nvidia-cuda-toolkit
# 验证 GPU 是否识别
nvidia-smi # 能看到显卡信息就说明成功
# 三、WSL2 中配置 Python 环境(适配 GPU)
# 安装适配 WSL2 的 PyTorch(带 CUDA 支持)
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
# 验证 CUDA 是否可用
python -c "import torch; print(torch.cuda.is_available())" # 输出 True 即成功
重启后打开Microsoft Store,搜索Ubuntu 22.04 LTS,点击获取并安装;
启动Ubuntu,按照提示设置用户名与密码,完成系统初始化,进入Linux终端界面。
在WSL里创建项目文件test.py,打开 Windows 终端 → 切换到 WSL 标签页(比如 Ubuntu),进入你的 test.py项目目录:
cd /home/你的用户名/你的项目文件夹 # 比如 cd /home/xxx/test.py
code . # 关键!用 WSL 里的 code 命令打开当前目录
此时 VS Code 会自动弹出「正在连接 WSL」的提示,等几秒就会以 WSL 环境打开整个项目(标题栏会显示「WSL: Ubuntu」)。
踩坑点:入门初学者会选择PyCharm社区版,但其并不支持 WSL 作为 Python 解释器(2024.3.5号后有限支持,强行配置也会各种报错、不稳定)所以选择VS Code.
sudo apt update && sudo apt upgrade -y
sudo apt install python3 python3-pip -y
python3 --version
pip3 --version
正常返回版本信息即配置完成。
在Ubuntu终端中,依次安装项目所需Python库,涵盖Ollama调用、LangChain框架、Streamlit界面开发、阿里云模型对接模块:
踩坑点:新版 Ubuntu 为了避免破坏系统自带 Python,禁止直接用 pip install 安装全局包,所以需先构建虚拟环境。
python3 -m venv venv # 创建虚拟环境
source venv/bin/activate # 激活虚拟环境
# 安装Ollama Python SDK,实现代码调用本地模型
pip3 install ollama
# 安装Streamlit,快速开发Web界面
pip3 install streamlit
写个test.py测试一下(注运行前需要在后台新开个WSL终端里运行ollama serve,且不关闭):
对应文件:ollama_test.py功能:环境连通性测试。
逻辑:直接调用本地的 DeepSeek 模型。
作用:验证 WSL2 + Ollama 服务是否正常启动(端口 11434),验证模型加载是否成功(deepseek-r1:7b),证明你的本地环境能跑出 AI 回答,为后面封装 Streamlit 铺路。
对应文件:streamlit_test.py / streamlit_demo.py功能:前端页面搭建与基础组件演示。
逻辑:用 Streamlit 快速画一个网页。
组件演示:
st.title / st.write:渲染文字标题和内容。
st.chat_input:创建底部的输入框。
st.spinner:展示加载动画(“思考中…”)。
st.chat_message:展示左右对齐的气泡对话框(区分用户和 AI)。
核心价值:学习 Streamlit 的组件用法,解决 “怎么把后台代码展示到网页上” 的问题。
在Ubuntu终端中,激活虚拟环境,进入代码所在目录,执行启动命令:
streamlit run streamlit_test.py
启动成功后,终端会生成本地访问链接(默认http://localhost:8501),复制链接至浏览器打开,即可进入聊天机器人界面,选择对应模型,实现实时交互。

对应文件:streamlit_demo_with_history.py功能:解决上下文丢失问题。
核心痛点:Streamlit 每次刷新 / 输入,会话变量会重置,对话会断。
逻辑:
使用 st.session_state 保存 message 列表。
每次用户输入,先把问题存进 session_state。
循环遍历 session_state 里的历史消息,重新渲染到界面上。
核心价值:实现了多轮对话的基础骨架,这是做聊天机器人的必备前提。

在完成基础环境验证和 Streamlit 会话状态调试后,基于 Ollama 直接调用本地 DeepSeek-R1 模型,实现了无框架依赖的轻量版聊天机器人。(特点:直接调用本地 DeepSeek 模型,无需额外框架,适合快速验证、资源受限场景;但记忆逻辑需手动维护,扩展性弱。)
这个版本的核心价值是:快速验证本地模型的对话能力与 WSL2 环境的稳定性;完成了「用户输入 - 历史记录 - 模型调用 - 结果渲染」的完整交互闭环;后续引入 LangChain 做模块化封装、扩展记忆与工具调用能力,打下了清晰的原型基础。下图的Local URL即是通过streamlit做出的前端界面:

登录阿里云平台,进入通义千问控制台,申请API Access Key与Secret Key,入门阶段可使用免费额度模型,记录密钥信息备用。
对应文件:langchain_util.py / ityoujian_chatbox.langchain.py功能:引入 LangChain 增强能力。
逻辑:langchain_util.py:封装了 ConversationBufferMemory(记忆缓冲)和 Tongyi(通义千问模型)。定义了 get_response 函数作为接口。ityoujian_chatbox.langchain.py:这是最终的主程序入口。它不再直接调用 Ollama,而是导入上面写好的 get_response 函数。结合 st.session_state 维护历史记录,调用 LangChain 的 Chain 链条完成推理。
核心价值:项目整合。把零散的 API 调用、页面展示、记忆管理整合成了一个完整的 Web 应用项目(适合复杂业务场景、后续扩展工具调用)。


最终代码如下:
from langchain_util import get_response
import streamlit as st
# 初始化消息记录
if 'message' not in st.session_state:
st.session_state['message'] = []
#添加标题
st.title('小J智聊机器人')
#添加分割线
st.divider()
#用户输入问题
prompt = st.chat_input('请输入你的问题')
#判断,如果用户输入内容则开始工作
if prompt:
# 将用户提问添加到历史记录中
st.session_state['message'].append({'role':'user','content':prompt})
# for循环将历史消息全部输出到消息容器内
for message in st.session_state['message']:
st.chat_message(message['role']).markdown(message['content'])
with st.spinner('AI思考中.'):
response = get_response(prompt,api_key='你的api_key')
# 从response里面取出来message和content两个key
st.session_state['message'].append({'role':'assistant','content':response})
# 在页面中渲染ai回答
st.chat_message('assistant').markdown(response)
常见问题汇总
本文完整实现了大模型私有化部署与轻量化聊天机器人搭建,从Ollama本地模型运行、Chatbox可视化对接,到LangChain模型封装、Streamlit界面开发,形成完整的入门级实战闭环,全程依托开源工具,可复现性强,适合作为大模型应用开发入门项目,也可直接整理至简历,体现实操落地能力。
后续可基于本项目进一步扩展,适配AI Agent与RAG岗位需求:
集成RAG知识库,实现本地文档检索问答,打造专属问答机器人
扩展Agent工具调用能力,实现简单的任务自动化
优化模型参数与界面交互,提升响应速度与使用体验
打包部署至云服务器,实现外网访问演示
完整项目工程文件(含配置、依赖、工具类)已打包,可直接下载运行:
ityoujian_chatbox_langchain.py、langchain_util.py等文件,可直接部署运行。