社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

【Python技术】Ollama+Qwen3+Streamlit构建AI聊天机器人

子晓聊技术 • 1 周前 • 16 次点击  

2025年4月29日阿里云发布的通义千问第三代大模型Qwen3,以“混合推理架构”和“超强性价比”引爆AI圈。其小模型仅需消费级显卡即可运行,性能却媲美前代大模型,成为开发者与中小企业低成本部署的首选。

本文将手把手教你:

  • 本地部署Qwen3-4B模型(无需GPU服务器)

  • 用Streamlit搭建交互式Web界面

  • 实现多轮对话、历史记录与参数调节
    (文末附完整代码与部署文档)


Qwen3发布背景:技术突破与开源生态

技术亮点

  • 混合推理模式:首创“思考模式”与“非思考模式”,复杂问题深度推导,简单问题秒级响应。

  • MoE架构效率革命:旗舰模型激活参数仅少量需求,推理成本大幅降低。

  • 小模型大能量:Qwen3-4B性能匹敌前代大模型,显存占用极低,消费级显卡即可运行。

开源生态布局

  • 全系列开源:覆盖多参数范围模型,允许免费商用与二次开发。

  • 开发者友好工具链:支持主流本地部署框架,降低技术门槛。


环境准备:快速搞定基础配置

安装Ollama(模型运行引擎)

# Mac/Linux一键安装 

 curl-fsSL https://ollama.com/install.sh |sh
# 拉取Qwen3-4B模型 
 ollama pull qwen3:4b  

Windows用户可直接下载安装包,双击运行后执行上述命令 。


安装Python依赖

pip install streamlit requests  


部署与运行:一键启动对话系统

启动Ollama服务

# 新终端窗口执行  ollama serve 

 

运行Streamlit应用

streamlit run app.py  

浏览器自动打开本地地址,即可体验对话功能


最后附上源代码,需要的自取。 备注:如果发现格式有多余的特殊字符,用普通浏览器打开复制应该没问题。


import streamlit as stimport requestsimport json# 初始化对话历史if "messages" not in st.session_state:    st.session_state.messages = []# 设置页面标题和图标st.set_page_config(page_title="Qwen3-4B Chat", page_icon="🤖")# 页面布局st.title("Qwen3-4B Chat with Ollama")st.caption("Powered by Streamlit + Qwen3-4B")# 显示历史消息for message in st.session_state.messages:    with st.chat_message(message["role"]):        st.markdown(message["content"])# 用户输入处理if prompt := st.chat_input("请输入您的问题..."):    # 添加用户消息到历史    st.session_state.messages.append({"role""user""content": prompt})    with st.chat_message("user"):        st.markdown(prompt)    # 调用Ollama接口    try:        # 构建API请求        ollama_url = "http://localhost:11434/api/chat"        payload = {            "model""qwen3:4b",            "messages": st.session_state.messages,            "stream"False  # 非流式响应        }        # 发送请求        response = requests.post(            ollama_url,            headers={"Content-Type""application/json"},            data=json.dumps(payload)        )        # 解析响应        if response.status_code == 200:            ai_response = response.json()["message"]["content"]            st.session_state.messages.append({"role""assistant""content": ai_response})            with st.chat_message("assistant"):                st.markdown(ai_response)        else:            st.error(f"API调用失败: {response.text}")    except requests.exceptions.ConnectionError:        st.error("无法连接到Ollama服务,请确认已运行 `ollama run qwen3:4b`")# 侧边栏操作with st.sidebar:    st.header("设置")    if st.button("清空对话历史"):        st.session_state.messages = []        st.rerun()
      


之前写的很多代码基于streamlit构建界面的,其实我最先用streamlit是构建AI大模型应用的。



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/181758
 
16 次点击