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

day08_基于Streamlit与Ollama部署简易问答机器人

写在前面

在经过之前的学习后,相信大家已经开发一些简单的Python程序了。本篇文章,我们将利用Python里的streamlit包开发前端页面,用Ollama作为后端服务,部署一个简单的问答机器人。综合应用一下之前学习的知识。

一、环境准备

  • python 3.10.9 往期文章链接
  • ollama 往期文章链接
  • streamlit
# 通过pip安装streamlit库 pip install streamlit

二、streamlit框架入门

我们通过做一个简单的用户注册页面,了解一下streamlit框架的几个简单的用法。

import streamlit as st # 标题——st.title() st.title('用户注册平台') # 分割线——st.divider() st.divider() # 文本输入框——st.text_input() username = st.text_input('用户名') password = st.text_input('密码') # 数字输入框——st.number_input() age = st.number_input('年龄', value=18) # 单选框——st.radio() gender = st.radio('性别', ('男', '女', '沃尔玛购物袋'), horizontal=True) # 日期输入框——st.date_input() birth = st.date_input('生日') # 滑块效果——st.slider height = st.slider('身高', min_value=100, max_value=300, value=175) # 按钮——st.button() button = st.button('确认') if button: # 仅做效果演示用,实际功能不写了 st.write('恭喜您,信息录入成功')

在python代码写好后,在pycharm的终端里运行命令 streamlit run 你的python脚本地址

成功后会跳转到浏览器,效果如下

三、网页问答机器人

该项目会涉及到两个python文件,一个负责调用本地部署的ollama,另一个负责前端页面的实现。

1.通过python中的ollama库便捷调用本地ollama服务部署的模型

首先通过pip install ollama安装ollama库

代码实现如下

import ollama # 1.初始化客户端 client = ollama.Client(host='localhost:11434') # 2.定义调用本地ollama的函数 def get_response(messages): result = client.chat( model='qwen2.5:0.5b', # 可以通过ollama list命令查看可用模型 messages=messages ) return result['message']['content'] if __name__ == '__main__': # 测试函数调用 messages = [ { 'role': 'system', 'content': '你是一个生活助手' }, { 'role': 'user', 'content': '你是谁' } ] print(get_response(messages))

2.使用streamlit实现前端效果

import streamlit as st from llm_tools import get_response # 导入自己的工具类功能 # 1.设置标题并添加分割线 st.title('聊天机器人') # 标题 st.divider() # 分割线 # 由于聊天是多轮的,需要使用到streamlit中的session_state保持状态,我们把多轮聊天的内容存储在session_state的messages中 # 2.streamlit在每次交互结束后,会重新执行代码,所以要先判断session_state中是不是已经有messages了,没有就创建 if "messages" not in st.session_state: # AI助手的第一条信息 st.session_state["messages"] = [{'role': 'assistant', 'content': '你好,有什么可以帮到你!'}] # 3.聊天窗口 # 每次渲染,把st.session_state['messages']里存储的所有对话都展示出来 for message in st.session_state["messages"]: # 在聊天窗口打印文本——st.chat_message(讲话的角色).write(内容) st.chat_message(message['role']).write(message['content']) # 用户输入的问题 user_input = st.chat_input() if user_input: # 在页面上打印用户输入的问题 st.chat_message('user').write(user_input) # 格式化为提示词 prompt = {'role': 'user', 'content': user_input} # 把用户问的问题存入对话历史中 st.session_state['messages'].append(prompt) # 调用我们写的工具让AI回答问题 with st.spinner('正在思考中...'): print(st.session_state.messages) res = get_response(st.session_state.messages) # 在页面上打印AI的回答 st.chat_message('assistant').write(res) # 将对话存入对话历史中 st.session_state['messages'].append({'role': 'assistant', 'content': res})

最终实现的效果如下

本篇总结

通过该项目的实践,我们可以发现,之前讲到的容器、函数、判断、循环等,其实是Python的“常识”。你没有办法去标识哪一些内容是重点,因为到了真正的开发中,这些知识的应用是十分普遍的。

在现在AI开发的时代,是降低了初级开发人员入行的门槛的,因此我们不一定需要能够完全独立敲出以上的代码。但是重点是,我们需要能够看懂并理解以上代码。

本篇文章也是在7天枯燥的理论知识学习后,再次通过一个实操项目,试图让大家维持住对AI的兴趣。毕竟我一直强调那句话——兴趣就是最好的老师。

后面还会进行一段时间的Python进阶内容讲解,以及部分Linux知识,这些都是为了AI应用的铺垫。磨刀不误砍柴工,道阻且长,各位一起努力吧!

http://www.jsqmd.com/news/567138/

相关文章:

  • 2026年TOP级低成本高转化!华创房产获客平台凭啥成行业首
  • 5个核心技巧:使用Basic Pitch实现专业级音频到MIDI转换的完整指南
  • 命令记不住,不要怕:请使用,《tldr》,一个
  • 深入解析双向循环神经网络(BiRNN):从原理到实战应用
  • 钧略AIGEO:以精准AI搜索优化 赋能企业数字化获客升级 - 企业推荐官【官方】
  • Phi-4-mini-reasoning实战教程:对接企业微信机器人自动解题服务
  • 告别bypy上传瓶颈:巧用百度云直链与Aria2实现服务器高速文件拉取
  • 智能天气时钟项目(一):ESP32 AT指令集详解与STM32驱动开发
  • 技术人的副业探索:从技术博客到独立开发者的可能性
  • Outstatic项目架构剖析:理解monorepo设计与模块化思想
  • 用PyTorch从零搭建C3D网络:手把手教你实现视频动作识别(附完整代码与UCF101数据集处理)
  • 学习---3
  • 如何快速安装webMAN-MOD:PS3全能插件终极指南
  • AI赋能构思与实现:在快马平台协同设计智能旅行推荐Agent Skill
  • 深入PSINS工具箱:手把手教你自定义卡尔曼滤波器状态与观测模型(以15状态为例)
  • 鲁班猫3网络连接问题解决记录(主机名直连)
  • 新手友好:基于快马平台快速上手dhnvr416h-hd设备数据监控开发
  • Intv_AI_MK11可视化设计工具链:从Visio流程图到AI可理解的需求文档
  • MySQL IF 和 IFNULL 用法详解
  • 抢抓AI发展红利,钧略AIGEO助力企业高效获客 - 企业推荐官【官方】
  • springboot+vue基于web的线上超市团购系统的设计与实现
  • AI安全:从技术加固到体系化防御的实战演进
  • 别再只查基因列表了!深度解析MSigDB中Hallmark基因集的生物学意义与科研应用场景
  • 实战react项目:基于快马ai快速构建包含图表与导航的用户数据仪表盘
  • 字符串(字符数组) 速览功能
  • 优先选择钧略AI:携手合作伙伴,共拓AI搜索优化新未来 - 企业推荐官【官方】
  • PDF转Markdown神器MinerU 2.5:支持多栏、表格、公式,效果实测
  • OpCore-Simplify:从3天到15分钟的黑苹果配置革命
  • springboot+vue基于web的咖啡点单程序设计
  • 实战应用:基于编译原理,利用快马AI构建你的首个代码压缩工具