分享好友 最新动态首页 最新动态分类 切换频道
Streamlit 构建大语言模型 (LLM) web 界面
2024-12-26 09:42

Streamlit 构建大语言模型 (LLM) web 界面

  1. 易用性:Streamlit 提供了一个直观且易于使用的环境,让数据科学家和机器学习工程师能够快速构建数据驱动的应用程序,而不需要专业的前端开发技能。对于大语言模型这类复杂模型,Streamlit 可以帮助开发者迅速搭建展示模型效果及交互界面的Web应用,方便用户输入查询、模型预测及结果展示。

  2. 实时互动:通过Streamlit,可以将大语言模型集成到Web应用中,实现实时交互式体验,用户可以直接在浏览器中与模型进行对话或提交请求,并立即得到模型生成的结果。

  3. 简化部署:Streamlit 应用可以通过一行命令部署到云端服务,大大降低了将大语言模型部署为Web服务的门槛,便于模型的分享和使用。

原理

  • 基于Python API:Streamlit 库基于Python编写,允许用户用Python脚本描述UI元素和数据处理逻辑。
  • 响应式设计:Streamlit 应用是动态生成的,每当用户交互或数据发生变化时,都会重新渲染整个页面,更新结果显示。
  • 集成模型调用:在Streamlit应用中,开发者可以方便地调用大语言模型API或本地模型来处理用户输入,然后将模型输出结果展示在网页上。

流程

  1. 安装Streamlit:首先确保Python环境中已安装Streamlit库。
  2. 创建应用脚本:编写Python脚本,定义UI组件(如文本输入框、按钮、文本显示区域等)。
  3. 集成大语言模型:在脚本中添加调用大语言模型的方法,通常是封装好模型预测API调用。
  4. 处理用户输入:监听用户在界面上的操作,如点击按钮或输入问题,触发模型调用。
  5. 展示模型输出:将模型返回的结果通过Streamlit的API显示在网页上。
  6. 运行应用:使用 命令启动应用,Streamlit会自动在本地开启一个Web服务器,并在浏览器中打开应用。

streamlit布局示例代码

以下展示了如何自定义你的 Streamlit 应用布局

 
  • 逐行解释

创建 Streamlit 应用时要做的第一件事就是将 库导入为

 

我们首先令页面的显示模式变为宽屏模式,页面内容将占据浏览器的全部宽度进行显示。

 

接下来,我们为这个 Streamlit 应用设置一个标题。

 

在应用标题下方创建一个标题名为 的可折叠区域。在展开时,我们可以看到其其中包含的额外细节。

 

通过在 和 之前加上 命令,我们将用于接收用户输入的组件放入侧边栏内。用户输入或选择的数值将被赋值并存储在 、 和 变量之中。

 

最后,我们使用 命令创建三列,分别名为 、 和 。然后我们使用独立的 语句将内容放入每列之中。其中我们创建了三个条件分支语句,根据用户是否在侧边栏中提供了输入来显示不同的文字。默认情况下显示的均为 语句下的内容。如果用户提供了对应的输入,则会显示在 标题下方。

 

值得注意的是,这里我们用 -字符串来将固定的信息与用户的输入数值相结合。

聊天机器人示例代码(简化版

 

在这个例子中,我们使用了Hugging Face Transformers库加载了GPT-2模型,并通过Streamlit创建了一个简单的文本输入框和按钮。当用户输入问题并点击“生成文本”按钮时,模型会生成对应的回复,并在页面上显示结果。

 

这段代码是一个基于Streamlit构建的与预训练大语言模型ChatGLM3-6B交互的简单演示应用。以下是代码逐段解析

  1. 导入所需库

    • : 用于从操作系统环境变量获取模型路径。
    • : 引入Streamlit库,用于构建Web应用程序界面。
    • : PyTorch深度学习框架,用于模型的加载和计算。
    • : Hugging Face Transformers库,提供了预训练模型和tokenizer的加载接口。
  2. 定义环境变量

    • 和 从环境变量获取,如果没有设置则使用默认值。
  3. 设置Streamlit页面配置

    • 设置页面标题、图标以及布局方式。
  4. 使用装饰器 缓存资源函数 ,以避免每次调用时都重新加载模型和tokenizer

    • 函数内部使用 和 加载预训练的tokenizer和模型,同时设定模型处于评估模式 ()。
  5. 初始化会话状态(session state

    • 存储聊天历史记录 和模型需要的过去关键值 。
  6. 创建侧边栏滑块控制最大生成长度 、采样策略中的 和温度参数 。

  7. 清理会话历史功能

    • 当用户点击清理按钮时,清空历史记录、过去关键值,并尝试释放GPU缓存,然后刷新页面。
  8. 展示聊天历史

    • 遍历 列表,分别按照用户消息和助手(模型生成)消息样式展示过去的聊天内容。
  9. 用户输入区域

    • 创建两个空白占位符,分别用于接收用户输入和展示模型生成的回答。
  10. 用户输入事件处理

    • 获取用户输入的文字内容 。
    • 将用户输入加入到聊天历史 中。
    • 调用模型的 方法,传入用户输入、历史记录、参数设置等,生成模型回复。
    • 将模型回复添加到聊天历史并更新会话状态中的历史记录和过去关键值。
最新文章
2024 AI 音樂生成器 10 款推薦,輕鬆生成音效、人聲或配樂歌曲
在所有 AI 音樂工具中,我們首推「威力導演」這個電腦軟體,它主打人人都能上手的「AI 音樂生成」工具,可以輕鬆製作無版權疑慮且可商用的音樂片段,省下大量時間心力!AI 音樂是指透過 AI 技術生成或編輯的音樂,可以透過輸入指令(prompt
5款B2B外贸建站必备的WordPress插件
WordPress是当今世界上最为流行和广泛使用的CMS系统。从网络红人博客到电子商务零售商。处处都有WordPress的身影。WordPress之所以如此受欢迎,是因为它具极强可塑性、且经常针对安全和漏洞进行更新,对SEO又非常友好。 虽说它需要一定学习
HUAWEI Pura 70 Pro
以上页面中的产品图片、视频及屏幕内容仅作示意,实物产品效果(包括但不限于外观、颜色、尺寸)和屏幕显示内容(包括但不限于背景、UI、配图、视频)可能略有差异,请以实物为准。以上页面中的数据为理论值,均来自华为内部实验室,于特定
360清理大师2018手机版v7.5.5 安卓版
360清理大师2018版介绍给自己的手机一个安静安全的环境就是要给自己的手机上安装下面的这款360清理大师安卓版,让你的手机隐私得到更加安全以及全方面的保护!360清理大师在游戏启动过程中、游戏开始后的帧数测试中保持领先地位,同时在Max
3D10月周一走势图近1000期
功能类福彩3D显示遗漏:显示/隐藏遗漏值,遗漏值是指自上期开出到本期间隔的期数。福彩3D遗漏分层:是将当前遗漏值用柱状图形标注。福彩3D分段线:是每五期使用分隔线,使横向导航更加清晰。福彩3D显示断区:在分区走势中使用,将开出0个号
AI助力跨学科主题学习设计——跨学科设计四象限图详解
例如,在组织一次跨学科主题学习活动时,教师可能需要同时涉及科学、语文、数学等多个学科的内容,这就要求他们深入研究各个学科的课程标准、教材知识,找出学科之间的关联点,从而构建一个完整且逻辑连贯的主题学习框架。此外,教师还需要
Linux学习之CentOS(十八)
在结束了第二期的广交会实习之后,又迎来了几天休闲的日子,继续学习Linux。在上一篇随笔 中,详细记录了与Linux文件和目录管理相关的一些重要命令,包括 目录与路径相关的命令(cd、pwd、mkdir、rmdir等)、管理文件与目录的命令(ls、cp、rm
APP SEO,揭秘如何提升APP在搜索引擎中的排名
APP也能进行SEO优化!通过优化APP的名称、描述、关键词、界面设计等,提高其在应用商店的可见度。提升内容质量、增加用户评价和活跃度,也有助于提升搜索排名。本文将揭秘APP优化与搜索排名提升的方法与策略。在移动互联网时代,APP已经成
etlpy: 并行爬虫和数据清洗工具(开源)
etlpy是python编写的网页数据抓取和清洗工具,核心文件etl.py不超过500行,具备如下特点爬虫和清洗逻辑基于xml定义,不需手工编写基于python生成器,流式处理,对内存无要求内置线程池,支持串行和并
相关文章
推荐文章
发表评论
0评