自助建站平台搭建,网站建设和整改方案,广东省建设见证员网站,2015网站设计趋势1.环境准备
1.1 安装Streamlit
在安装Streamlit之前#xff0c;请确保您的系统中已经正确安装了Python和pip。您可以在终端或命令行中运行以下命令来验证它们是否已安装
python --version
pip --version一旦您已经准备好环境#xff0c;现在可以使用pip来安装Streamlit了。…1.环境准备
1.1 安装Streamlit
在安装Streamlit之前请确保您的系统中已经正确安装了Python和pip。您可以在终端或命令行中运行以下命令来验证它们是否已安装
python --version
pip --version一旦您已经准备好环境现在可以使用pip来安装Streamlit了。在终端或命令行中运行以下命令
pip install streamlit安装完成后您可以使用以下命令验证Streamlit是否成功安装
streamlit versionStreamlit运行文件方式
streamlit run app.py1.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, messagesmessages, streamTrue)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最终效果