从零构建聊天机器人:Streamlit+Ollama + 本地私有大模型(qwen 等)
·
项目简介
本文将介绍如何结合 Streamlit、Ollama 和本地私有大模型(如 qwen 系列),快速搭建一个带有上下文对话功能的聊天机器人。通过该方案,你可以实现完全本地化部署,无需依赖外部 API,保护数据隐私。

核心工具说明
-
Streamlit:快速构建 Python Web 应用的神器,无需前端知识即可实现交互界面。详细教程:Python 神器 Streamlit:5 分钟打造 Web 应用
-
Ollama:轻量级本地大模型部署工具,支持一键运行 qwen、llama 等主流模型。详细教程:私有化部署大模型后端 Ollama
完整代码实现与详解
以下是带有上下文对话功能的聊天机器人完整代码,按功能模块拆解说明:
"""
带有上下文对话历史的文本聊天机器人
技术栈:Streamlit(界面) + Ollama(本地模型接口) + qwen2.5:7b(大模型)
"""
# 1. 导入依赖库
import streamlit as st # 用于构建Web界面
import ollama # 用于调用本地Ollama服务
# 2. 初始化Ollama客户端(连接本地模型服务)
# 确保已通过Ollama启动本地服务,默认地址为http://127.0.0.1:11434
client = ollama.Client(host="http://127.0.0.1:11434")
# 3. 设置页面基础元素
st.title("马锐开源科技公司聊天机器人") # 页面标题
st.divider() # 分割线,优化视觉效果
# 4. 初始化会话状态(存储聊天历史)
# Streamlit的session_state用于在会话中保存数据(如聊天记录)
if "messages" not in st.session_state:
# 首次加载时初始化空列表,并添加AI欢迎语
st.session_state.messages = [
{"role": "assistant", "content": "你好,我是马锐开源科技公司机器人,有什么问题我可以帮助你吗?"}
]
# 5. 渲染历史聊天记录
# 遍历会话状态中的聊天记录,按角色(用户/AI)展示
for message in st.session_state.messages:
with st.chat_message(message["role"]): # 按角色区分显示样式(用户/AI)
st.write(message["content"]) # 显示聊天内容
# 6. 处理用户输入并生成回复
# 获取用户输入(聊天框)
prompt = st.chat_input("请输入您要咨询的问题:")
if prompt: # 当用户输入内容时
# 6.1 显示用户输入并保存到历史记录
with st.chat_message("user"):
st.write(prompt)
st.session_state.messages.append({"role": "user", "content": prompt})
# 6.2 调用本地大模型生成回复(带上下文)
with st.spinner("正在思考中..."): # 显示加载状态
# 调用Ollama的chat接口,传入模型名称和历史聊天记录(实现上下文对话)
response = client.chat(
model="qwen2.5:7b", # 模型名称(需提前通过Ollama下载)
messages=st.session_state.messages # 包含历史对话的消息列表
)
# 6.3 提取并显示AI回复,保存到历史记录
ai_response = response["message"]["content"] # 从响应中提取AI回复内容
with st.chat_message("assistant"):
st.write(ai_response)
st.session_state.messages.append({"role": "assistant", "content": ai_response})
代码关键点说明
-
上下文对话实现:通过
st.session_state.messages存储历史聊天记录,每次调用模型时传入完整列表,实现上下文关联。 -
本地部署优势:依赖 Ollama 启动本地模型服务,数据不经过第三方,适合隐私敏感场景。
-
界面交互优化:使用
st.chat_message区分用户和 AI 的消息样式,st.spinner提示加载状态,提升用户体验。
使用前准备
-
安装依赖:
pip install streamlit ollama -
下载模型:通过 Ollama 命令下载 qwen2.5:7b(如
ollama pull qwen2.5:7b) -
启动服务:运行
ollama serve启动本地服务 -
运行代码:
streamlit run your_script_name.py
按照以上步骤,即可快速搭建属于自己的本地聊天机器人!
更多推荐



所有评论(0)