1.环境准备
1.1 安装Streamlit
在安装Streamlit之前,请确保您的系统中已经正确安装了Python和pip。您可以在终端或命令行中运行以下命令来验证它们是否已安装
python --version
pip --version
一旦您已经准备好环境,现在可以使用pip来安装Streamlit了。在终端或命令行中运行以下命令:
pip install streamlit
安装完成后,您可以使用以下命令验证Streamlit是否成功安装:
streamlit version
Streamlit运行文件方式
streamlit run app.py
1.2 安装Ollama
curl -fsSL https://ollama.com/install.sh | sh
可能会出现断传,建议下载模型文件然后手动安装
官网下载速度慢的话可以访问 国内下载地址 下载
- 直接下载后将压缩包 传到服务器上的文件夹上,解压到usr目录,输入:
sudo tar -C /usr -xzvf 你的压缩包所在位置
sudo systemctl daemon-reload
sudo systemctl enable ollama
服务启停
2.python程序
import os
# 调用私有化的ollama
os.environ['OLLAMA_HOST'] = 'http://192.168.4.201:11434'
import ollamadef get_chat_response(messages, model):# 调用ollama对话接口,以流的方式交互并直接返回stream = ollama.chat(model= model, messages=messages, stream=True)return streamdef get_model():# 获取deepseek 模型版本model_name = []result = ollama.list().modelsfor a in result:model_name.append(a.model)return tuple(model_name)
以下streamlit_ollama.py
是streamlit run 执行的文件
import streamlit as stfrom utils import get_chat_response, get_modelcontent = ''
# 这个方法是接收ollama的流,是一个generator,然后遍历这个generator,提取其中的content字段,
# 通过yield关键字重新生成一个generator,交给 write_stream()方法流式输出
def getContent(stream):global contentfor chunk in stream:c = chunk['message']['content']content += cyield cst.title("聊天机器人")# 从导航栏选择要交互的模型版本
with st.sidebar:model = st.selectbox('请选择你的对话模型:',get_model())
# 记录对话历史
if "messages" not in st.session_state:st.session_state['messages'] = [{'role':'assistant', 'content':'你好,请问有什么可以帮助你?'}]for message in st.session_state['messages']:st.chat_message(message['role']).write(message['content'])# 等待用户输入
prompt = st.chat_input()if prompt:st.session_state['messages'].append({'role':'user','content':prompt})st.chat_message('user').write(prompt)with st.spinner("思考中"):stream = get_chat_response(st.session_state['messages'], model)st.chat_message('assistant').write_stream(getContent(stream))st.session_state['messages'].append({'role':'assistant','content':content})content=''
最终效果