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

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

  • 一、环境准备
    • 1、streamlit安装
    • 2、langchain安装
    • 3、ollama的安装
  • 二、Ollama平台聊天机器人实现
    • 1、需求
    • 2、模型调用
    • 3、前端实现
      • 页面呈现
      • 代码实现
  • 三、详细代码地址
  • 四、参考资源

一、环境准备

1、streamlit安装

# 通过 pip 安装
pip install streamlit# 验证安装
streamlit hello

运行应用:

streamlit run main.py

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

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、模型调用

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

3、前端实现

页面呈现

访问地址
页面:
在这里插入图片描述

代码实现

"""
该模块用于充当聊天机器人的前端模块,
接收用户输入的问题,调用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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/315.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

EtpBot:安卓自动化脚本开发神器

EtpBot 是什么? EtpBot是一款专为安卓设备设计的自动化脚本开发工具,支持用户通过编写脚本实现自动化操作。该模块提供了丰富的API接口,涵盖点击、滑动、输入、截图等常见操作,帮助开发者快速构建自动化任务。ETPBot支持多设备并行…

AI|Java开发 IntelliJ IDEA中接入本地部署的deepseek方法

目录 连接本地部署的deepseek: IntelliJ IDEA中使用deepseek等AI: 用法一:让AI写代码 用法二:选中这段代码,右键,可以让其解释这段代码的含义。这时显示的解释是英文的。 连接本地部署的deepseek&#…

Python爬虫(33)Python爬虫高阶:动态页面破解与验证码OCR识别全流程实战

目录 一、技术背景与行业痛点二、核心技术与实现路径2.1 动态页面处理方案对比2.2 Selenium深度集成实践2.3 OCR验证码破解方案1. 预处理阶段:2. 识别阶段:3. 后处理阶段 三、典型应用场景解析3.1 电商价格监控系统1. 技术架构2. 实现效果 3.2 社交媒体舆…

智能IoT未来与边缘生态共建 | 2025 高通边缘智能创新应用大赛第六场公开课来袭!

系列公开课作为知识传递的重要窗口,持续为开发者群体输送前沿技术与实践经验。5月29日(周四)晚8点,2025高通边缘智能创新应用大赛第六场线上公开课即将开启! 本次课程以“探索智能IoT未来,共创边缘智能生态…

算法第26天 | 贪心算法、455.分发饼干、376. 摆动序列、 53. 最大子序和

弹性算法理论基础 想清楚 局部最优 是什么,如果可以推导出全局最优,那就是正确的贪心算法 455. 分发饼干 题目 思路与解法 class Solution:def findContentChildren(self, g: List[int], s: List[int]) -> int:res 0i 0j 0g.sort()s.sort()whi…

C语言—Linux环境下CMake设置库(动态/静态)

1. Yesterday Once More 由于昨日我们在VSCode设置了如何使用CMake构建与编译c语言项目,如有疑问,请看以下链接,今日根据昨天的配置来进一步完成项目的构建。 c语言- 如何构建CMake项目(Linux/VSCode)-CSDN博客 2. 动态…

【MC】红石比较器

在《我的世界》(Minecraft)中,红石比较器(Redstone Comparator) 是一种高级红石元件,主要用于 检测、比较或处理信号强度,同时还能与容器、特定方块互动。 红石比较器有两种模式: 比…

AI应用电商篇汇总(持续补充)

数据集: 1、天池大数据众智平台-阿里云天池 2、魔搭社区 3、https://huggingface.co/datasets 应用: 1、从电商角度设计大模型的 Prompt-CSDN博客 2、常见的LLM-CSDN博客 3、LLM模型的常见部署方式-CSDN博客 4、ollamaopen-webui搭建可视化大模型…

使用Jenkins部署nodejs前端项目

1. 安装node环境 1.1 下载 https://nodejs.org/zh-cn/download 1.2 解压到安装目录 tar -xJvf node-v22.15.1-linux-x64.tar.xz mv node-v22.15.1-linux-x64 /home/soft/ mv node-v22.15.1-linux-x64/ node22原本计划安装 node22和node18,但是CentOS7.9 GLIBCXX …

Power Integrations 汽车电源管理方案:为汽车应用增加系统价值

在新能源汽车产业蓬勃发展的当下,高效的电源管理方案成为提升汽车性能与可靠性的关键。近期,Power Integrations 举办线上交流会,介绍了基于其 1700V InnoSwitch3-AQ 反激式开关 IC 的五款全新参考设计,旨在为 800V 纯电动汽车提供…

前端mjs和js文件区别,mjs和cjs区别---.es.js和.mjs的区别

https://www.cnblogs.com/jocongmin/p/18432236 同一份配置如下,一般打包出来的结果时是一样的,只不过扩展名不一样 export default defineConfig({build: {rollupOptions: {output: [// 同一份配置,仅扩展名不同{ format: es, entryFileNames: [name].mjs },{ fo…

一文掌握vue3基础,适合自学入门案例丰富

Vue3 本文从Vue3的基础语法出发,全面系统的介绍了Vue3的核心概念与应用,旨在帮助自学者更轻松地掌握Vue3。文章内容由浅入深,从通过CDN引入Vue3开始,逐步介绍了组合式API、模块化开发、以及常见的Vue3指令和功能并从单个html的使…