
一、项目整体介绍1. 项目是什么这是一个本地运行的AI聊天机器人不用联网调用第三方接口所有对话都在自己电脑上完成基于3个核心工具搭建StreamlitPython快速做网页的库不用写前端代码直接生成聊天界面Ollama本地部署大模型工具让电脑能运行开源AI模型Python核心编程语言整合界面和AI模型2. 项目文件结构一定要按这个建文件夹先在电脑上新建一个文件夹命名为local_chatbot里面建4个文件local_chatbot/ ├─ 01_streamlit基础语法.py # 入门学习Streamlit网页组件 ├─ 02_聊天相关组件介绍.py # 进阶学习聊天界面样式 ├─ chat_utils.py # 核心调用本地AI模型 └─ chat_main.py # 成品完整聊天机器人✅所有代码都写在对应文件里不要混写否则运行报错二、环境准备写代码前必须做第一步安装Python打开Python官网下载3.9及以上版本安装时一定要勾选「Add Python to PATH」最关键打开电脑终端Win按WinR输入cmdMac打开终端输入python --version显示版本号就说明安装成功。第二步安装依赖库在终端里逐行输入以下命令等待安装完成不要关闭终端# 安装网页框架 pip install streamlit # 安装本地模型调用工具 pip install ollama # 安装对话记忆工具 pip install langchain第三步下载本地AI模型继续在终端输入命令下载老师代码里用的模型必须下载否则代码无法运行ollama pull deepseek-r1:8b✅ 等待下载完成进度条100%新手不要换模型三、逐文件代码精讲操作步骤01_streamlit基础语法.py1. 代码写哪里新建01_streamlit基础语法.py文件把以下代码完整复制进去# 导入streamlit库简写为st import streamlit as st # —————————— 1. 网页标题 —————————— st.title(我的第一个Streamlit网页 ) # —————————— 2. 文本输出 —————————— st.write(这是一段普通文本) st.write(## 二级标题) st.write(### 三级标题) # —————————— 3. 输入框组件 —————————— # 文本输入框 name st.text_input(请输入你的名字) # 数字输入框 age st.number_input(请输入你的年龄, min_value0, max_value150) # 判断是否输入内容有则展示 if name and age: st.write(f你好 {name}你今年 {age} 岁啦) # —————————— 4. 表格/图片展示 —————————— # 字典转表格 my_dict {姓名: [张三, 李四], 年龄: [18, 20]} st.table(my_dict)2. 怎么运行打开终端进入项目文件夹比如文件夹在桌面输入cd Desktop/local_chatbot运行命令streamlit run 01_streamlit基础语法.py自动弹出浏览器网页就是你的第一个Python网页3. 核心知识点博客必写st.xxxStreamlit的所有功能都是这种格式叫组件st.write()万能输出工具能放文字、表格、图片运行后网页会自动刷新修改代码保存后网页实时更新02_聊天相关组件介绍.py1. 代码写哪里新建02_聊天相关组件介绍.py复制以下代码import streamlit as st # 网页标题 st.title(简易聊天界面 ) # —————————— 核心聊天输入框 —————————— prompt st.chat_input(请输入你想对我说的话) # 判断用户是否输入了内容 if prompt: # —————————— 1. 显示用户消息 —————————— # user代表用户消息样式在右侧 with st.chat_message(user): st.write(prompt) # —————————— 2. 显示AI回复消息 —————————— # assistant代表AI消息样式在左侧 with st.chat_message(assistant): st.write(你好呀我是你的AI助手 )2. 运行方式终端输入命令streamlit run 02_聊天相关组件介绍.py3. 核心知识点博客必写st.chat_input()聊天专用输入框固定在页面底部st.chat_message(user)用户消息样式st.chat_message(assistant)AI助手消息样式这是完整聊天机器人的简化版先学会界面再对接模型chat_utils.pyAI大脑1. 代码写哪里新建chat_utils.py复制以下代码模型调用核心不能改错# 导入ollama库用于调用本地大模型 import ollama def get_response(messages): 调用本地AI模型获取回复 :param messages: 聊天记录列表 [{role:user,content:问题}, ...] :return: AI回复的文本内容 # 调用本地模型model填写你下载的模型名 # messages[-20:]只保留最新20条对话防止模型卡顿 response ollama.chat( modeldeepseek-r1:8b, messagesmessages[-20:] ) # 返回AI的回复内容 return response[message][content] # —————————— 测试代码单独运行此文件检查模型是否正常 —————————— if __name__ __main__: # 测试问题 test_messages [{role: user, content: 你好}] # 打印AI回复 print(get_response(test_messages))2. 测试方式终端输入命令测试模型是否能正常回复python chat_utils.py✅ 出现文字回复说明模型配置成功3. 核心知识点博客必写ollama.chat()调用本地大模型的核心函数model必须和你下载的模型名完全一致messages[-20:]限制对话长度保证模型运行流畅这个文件是机器人的大脑负责思考和生成答案chat_main.py完整成品1. 代码写哪里新建chat_main.py复制以下代码最终成品最重要# 1. 导入所需库 import streamlit as st # 从chat_utils导入模型调用函数 from chat_utils import get_response # 2. 网页配置 st.title(本地AI聊天机器人 ) st.caption(基于Streamlit Ollama搭建所有对话本地运行) # —————————— 核心会话状态存储聊天记录 —————————— # 第一次运行时初始化聊天记录 if messages not in st.session_state: st.session_state.messages [ # AI欢迎语 {role: assistant, content: 你好我是你的本地AI助手有什么我可以帮助你的吗} ] # 3. 展示历史聊天记录每次输入都重新渲染 for msg in st.session_state.messages: with st.chat_message(msg[role]): st.write(msg[content]) # 4. 获取用户输入 user_input st.chat_input(请输入你的问题...) # 5. 用户输入内容后执行逻辑 if user_input: # —————————— 第一步把用户消息加入聊天记录 —————————— st.session_state.messages.append({role: user, content: user_input}) # 显示用户消息 with st.chat_message(user): st.write(user_input) # —————————— 第二步AI生成回复 —————————— with st.spinner(AI正在思考中...⏳): # 调用模型函数获取回复 ai_response get_response(st.session_state.messages) # —————————— 第三步把AI回复加入聊天记录并显示 —————————— st.session_state.messages.append({role: assistant, content: ai_response}) with st.chat_message(assistant): st.write(ai_response)2. 最终运行命令终端输入streamlit run chat_main.py✅ 自动打开聊天网页现在你可以和本地AI自由对话了3. 核心知识点博客必写st.session_stateStreamlit最重要功能保存聊天记录刷新不丢失对话流程用户输入 → 保存记录 → 调用模型 → 显示回复st.spinner()加载动画提升使用体验支持多轮对话AI能记住你之前说的话四、完整操作流程图解博客加分项新手操作顺序一步都不能错新建项目文件夹 → 建4个Python文件安装3个依赖库streamlit、ollama、langchain用ollama下载AI模型逐文件复制代码运行chat_main.py打开浏览器使用聊天机器人五、常见问题解决必写1. 运行报错找不到模型原因没有下载deepseek-r1:8b模型解决终端执行ollama pull deepseek-r1:8b2. 聊天记录刷新消失原因没用st.session_state保存数据解决严格按照老师代码不要删除st.session_state相关代码3. 模型回复很慢原因电脑配置较低解决换成小模型ollama pull qwen2:1.5b并修改chat_utils.py里的模型名六、博客总结这份代码是Python大模型应用入门的经典案例通过它可以学会用Streamlit快速做交互网页本地部署开源AI大模型