Streamlit搭建AI应用2026:30分钟做个AI聊天网站
Streamlit是一个开源的Python框架,让你用几行代码就能搭建交互式Web应用。当它与AI大模型结合时,你可以在30分钟内搭建出一个功能完整的AI聊天网站、数据分析仪表盘或者图片生成工具——完全不需要学习HTML、CSS或JavaScript。
说实话,Streamlit AI应用相关的教程网上很多,但大多数要么太浅要么太深。这篇文章我尽量做到”看完就能用”,每个步骤都配有详细说明。我自己用Streamlit做了十几个AI小工具,从个人使用到给朋友用再到商业化,积累了大量实战经验。
如果你还想了解更多AI编程工具,可以看看我们的AI工具合集2026,对整个AI开发生态有个全局了解。
Streamlit AI应用是什么
Streamlit是2019年诞生的Python Web框架,专注于让数据科学家和AI开发者快速构建交互式应用。它的核心理念是”纯Python写Web应用”——你只需要会写Python,就能做出漂亮的Web界面。

Streamlit与AI结合后,产生了巨大的化学反应。你可以用几十行代码就实现:
- AI聊天机器人:接入ChatGPT、Claude等大模型API,做一个私有的聊天网站
- AI图片工具:对接DALL-E、Midjourney等图片生成API
- AI文档分析器:上传PDF/Word文档,AI自动分析和总结
- AI数据仪表盘:用自然语言查询数据,AI生成可视化图表
- AI写作助手:搭建一个团队内部的AI写作平台
Streamlit的核心优势在于:
- 零前端知识:不需要HTML/CSS/JS,纯Python搞定一切
- 即时预览:保存代码后自动刷新浏览器,所见即所得
- 丰富的组件:按钮、滑块、文本框、图表等开箱即用
- 一键部署:Streamlit Community Cloud免费托管你的应用
- 社区活跃:大量现成的组件和模板可以直接使用
注册和安装
第一步:安装Python环境
- 确保你的电脑已安装Python 3.8以上版本(推荐3.10+)
2. 打开终端(Mac/Linux)或命令提示符(Windows)
3. 运行命令检查Python版本:python --version
4. 如果没有安装,去python.org下载最新版
💡 提示:建议使用虚拟环境(venv或conda)来隔离项目依赖,避免不同项目之间的包版本冲突。创建虚拟环境命令:
python -m venv myenv,激活命令:source myenv/bin/activate(Mac/Linux)或myenv\Scripts\activate(Windows)。
第二步:安装Streamlit和依赖
- 在虚拟环境中安装Streamlit:
pip install streamlit - 安装AI相关的Python库:
pip install openai或pip install anthropic - 验证安装:
streamlit hello,会自动打开一个示例应用 - 如果看到浏览器中出现了Streamlit的欢迎页面,说明安装成功
第三步:创建你的第一个AI应用
- 新建一个Python文件:
app.py - 写入以下代码:
import streamlit as st
from openai import OpenAI
st.title("我的AI聊天助手")
client = OpenAI(api_key="你的API密钥")
if "messages" not in st.session_state:
st.session_state.messages = []
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)
with st.chat_message("assistant"):
response = client.chat.completions.create(
model="gpt-4o",
messages=st.session_state.messages
)
reply = response.choices[0].message.content
st.markdown(reply)
st.session_state.messages.append({"role": "assistant", "content": reply})
- 运行应用:
streamlit run app.py - 浏览器会自动打开你的AI聊天应用
第四步:部署到线上
当你想让别人也能访问你的应用时:
- 注册Streamlit Community Cloud账号(https://share.streamlit.io)
- 将代码上传到GitHub仓库
- 在Community Cloud中点击”New app”
- 选择你的GitHub仓库和app.py文件
- 配置环境变量(如API密钥)
- 点击Deploy,等待几分钟后你的应用就上线了
Streamlit与其他AI应用框架对比
| 对比维度 | Streamlit | Gradio | Flask/FastAPI | Next.js + API |
|---------|-----------|--------|---------------|---------------|
| 学习曲线 | ⭐ 极低 | ⭐ 极低 | ⭐⭐⭐ 中等 | ⭐⭐⭐⭐⭐ 高 |
| 前端知识需求 | 不需要 | 不需要 | 需要少量 | 需要精通 |
| 界面美观度 | ⭐⭐⭐⭐ 好 | ⭐⭐⭐ 一般 | ⭐⭐ 需自行设计 | ⭐⭐⭐⭐⭐ 完全自由 |
| 开发速度 | 极快(分钟级) | 极快(分钟级) | 中等(小时级) | 慢(天级) |
| 交互复杂度 | 中等 | 简单 | 高 | 极高 |
| 适合场景 | AI工具/数据看板 | AI模型演示 | API服务/后端 | 生产级Web应用 |
| 部署难度 | 一键部署 | HuggingFace一键 | 需自行配置 | 需完整CI/CD |
| 性能 | 中等 | 中等 | 高 | 高 |
| 社区生态 | 丰富 | 丰富 | 非常丰富 | 非常丰富 |
| 免费托管 | Community Cloud | HuggingFace Spaces | 无 | 无 |
| 自定义程度 | 中等 | 低 | 高 | 极高 |
| 多页面支持 | ✅ 原生支持 | ❌ 有限 | 需自行实现 | ✅ 原生支持 |
我的建议:如果你只是快速验证AI想法或做个人/小团队工具,Streamlit是最佳选择。如果需要展示AI模型的推理过程,Gradio更合适。如果要做正式的商业产品,最终还是需要Flask/FastAPI或Next.js。
核心功能详解
功能一:AI聊天界面
Streamlit提供了st.chat_message和st.chat_input两个专门用于聊天界面的组件。这两个组件组合起来就能实现类似ChatGPT的对话界面,支持Markdown渲染、代码高亮、表格显示等。
实测体验:我用这两个组件加OpenAI API,20分钟就做出了一个功能完整的AI聊天网站,界面美观度不输一些商业产品。关键是流式输出(streaming)的支持,让AI的回答可以逐字显示,用户体验非常好。
功能二:文件上传与处理
通过st.file_uploader组件,用户可以上传文件到你的AI应用。结合大模型的文件理解能力,你可以做出:
- PDF/Word文档分析器:上传文件后AI自动总结要点
- 图片理解工具:上传图片让AI描述内容
- 代码审查助手:上传代码文件让AI检查问题
- 数据分析平台:上传CSV文件用自然语言查询数据
功能三:侧边栏和参数调节
st.sidebar让你可以在页面左侧创建一个控制面板,用户可以调节AI参数:
- 模型选择(GPT-4o、Claude、DeepSeek等)
- 温度(Temperature)调节:控制输出的创造性
- 最大Token数:控制回复长度
- 系统提示词编辑:自定义AI的角色和行为
功能四:数据可视化
Streamlit原生支持Matplotlib、Plotly、Altair等图表库。结合AI的数据分析能力,你可以做出”用自然语言生成图表”的应用。比如用户输入”画一个2024年各月销售额的柱状图”,AI生成对应的Python绘图代码并直接显示图表。
功能五:多页面应用
Streamlit支持多页面应用,你可以在pages/目录下创建多个Python文件,每个文件对应一个页面。比如:
- 首页:应用介绍和导航
- 聊天页:AI对话功能
- 分析页:数据分析工具
- 设置页:用户偏好配置
实战项目:构建AI多功能工作台
下面我分享一个完整的实战项目——用Streamlit搭建一个AI多功能工作台,包含聊天、文档分析、图片理解三个功能。
项目结构:
ai-workbench/
├── app.py # 主入口
├── pages/
│ ├── 1_chat.py # AI聊天页
│ ├── 2_doc_analysis.py # 文档分析页
│ └── 3_image_qa.py # 图片理解页
├── requirements.txt # 依赖列表
└── .streamlit/
└── config.toml # 配置主题
第一步:主页面设计
主页面使用st.navigation创建导航菜单,展示各功能模块的简介和使用方法。使用st.columns布局展示功能卡片,每个卡片包含图标、标题和简短描述。
第二步:聊天页面实现
使用st.chat_message和st.chat_input构建对话界面,侧边栏提供模型选择和参数调节,支持流式输出和历史记录保存。
第三步:文档分析页面
使用st.file_uploader支持PDF和Word文件上传,将文件内容提取后发送给AI进行总结,结果以Markdown格式渲染显示,支持下载分析报告。
第四步:图片理解页面
使用st.file_uploader支持图片上传,将图片转换为base64编码后发送给多模态AI模型,支持用户附加问题(如”这张图片里有什么?”),AI的回答和图片并排显示。
第五步:部署上线 将所有代码推送到GitHub,在Streamlit Community Cloud上一键部署。配置好API密钥等环境变量,分享给朋友使用。
整个项目从开始到部署上线,我只花了大约2个小时。这就是Streamlit的威力——让你把精力集中在业务逻辑上,而不是前端开发和运维上。想了解更多AI开发技能,可以看看Python AI入门。
10个高效使用技巧
1. 使用st.session_state管理状态
Streamlit每次交互都会重新运行整个脚本,所以必须用st.session_state来保存状态。聊天历史、用户设置、中间结果等都需要存在session_state中,否则每次交互都会丢失。
2. 善用st.cache_data缓存
AI API调用通常比较慢且贵。使用@st.cache_data装饰器可以缓存函数结果,避免重复调用。比如缓存文档解析结果、AI的历史回答等。缓存可以设置TTL(过期时间),保证数据的时效性。
3. 流式输出提升用户体验
AI回答通常需要几秒钟才能完成,如果让用户干等着体验很差。使用OpenAI的stream=True参数配合st.write_stream()可以实现逐字显示,用户体验接近ChatGPT官方界面。
4. 使用st.spinner显示加载状态
在调用AI API时加上with st.spinner("AI正在思考..."):,会显示一个加载动画。这个小细节能显著提升用户体验,让用户知道应用正在工作而不是卡住了。
5. 用st.tabs组织内容
当页面内容较多时,使用st.tabs将内容分组到不同的标签页中。比如一个标签页显示AI的原始回答,另一个显示结构化分析,第三个显示相关参考资料。
6. 错误处理要完善 AI API调用可能因为网络问题、配额限制、模型故障等原因失败。一定要用try-except包裹API调用,并在失败时给用户友好的错误提示,而不是让应用直接崩溃。
7. 添加使用限制 如果你公开部署了AI应用,一定要添加使用限制(如每天每人最多20次对话)。否则你的API账单可能会被滥用导致破产。可以用Streamlit的session_state结合IP地址来做简单的限流。
8. 自定义主题和样式
Streamlit支持自定义主题颜色和字体。在.streamlit/config.toml中设置[theme]部分,可以定义主色调、背景色、字体等。你甚至可以用st.markdown注入自定义CSS来实现更个性化的界面。
9. 使用st.columns做响应式布局
st.columns让你将页面分为多列,实现更紧凑的布局。比如在聊天页面,左边显示对话历史,右边显示相关上下文信息。在数据页面,多列并排显示不同的图表。
10. 善用Streamlit组件库 除了内置组件,Streamlit还有大量第三方组件:streamlit-chat(更丰富的聊天组件)、streamlit-extras(各种实用小工具)、streamlit-option-menu(漂亮的导航菜单)等。善用这些组件能让你的应用更专业。
Streamlit组件深入详解
Streamlit之所以能让Python开发者快速构建Web应用,关键在于它提供了丰富且易用的交互组件。下面我详细介绍几个最常用的组件及其在AI应用中的用法:
st.text_input和st.text_area:文本输入组件,分别用于单行和多行文本输入。在AI应用中,text_area常用于让用户输入较长的提示词或待分析的文本。你可以设置placeholder提示文字、最大长度限制、默认值等参数。结合session_state可以记住用户之前输入的内容。
st.selectbox和st.multiselect:下拉选择和多项选择组件。在AI应用中非常适合用来选择模型、选择分析维度、选择输出格式等。比如让用户在GPT-4o、Claude、DeepSeek之间选择模型,或者选择想要分析的数据维度。
st.slider和st.number_input:滑块和数字输入组件。在AI参数调节中非常实用,比如用slider调节Temperature(0-2之间)、Top-P值,用number_input设置最大Token数。用户可以直观地看到参数变化对AI输出的影响。
st.file_uploader:文件上传组件,支持指定文件类型(如只允许上传PDF和图片)。在AI文档分析和图片理解应用中是核心组件。上传的文件会返回一个BytesIO对象,你可以用相应的库(如PyPDF2、PIL)来解析文件内容。
st.progress和st.status:进度条和状态显示组件。当AI处理时间较长时,显示进度条可以大幅提升用户体验。配合spinner使用效果更佳,让用户清楚知道当前处理到了哪一步。
常见问题与解决方案
问题1:应用运行后页面空白
表现:streamlit run app.py后浏览器打开但什么都不显示。
解决方案:
- 检查终端是否有错误信息输出
- 确认代码中没有语法错误
- 检查是否在虚拟环境中安装了所有依赖
- 尝试清除浏览器缓存后刷新
- 检查端口是否被占用:
streamlit run app.py --server.port 8502
问题2:API密钥暴露不安全
表现:把API密钥硬编码在代码中,推送到GitHub后被泄露。
解决方案:
- 使用
st.secrets管理敏感信息,创建.streamlit/secrets.toml文件 - 将secrets.toml添加到
.gitignore中 - 在Streamlit Cloud中通过设置页面配置环境变量
- 代码中使用
st.secrets["OPENAI_API_KEY"]读取密钥 - 如果密钥已经泄露,立即在API提供商处撤销并重新生成
问题3:AI回复速度太慢
表现:用户发送消息后需要等很长时间才能看到回复。
解决方案:
- 实现流式输出(streaming),让用户能逐字看到回复
- 选择更快的模型(如GPT-4o-mini比GPT-4o快很多)
- 减少system prompt的长度
- 限制最大token数,避免AI生成过长的回复
- 使用缓存避免重复请求
问题4:部署后应用经常休眠
表现:Streamlit Community Cloud上的应用过一段时间后就无法访问,需要等待”唤醒”。
解决方案:
- 这是Community Cloud的免费限制,不活跃的应用会自动休眠
- 可以使用cron-job.org等服务定时访问你的应用保持活跃
- 升级到付费托管服务(如AWS、GCP、Railway等)
- 或者接受休眠机制,用户等待10-30秒即可唤醒
问题5:多用户同时使用时状态混乱
表现:用户A看到了用户B的聊天记录。
解决方案:
- Streamlit的session_state是每个用户独立的,正常情况下不会混乱
- 确保没有使用全局变量来存储用户数据
- 所有用户相关的数据都通过
st.session_state管理 - 数据库操作使用连接池,每个会话独立连接
进阶技巧
技巧1:接入多个AI模型
你可以在一个Streamlit应用中接入多个AI模型,让用户自由选择。侧边栏放一个模型选择器,根据选择初始化不同的API客户端。比如同时支持OpenAI、Claude、DeepSeek和国产模型Kimi,用户可以根据需求选择最合适的模型。想了解各模型的特点,可以看看DeepSeek使用指南和Kimi K2教程。
技巧2:RAG增强AI应用
给你的Streamlit应用加上RAG(检索增强生成)功能,让AI能够参考你的私有文档来回答问题。使用LangChain + ChromaDB搭建一个简单的向量数据库,用户上传文档后自动建立索引,AI回答时自动检索相关内容作为参考。
技巧3:添加用户认证
使用streamlit-authenticator组件给你的应用添加登录功能。支持用户名密码、Google OAuth等多种认证方式。这样你可以控制谁有权限使用你的AI应用,也可以追踪每个用户的使用量。
技巧4:数据持久化
使用SQLite或PostgreSQL数据库保存用户对话历史、使用统计等数据。这样用户下次访问时可以看到之前的对话记录,你也可以分析用户的使用习惯来优化应用。
技巧5:商业化你的Streamlit应用
当你的AI应用做得足够好时,可以考虑商业化:
- 添加付费计划(使用Stripe集成)
- 部署到专业云服务(AWS/GCP)保证稳定性
- 添加用户管理系统和数据分析
- 做好SEO和社交媒体推广 想了解AI商业化变现的更多方式,推荐阅读AI副业合集。
推荐阅读
- 构建专业AI数据应用:2026年Streamlit高级仪表板教程:构建专业AI数据应用
- Gradio搭建AI应用:Gradio搭建AI应用2026:快速部署机器学习Demo
- Dify AI平台使用:Dify AI平台使用教程:从零搭建你的第一个AI应用(2026最新版)
- 免费AI聊天机器人横评:2026年免费AI聊天机器人横评:谁才是国产最强