Python结合ollama和stramlit开发聊天机器人

Python结合ollama和stramlit开发聊天机器人

一、环境准备

1、streamlit安装

bash 复制代码
# 通过 pip 安装
pip install streamlit

# 验证安装
streamlit hello

运行应用:

bash 复制代码
streamlit run main.py

如果运行不成功,可以带上Python版本运行

bash 复制代码
python3.13 -m streamlit run main.py

浏览器会自动打开 http://localhost:8501 显示应用。

2、langchain安装

参考下面的文章

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

3、ollama的安装

参考下面
文章
mac ollama install

二、Ollama平台聊天机器人实现

1、需求

构建一个基于大模型的本地智能聊天机器人。该聊天机器人将集成先进的大规模预训练语言模型(如GPT、Qwen等),具备自然语言理解、多轮对话、情感分析、知识问答等核心功能。

项目采用模块化设计,前端通过Streamlit框架实现简洁易用的交互界面,后端基于Ollama等平台进行模型部署和管理,确保系统的高效性和可扩展性。

2、模型调用

python 复制代码
import ollama

# 接收用户输入的提示词
def get_response(prompt):
    # 指定模型,传递角色 和提示词
    response = ollama.chat(
        model="qwen2:0.5b",
        messages=[
            {
                "role": "user",
                "content": prompt,
            },
        ],
    )
    return response.message.content

3、前端实现

页面呈现

访问地址

页面:

代码实现

python 复制代码
"""
该模块用于充当聊天机器人的前端模块,
接收用户输入的问题,调用chat_utils模块,获取回复,
通过streamlit模块,将回复并显示给用户
"""
# streamlit库:python 代码实现前端页面开发并部署
import streamlit as st

# 聊天机器人核心模块
# ConversationBufferMemory存储聊天机器人的会话记录
from langchain.memory import ConversationBufferMemory
import chat_utils

# 标题
st.title("zeoy's chat robot")


# 判断是否有历史聊天记录数据,如果没有就创建,并存储所有记录消息


# st.session_state存储会话状态,用于存储会话数据
if "history" not in st.session_state:
    # 创建一个conversationBufferMemory对象,用于存储会话记录
    st.session_state.memory = ConversationBufferMemory()
    # 添加聊天机器人的欢迎语句
    st.session_state.message = [
        {"role": "assistant", "content": "welcome to zeoy's chat robot."}
    ]
    
# 遍历session_state.message列表,
for message in st.session_state.message:
    #  聊天消息 显示当前角色内容
    with st.chat_message(message["role"]):
        st.markdown(message["content"])

# 接收用户录入的内容
promt = st.chat_input("请输入你要咨询的问题")

# 判断用户输入的内容是否为空
if promt:
    # 显示用户输入的内容
    st.session_state.message.append({'role': 'user', 'content': promt})

    st.chat_message('user').markdown(promt)
    # 获取机器人的回复
    response = chat_utils.get_response(promt)
    # 显示机器人的回复
    with st.chat_message("assistant"):
        st.markdown(response)
    # 将用户输入的内容和机器人的回复添加到session_state.message列表中
    st.session_state.message.append(
        {'role': 'assistant', 'content': response}
    )

三、详细代码地址

github:https://github.com/zeoyzhaogithub/AI-ChatBot

四、参考资源

官方文档: https://docs.streamlit.io/

示例库: https://streamlit.io/gallery

相关推荐
2601_966949659 分钟前
多市场量化策略的数据接口应该如何设计:从数据层架构到策略接入
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
坤坤子吖12 分钟前
C++智能指针:RAII、shared_ptr与内存泄漏
开发语言·c++·笔记·学习
全栈弄潮儿18 分钟前
Python实战第1期:Python环境搭建与第一个程序
python
鲁邦通物联网21 分钟前
绿色建筑场景下的机器人梯控设计:任务调度与运行优化方法
机器人·巡检机器人·机器人梯控·非侵入式采集·配送机器人·机器人乘梯·机器人自主乘梯
奋斗的阿狸_198622 分钟前
ESP32-S3 + ES7210 四通道麦克风录音上传方案
c语言·开发语言·fpga开发
心易行者23 分钟前
Agent应用+API端点商业化进阶实战:从单体智能体到可付费调用的API全流程
运维·服务器·人工智能·python·apache
weixin1997010801637 分钟前
《1688图片空间API踩坑:img.upload 与 album.* 的防盗链与CDN缓存问题》(附Python源码)
开发语言·python·缓存
微咣科技42 分钟前
2026 深圳工业机器人电池厂商巡礼:深圳市惠德技术科技,AGV 与移动装备定制锂电池供应商深度评析
科技·机器人
ACP广源盛139246256731 小时前
Type‑C 扩展坞方案选型笔记|国产 DP1.4 转 HDMI2.0 桥接芯片 GSV2201S @ACP评估
c语言·开发语言·笔记·硬件架构·硬件工程·国产芯片
布吉岛的石头1 小时前
Java 程序员第 49 阶段11:Java 接 BERT:用 ONNX Runtime 做句向量推理
java·人工智能·python·深度学习·bert·transformer