当前位置: 首页 > news >正文

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.xdnf.cn/news/587701.html

相关文章:

  • 栈和队列总结
  • ISO 26262-5 生产维护和报废
  • 前端性能优化的秘密武器:Preload 与 Prefetch 的深度解析
  • fatal error: uuid/uuid.h: No such file or directory 编译问题修复。
  • VS Code中Maven未能正确读取`settings.xml`中配置的新路径
  • 将MCP(ModelContextProtocol)与Semantic Kernel集成(调用github)
  • [密码学实战]使用C语言实现TCP服务端(二十九)
  • SAR ADC 的常见架构
  • 广州能源所重大突破:闪蒸焦耳加热助力粉煤灰 / 赤泥中关键金属低碳回收
  • Netty学习专栏(一):Java NIO编程与核心组件详解
  • Android View的事件分发机制
  • docker容器暴露端口的作用
  • kafka在线增加分区副本数
  • RK3588 RGA 测试
  • 工商业预付费系统组成架构及系统特点介绍
  • 【MySQL成神之路】MySQL插入、删除、更新操作汇总
  • Unity Shader入门(更新中)
  • python安装与使用
  • Java的列表、集合、数组的添加一个元素各自用的什么方法?
  • 【论文阅读】——AN EXPRESSIVE REPRESENTATION OF GENERAL 3D SHAPES
  • Linux环境基础开发工具->vim
  • 实现FAT12文件管理
  • 线性回归模型的参数估计
  • AutoMapper .net Framework 的 Model转换扩展方法
  • python学习 day5
  • 部署人工智能Qlib量化投资平台
  • 你通俗易懂的理解——线程、多线程与线程池
  • 架构实践中,指标体系如何科学建立?构建指标体系的五层结构模型是什么?不同架构风格下的指标体系有怎样的差异?
  • 腾讯2025年校招笔试真题手撕(二)
  • 欧拉降幂(JAVA)蓝桥杯乘积幂次