Streamlit+Gemini实战教程: 打造多模态AI对话应用 | 支持文本、音频、图片、PDF分析
(注意:本文是知识星球的精选内容。如果你已经加入了知识星球“kate的AI星球”,无须重复支付。)
引言
我在8篇历史推文里用到了Streamlit写的代码,喜欢它的清爽页面,一个py文件就同时处理前端展示和后端逻辑。
Streamlit 简介
Streamlit 是一个开源的 Python 框架,专为构建高度交互的数据应用而设计。现在也有很多LLM应用在用它。
前几天介绍了FastHTML,有人问,FastHTML和Streamlit区别。
我整理了下:
用途:
Streamlit主要设计用于创建数据科学和机器学习应用。 FastHTML旨在成为一个通用的全栈Web编程系统。
Streamlit非常适合快速原型和小规模数据应用,但对于复杂的生产级应用可能有限制。 FastHTML设计为可从简单的6行Python文件扩展到复杂的生产应用。
Streamlit使用自己的自定义框架和抽象。 FastHTML建立在Web标准(HTML、HTTP、CSS、JS)之上,并使用ASGI、HTMX和其他已建立的技术。
Streamlit有一种使用自己的小部件和布局系统构建应用的特定方式。 FastHTML允许更大的灵活性,让开发者使用他们现有的Web开发知识。
两者都使用Python,但FastHTML旨在最小化对JavaScript的需求,允许大多数功能在Python中实现。
Streamlit对数据科学家来说初始学习曲线非常低。 FastHTML可能需要更多的Web开发知识,但旨在对有经验的开发者和新手都易于使用。
FastHTML似乎更具可扩展性,允许集成各种CSS框架、JavaScript库和Python模块。
对于AI零基础编程爱好者来说,Streamlit是非常好的一个工具。而且页面设计很好看。
Streamlit 的主要特点:
直观的语法:无需 HTML、CSS 或 JavaScript 知识,使用纯 Python 代码即可构建应用。 丰富的组件:内置多种数据可视化和交互组件,如图表、表格、输入控件等。 易于集成:与 Pandas、NumPy、Altair 等常用数据科学库无缝对接。 AI 友好:支持与各种 AI 工具和框架集成,如 LangChain、LlamaIndex 等。 快速迭代:支持热重载,修改代码后立即看到效果,加快开发速度。
开始使用 Streamlit
安装 streamlit:
pip install streamlit
创建你的第一个应用:创建一个名为
streamlit_app.py
的文件,并添加以下代码:import streamlit as st
st.write("hello")运行应用:在命令行中执行:
streamlit run streamlit_app.py
部署和分享
Streamlit 应用可以通过多种方式部署:
本地运行:适合个人使用或小规模分享。 服务器部署:可以部署到任何支持 Python 的服务器上。 Streamlit Community Cloud:免费的云托管服务,可以轻松分享你的应用。
Streamlit 生态系统
可以查看https://streamlit.io/gallery寻找灵感。
下面这个文字生成图片的应用界面就很好看,而且它可以真实生成图片。
https://generateimages.streamlit.app/
Streamlit还有多个第三方组件,整个生态还是比较丰富的,也都有它对应的GitHub仓库。
语言模型 (LLMs) 小部件 (Widgets) 图表 (Charts) 认证 (Authentication) 连接 (Connections) 图像和视频 (Images & video) 音频 (Audio) 文本 (Text) 地图 (Maps) 数据框 (Dataframes) 图形 (Graphs) 分子和基因 (Molecules & genes) 代码编辑器 (Code editors) 页面导航 (Page navigation) 开发者工具 (Developer tools) 集成 (Integrations)
比如最近比较火的streamlit-authenticator
也推荐下面2个仓库
streamlit-shadcn-ui
https://github.com/ObservedObserver/streamlit-shadcn-ui
streamlit-extras
https://github.com/arnaudmiribel/streamlit-extras
构建Gemini对话应用:实战过程
初步尝试和遇到的问题
我想要做一个和Gemini对话的Streamlit应用,让AI编程,进行了以下尝试:
使用Streamlit官网对话功能,结果出错。
https://docs.streamlit.io/
和Llamalndex Streamlit应用对话,结果错误。
https://llamaindex-chat-with-docs.streamlit.app/
使用GPT里很多人使用的GPTs,结果错误。
那如何能快速写出和Gemini对话的Streamlit应用呢?
我将分享如何开发,并提供完整的代码。
支持文字、音频、图片、PDF文件和Gemini对话。