项目简介

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

 

核心工具说明

完整代码实现与详解

以下是带有上下文对话功能的聊天机器人完整代码,按功能模块拆解说明:

"""
带有上下文对话历史的文本聊天机器人
技术栈: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})

代码关键点说明

  1. 上下文对话实现:通过st.session_state.messages存储历史聊天记录,每次调用模型时传入完整列表,实现上下文关联。

  2. 本地部署优势:依赖 Ollama 启动本地模型服务,数据不经过第三方,适合隐私敏感场景。

  3. 界面交互优化:使用st.chat_message区分用户和 AI 的消息样式,st.spinner提示加载状态,提升用户体验。

使用前准备

  1. 安装依赖:pip install streamlit ollama

  2. 下载模型:通过 Ollama 命令下载 qwen2.5:7b(如ollama pull qwen2.5:7b

  3. 启动服务:运行ollama serve启动本地服务

  4. 运行代码:streamlit run your_script_name.py

按照以上步骤,即可快速搭建属于自己的本地聊天机器人!

更多推荐