在Windows系统和Linux系统部署本地大模型
·
所用到的软件ollama、chatbox、streamlit
ollama是一款开源的本地大模型运行框架
chatbox(集成)、streamlit(api)提供可视化前端页面
Windows部署
ollama下载链接:https://ollama.com/download/OllamaSetup.exe
下载完后点击安装包完成安装后,在命令行输入:
ollama -v
出现 ollama version is 0.12.3则说明安装成功了
然后在ollama官网查询自己要用到的大模型版本类型
我选的是deepseek-r1:7b
就在命令行执行
ollama run deepseek-r1
下载完成之后就部署完成了
可以在chatbox的设置中连接到本地大模型作为前端页面展示
也可以用python代码运用streamlit库进行前端设置(放在最后)
Linux部署
下载ollama
curl -fsSL https://ollama.com/install.sh | sh
查看ollama状态
systemctl status ollama
启动ollama
systemctl start ollama
将ollama设为开机自启
systemctl enable ollama
查看ollama帮助文档
ollama -h
然后可以在ollama官网选择自己要下载的大模型并运行:
ollama run deepseek-r1:7b
这样一个命令行界面的大模型就好了
用python代码构建前后端大模型
Linux环境首先检查是否安装python环境
yum install python -y
然后安装要用到的库
pip install ollama streamlit
再编写一个py脚本(Windows 直接在pycharm中编写就可以了)
vim ai.py
脚本
#!/usr/bin/python3 windows环境可以不要这一行
import ollama
import time
import streamlit as st
#client = ollama.Client(host = 'http://localhost:11434') #linux用这行代码
client = ollama.Client(host = 'http://127.0.0.1:11434') #window用这行代码
if 'message' not in st.session_state:
st.session_state['message'] = []
st.title("Tomdeng的智能机器人")
st.divider()
message = st.chat_input("请输入你的消息")
#了解他的角色 了解他的消息本身
if message:
#将消息存入历史记录中
st.session_state['message'].append({'role':'user','message':message})
#将消息渲染出来
for ms in st.session_state['message']:
st.chat_message(ms['role']).markdown(ms['message'])
with st.spinner('思考中'):
#response = client.chat(model='qwen3:0.6b',messages=[{'role':'user','content':message}])
response = client.chat(model='deepseek-r1:7b',messages=[{'role':'user','content':message}])
#存储回答的消息
st.session_state['message'].append({'role':'assistant','message':response['message']['content']})
st.chat_message('assistant').markdown(response['message']['content'])
之后在终端执行
streamlit run ai.py
ollama核心方法/接口
配置连接服务:
client = ollama.Client(host='http://127.0.0.1:11434')
与模型进行对话(支持上下文)
response = client.chat(model='deepseek-r1:7b',messages=[{'role':'user','content':message}])
输出回复
print(response['message']['content'])
生成文本(不支持上下文)
text = client.generate(model='deepseek-r1:7b',prompt="写一首诗")
输出回复
print(text['response'])
下载模型
ollama.pull('qwen3:0.6b')
删除模型
ollama.delete('qwen3:0.6b')
列出本地大模型
ollama.list()
查看模型详细信息
ollama.show('qwen3:0.6b')
streamlit核心方法/接口
导入库并且取别名
import streamlit as st
设置标题
st.title('智能机器人')
设置分割线
st.divider()
显示文本
st.write('哈哈哈哈')
设置输入框
message = st.chat_input("请输入文本")
回复消息
st.chat_message['user'].markdown('hahah') -- 用户的消息用user,大模型的回复用assistant
streamlit执行原理是一直循环脚本,每次运行时都会重新加载,所以并没有记忆性(如你设置了一个count=1,每问答一次后count++,但是他给出的回复永远都是count=1)而且以往的聊天记录都没了
所以引入streamlit存储和共享数据的核心机制–st.session_state(字典类型)
可以将以前的问答记录在st.session_state中
通常我们要记录的数据是 角色 + 文本
所以可以将st.session_stats[‘message’]设为一个列表,每个列表元素用字典的形式存放
session_state
ms = st.session_state['message']
ms.append({'role':'user','message':response})
更多推荐

所有评论(0)