查看原文
其他

Streamlit+Gemini实战教程: 打造多模态AI对话应用 | 支持文本、音频、图片、PDF分析

思辨view kate人不错
2024-08-22

(注意:本文是知识星球的精选内容。如果你已经加入了知识星球“kate的AI星球”,无须重复支付。)

引言

我在8篇历史推文里用到了Streamlit写的代码,喜欢它的清爽页面,一个py文件就同时处理前端展示和后端逻辑。

Streamlit 简介

Streamlit 是一个开源的 Python 框架,专为构建高度交互的数据应用而设计。现在也有很多LLM应用在用它。

前几天介绍了FastHTML,有人问,FastHTML和Streamlit区别。

我整理了下:

  1. 用途:
  • 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 的主要特点:

    1. 直观的语法:无需 HTML、CSS 或 JavaScript 知识,使用纯 Python 代码即可构建应用。
    2. 丰富的组件:内置多种数据可视化和交互组件,如图表、表格、输入控件等。
    3. 易于集成:与 Pandas、NumPy、Altair 等常用数据科学库无缝对接。
    4. AI 友好:支持与各种 AI 工具和框架集成,如 LangChain、LlamaIndex 等。
    5. 快速迭代:支持热重载,修改代码后立即看到效果,加快开发速度。

    开始使用 Streamlit

    1. 安装 streamlit:

      pip install streamlit
    2. 创建你的第一个应用:创建一个名为 streamlit_app.py 的文件,并添加以下代码:

      import streamlit as st

      st.write("hello")
    3. 运行应用:在命令行中执行:

      streamlit run streamlit_app.py

    部署和分享

    Streamlit 应用可以通过多种方式部署:

    1. 本地运行:适合个人使用或小规模分享。
    2. 服务器部署:可以部署到任何支持 Python 的服务器上。
    3. Streamlit Community Cloud:免费的云托管服务,可以轻松分享你的应用。

    Streamlit 生态系统

    可以查看https://streamlit.io/gallery寻找灵感。

    下面这个文字生成图片的应用界面就很好看,而且它可以真实生成图片。

    https://generateimages.streamlit.app/

    Streamlit还有多个第三方组件,整个生态还是比较丰富的,也都有它对应的GitHub仓库。

    1. 语言模型 (LLMs)
    2. 小部件 (Widgets)
    3. 图表 (Charts)
    4. 认证 (Authentication)
    5. 连接 (Connections)
    6. 图像和视频 (Images & video)
    7. 音频 (Audio)
    8. 文本 (Text)
    9. 地图 (Maps)
    10. 数据框 (Dataframes)
    11. 图形 (Graphs)
    12. 分子和基因 (Molecules & genes)
    13. 代码编辑器 (Code editors)
    14. 页面导航 (Page navigation)
    15. 开发者工具 (Developer tools)
    16. 集成 (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对话。

    继续滑动看下一个
    kate人不错
    向上滑动看下一个

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存