Gradio ,一个实用的大模型界面
Gradio是HuggingFace的开源项目,GitHub 28k+ star。能够方便地构建AI应用的网页界面。
最大的优点是简便。对于不熟悉前端的程序员,能够迅速地构建基于web的AI应用。
Hello World
import gradio as gr
def print_text(text):return "Hello World, " + text
interface = gr.Interface(fn=print_text, inputs="text", outputs="text")
interface.launch()
gradio的核心是它的gr.Interface,用来构建可视化界面,其中的参数:
fn:放你用来处理的函数inputs:写你的输入类型,输入的是文本,所以是"text"outputs:写你的输出类型,输出的也是文本,所以也是"text"
最后我们用interface.lauch()把页面一发布,一个本地静态交互页面就完成了!
Gradio 提供了许多基础组件,用于构建交互式的机器学习模型演示。这些组件分为两大类:输入组件和输出组件。以下是一些常用的基础组件:
输入组件 (Inputs)
- Text: 文本输入框,用于输入文本数据。
- Textarea: 多行文本输入框,适用于较长的文本。
- Number: 数字输入框,用于输入数字。
- Slider: 滑动条,用于选择一个范围内的数字。
- Checkbox: 复选框,用于选择布尔值。
- Radio: 单选按钮,用于从多个选项中选择一个。
- Dropdown: 下拉菜单,用于从多个选项中选择一个。
- Image: 图像上传组件,用于上传和显示图像。
- File: 文件上传组件,用于上传文件。
- Audio: 音频上传组件,用于上传和播放音频文件。
- Video: 视频上传组件,用于上传和播放视频文件。
输出组件 (Outputs)
- Text: 文本输出框,用于显示文本数据。
- Label: 标签输出,用于显示分类标签和置信度。
- Image: 图像输出框,用于显示图像。
- Audio: 音频输出框,用于播放音频文件。
- Video: 视频输出框,用于播放视频文件。
- Dataframe: 数据帧输出框,用于显示表格数据。
- JSON: JSON输出框,用于显示JSON格式的数据。
- HTML: HTML输出框,用于显示HTML内容。
- Plot: 绘图输出框,用于显示图表和绘图。
访问千问大模型
from openai import OpenAIclient = OpenAI(# 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx",api_key="sk-27c202869xxxxxxxacba4a9300767e0d", base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
# 此处以qwen-plus为例,可按需更换模型名称。模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models
def gpt_chatbot(user_input):completion = client.chat.completions.create(model="qwen-long",messages=[{'role': 'system', 'content': 'You are a helpful assistant.'},{'role': 'user', 'content': '这是一个谈话的内容,请做一个简短内容总结。'}],)SummaryContent=completion.choices[0].message.contentreturn SummaryContentimport gradio as gr# Create Gradio interface
def chatbot_interface(user_input):return gpt_chatbot(user_input)iface = gr.Interface(fn=chatbot_interface, # The function that handles user inputinputs="text", # User types textoutputs="text", # GPT responds with texttitle="Qwen Chatbot",description="Ask me anything! I'm your AI assistant."
)iface.launch(share=False, inline=True, server_name='127.0.0.1', server_port=8000)
语音转换
import gradio as gr
from transformers import pipelinemodel_id = "sanchit-gandhi/whisper-small-dv" # update with your model id
pipe = pipeline("automatic-speech-recognition", model=model_id)
def transcribe_speech(filepath):output = pipe(filepath,max_new_tokens=256,generate_kwargs={"task": "transcribe","language": "sinhalese",}, # update with the language you've fine-tuned onchunk_length_s=30,batch_size=8,)return output["text"]
demo = gr.Blocks()mic_transcribe = gr.Interface(fn=transcribe_speech,inputs=gr.Audio(sources="microphone", type="filepath"),outputs=gr.components.Textbox(),
)file_transcribe = gr.Interface(fn=transcribe_speech,inputs=gr.Audio(sources="upload", type="filepath"),outputs=gr.components.Textbox(),
)
with demo:gr.TabbedInterface([mic_transcribe, file_transcribe],["Transcribe Microphone", "Transcribe Audio File"],)demo.launch(share=True)
相关文章:
Gradio ,一个实用的大模型界面
Gradio是HuggingFace的开源项目,GitHub 28k star。能够方便地构建AI应用的网页界面。 最大的优点是简便。对于不熟悉前端的程序员,能够迅速地构建基于web的AI应用。 Hello World import gradio as gr def print_text(text):return "Hello Wor…...
LeetCode 环形链表II:为什么双指针第二次会在环的入口相遇?
快慢指针 为什么相遇后让快指针回到起点,再让快指针和慢指针都一步一步地走,它们就会在环的入口相遇? 复杂度 时间复杂度: O(n) 空间复杂度: O(1) public ListNode detectCycle(ListNode head) {ListNode slow head, fast head;ListNode …...
如何处理PHP中的编码问题
如何处理PHP中的编码问题 在PHP开发过程中,编码问题是一个常见且棘手的问题。无论是处理用户输入、数据库交互,还是与外部API通信,编码问题都可能导致数据乱码、解析错误甚至安全漏洞。本文将深入探讨PHP中的编码问题,并提供一些…...
【动手学强化学习】part8-PPO(Proximal Policy Optimization)近端策略优化算法
阐述、总结【动手学强化学习】章节内容的学习情况,复现并理解代码。 文章目录 一、算法背景1.1 算法目标1.2 存在问题1.3 解决方法 二、PPO-截断算法2.1 必要说明2.2 伪代码算法流程简述 2.3 算法代码2.4 运行结果2.5 算法流程说明 三、疑问四、总结 一、算法背景 …...
游戏引擎学习第159天
回顾与今天的计划 我们在完成一款游戏的制作。这个游戏没有使用任何引擎或新库,而是从零开始编写的完整游戏代码库,您可以自行编译它,并且它是一个完整的游戏。更特别的是,这个游戏甚至没有使用显卡,所有的渲染工作都…...
前端主题切换架构设计方案
1. 架构概述 本文档从架构设计的角度阐述项目的主题切换方案,主要关注系统各层级间的关系、数据流转以及扩展性设计,而非具体实现细节。 架构图 +-------------------------------------------+ | 用户界面层 | | +--------------+ …...
request模块基本使用方法
文章目录 一、前言二、请求2.1 请求方式2.2 请求参数2.3 cookie 三、响应 一、前言 官方文档:https://requests.readthedocs.io/en/latest/ 模块安装:pip install request 二、请求 2.1 请求方式 常用请求方法:get、post 请求方法含义get向…...
内网攻防——红日靶场(一)
在学习内网的过程中有着诸多不了解的内容。希望能借下面的靶场来步入内网的大门。 一、准备阶段 首先准备好我们的虚拟机 之前有学过关于:工作组、域、DC的概念。 了解一下此时的网络拓扑图 1.设置网络VMnet1和Vmnet8 将VMnet1作为内网,VMnet8作为外…...
协议-LoRa-Lorawan
是什么? LoRa是低功耗广域网通信技术中的一种,是Semtech公司专有的一种基于扩频技术的超远距离无线传输技术。LoRaWAN是为LoRa远距离通信网络设计的一套通讯协议和系统架构。它是一种媒体访问控制(MAC)层协议。LoRa = PHY Layer LoRaWAN = MAC Layer功耗最低,传输最远 ![ …...
redis主从搭建
1. 哨兵 1.1 ⼈⼯恢复主节点故障 Redis 的主从复制模式下,⼀旦主节点由于故障不能提供服务,需要⼈⼯进⾏主从切换,同时⼤量 的客⼾端需要被通知切换到新的主节点上,对于上了⼀定规模的应⽤来说,这种⽅案是⽆法接受的&…...
std::inplace_merge解析
一 基本概念 std::inplace_merge 是 C++ 标准库<algorithm> 中的算法,用于将两个已排序的相邻范围 合并为一个有序范围,且原地操作(无需额外存储空间)。 二 函数原型 template< class BidirectionalIterator > void inplace_merge( Bidirection…...
【STM32】NVIC(嵌套向量中断控制器)
什么是 NVIC? NVIC(Nested Vectored Interrupt Controller,嵌套向量中断控制器) 适用于 Cortex-M0、M3、M4、M7 等 ARM 处理器,广泛用于 STM32、ESP32、GD32、NXP 等 MCU 中,它用于管理和控制中断…...
Linux中Gdb调试工具常用指令大全
1.gdb的安装 如果你是root用户直接用指令 :yum install gdb ;如果你是普通用户用指令:sudo yum install gdb; 2.gdb调试前可以对你的makefile文件进行编写: 下面展示为11.c文件编写的makefile文件: code…...
操作系统-八股
进程基础: 进程定义:运行中的程序,有独立的内存空间和地址,是系统进行资源调度和分配的基本单位。 并发,并行 并发就是单核上面轮询,并行就是同时执行(多核); 进程上下…...
ICLR2025 | SLMRec: 重新思考大语言模型在推荐系统中的价值
note 问题背景:序列推荐(SR)任务旨在预测用户可能的下一个交互项目。近年来,大型语言模型(LLMs)在SR系统中表现出色,但它们巨大的规模使得在实际平台中应用变得低效和不切实际。 研究动机&…...
3.14-进程间通信
进程间通信 IPC 进程间通信的原理,借助进程之间使用同一个内核,借助内核,传递数据。 进程间通信的方法 管道:最简单。信号:开销小。mmap映射:速度最快,非血缘关系之间。socket(本…...
71.HarmonyOS NEXT PicturePreviewImage组件深度剖析:从架构设计到核心代码实现
温馨提示:本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦! HarmonyOS NEXT PicturePreviewImage组件深度剖析:从架构设计到核心代码实现 (一) 文章目录 HarmonyOS NEXT PicturePreviewImage组件深…...
简单实现京东登录页面
Entry Component struct Index {State message: string ;build() { Column(){//顶部区域Row(){Image($r(app.media.jd_cancel)).width(20).height(20)Text(帮助)}.width(100%).justifyContent(FlexAlign.SpaceBetween)//logo图标Image($r(app.media.jd_logo)).width(250).heig…...
非零初始条件系统的传递函数分析
非零初始条件系统的传递函数分析 在传递函数的定义中,通常假设系统满足零初始条件。然而在实际应用中,很多系统需要处理非零初始状态。为了探讨这一问题,我们以一个一阶微分方程为例进行分析。 一、一阶系统的分析 考虑以下一阶微分方程&a…...
9.贪心算法
简单贪心 1.P10452 货仓选址 - 洛谷 #include<iostream> #include<algorithm> using namespace std;typedef long long LL; const int N 1e510; LL a[N]; LL n;int main() {cin>>n;for(int i 1;i < n;i)cin>>a[i];sort(a1,a1n);//排序 LL sum 0…...
代码随想录算法训练营第31天 | 56. 合并区间 738.单调递增的数字 968.监控二叉树
56. 合并区间 代码随想录 56. 合并区间 - 力扣(LeetCode) class Solution {public int[][] merge(int[][] intervals) {Arrays.sort(intervals,(a,b)->{if(a[0] b[0])return a[1] - b[1];return a[0] - b[0];});List<int[]> result new Arra…...
Bash语言的集合
Bash语言的集合:一个深入探讨 引言 Bash(Bourne Again SHell)是一种Unix Shell和命令语言,广泛应用于Linux及类Unix系统中。作为Linux 默认的命令行解释器,Bash 被数以万计的开发者和系统管理员使用,以其…...
大模型训练全流程深度解析
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。https://www.captainbed.cn/north 文章目录 1. 大模型训练概览1.1 训练流程总览1.2 关键技术指标 2. 数据准备2.1 数据收集与清洗2.2 数据…...
Pytorch实现之最小二乘梯度归一化设计
简介 简介:LSGAN提出了一种利用最小二乘法来计算两个数据分布之间的距离,该论文在此基础上采用梯度归一化来进一步稳定训练。 论文题目:LSN-GAN: A Novel Least Square Gradient Normalization for Generative Adversarial Networks(LSN-GAN:一种新的生成对抗网络的最小…...
每日一题---单词搜索(深搜)
单词搜索 给出一个二维字符数组和一个单词,判断单词是否在数组中出现, 单词由相邻单元格的字母连接而成,相邻单元指的是上下左右相邻。同一单元格的字母不能多次使用。 数据范围: 0 < 行长度 < 100 0 < 列长度 <…...
插入排序c++
插入排序的时间复杂度为O(N^2),和冒泡排序的时间复杂度相同,但是在某些情况下插入排序会更优。 插入排序的原理是:第1次在0~0范围内排序,第2次在0~1范围内排序,第3次在0~2范围内排序……相当于…...
Swagger 从 .NET 9 中删除:有哪些替代方案
微软已经放弃了对 .NET 9 中 Swagger UI 包 Swashbuckle 的支持。他们声称该项目“不再由社区所有者积极维护”并且“问题尚未得到解决”。 这意味着当您使用 .NET 9 模板创建 Web API 时,您将不再拥有 UI 来测试您的 API 端点。 我们将调查是否可以在 .NET 9 中使用…...
嵌入式八股ARM篇
前言 ARM篇主要介绍一下寄存器和中断机制,至于汇编这一块…还请大家感兴趣自行学习 1.寄存器 R0 - R3 R4 - R11 寄存器 R0 - R3一般用作函数传参 R4 - R11用来保存程序运算的中间结果或函数的局部变量 在函数调用过程中 注意在发生异常的时候 cortex-M0架构会自动将R0-R3压入…...
MyBatis 如何解析 XML 配置文件和 SQL 映射文件
MyBatis 使用 SAX(Simple API for XML)解析器来解析 XML 文件,SAX 是一种基于事件驱动的 XML 解析方式,具有高效、低内存消耗的优点。 MyBatis 主要解析两种类型的 XML 文件: 核心配置文件 (mybatis-config.xml): 定…...
使用DeepSeek和墨刀AI,写PRD文档、画原型图的思路、过程及方法
使用DeepSeek和墨刀AI,写PRD文档、画原型图的思路、过程及方法 现在PRD文档要如何写更高效、更清晰、更完整? 还是按以前的思路写PRD,就还是以前的样子。 现在AI这么强大,产品经理如何使用DeepSeek写PRD文档,产品经…...
