gradio是一个web ui框架主要用于验证大模型应用开发出来的效果咋样课程目标用 Gradio 将 Python 函数、机器学习模型或大模型 API 快速包装成可交互的 Web 页面方便验证效果、演示和临时分享。一、Gradio 是什么Gradio 是 Hugging Face 生态中的开源 Python 库。它将函数参数映射为输入组件将函数返回值映射为输出组件因此不需要编写前端代码也能快速完成 Demo。适用场景算法原型、模型效果验证、内部演示、API 调试。典型项目ChatGLM2-6B、gpt_academic、stable-diffusion-webui。核心关系Python 函数 输入组件 输出组件 可交互 Web 页面。二、为什么使用 Gradio模型、API 和普通 Python 函数都能直接获得图形化界面。设置shareTrue可生成临时公网地址课程中说明有效期约为 72 小时。非常适合快速验证不必先投入时间开发完整前端。三、快速入门文本反转import gradio as gr def reverse_text(text): return text[::-1] demo gr.Interface( fnreverse_text, inputs“text”, outputs“text” ) demo.launch(shareTrue)参数对应关系参数含义注意点fn要执行的 Python 函数不要写成函数调用结果inputs输入组件数量与顺序应对应函数形参outputs输出组件数量与顺序应对应返回值share是否生成公网链接应使用布尔值True不要写成字符串课堂中的问候函数示例import gradio as gr def hellotoPerson(name): return “你好” name demo gr.Interface( fnhellotoPerson, inputs“text”, outputs“text” ) demo.launch()四、多输出与界面信息配置下面的函数同时返回“反转后的文本”和“字符数”所以outputs需要配置两个组件。import gradio as gr def reverse_and_count(text): reversed_text text[::-1] length len(text) return reversed_text, length demo gr.Interface( fnreverse_and_count, inputs“text”, outputs[“text”, “number”], title“文本处理工具”, description“输入一段文字查看其倒序形式及字符数。”, examples[[“你好世界”], [“Hello World”]], flagging_mode“never” ) demo.launch()title页面标题。description功能说明。examples可点击并快速填充的示例。flagging_mode“never”关闭 Flag 标记功能。五、完整案例图片转铅笔画处理流程灰度化 → 像素取反 → 高斯模糊 → 再次取反 → 颜色减淡计算。import gradio as gr import numpy as np import cv2 def image_to_sketch(image): gray_image image.convert(“L”) inverted_image 255 - np.array(gray_image) blurred cv2.GaussianBlur(inverted_image, (21, 21), 0) inverted_blurred 255 - blurred pencil_sketch cv2.divide( np.array(gray_image), inverted_blurred, scale256.0 ) return pencil_sketch demo gr.Interface( fnimage_to_sketch, inputs[gr.Image(label“上传图片”, type“pil”)], outputs[gr.Image(label“输出图”)], title“图像转铅笔画”, description“将上传的图片转为铅笔画。” ) demo.launch()关键点type“pil”使回调函数接收到 PIL Image 对象label用于修改组件在页面中的显示名称。六、完整案例接入通义千问 qwen-max课程通过 DashScope 的 OpenAI 兼容接口调用qwen-max并兼容 Gradio 新旧两种历史消息结构。import gradio as gr import os from openai import OpenAI api_key os.getenv(“DASHSCOPE_API_KEY”) def call_qwen(message, history): # 未设置密钥时直接返回提示避免继续发起请求 if not api_key: return “错误未设置 DASHSCOPE_API_KEY 环境变量请设置后重试。” client OpenAI( api_keyapi_key, base_url“https://dashscope.aliyuncs.com/compatible-mode/v1” ) messages [] # 兼容新版字典格式和旧版二元组格式的聊天历史 if history: try: for msg in history: if ( isinstance(msg, dict) and “role” in msg and “content” in msg ): messages.append(msg) elif isinstance(msg, (list, tuple)) and len(msg) 2: user_msg, assistant_msg msg messages.append({ “role”: “user”, “content”: user_msg }) messages.append({ “role”: “assistant”, “content”: assistant_msg }) except Exception as e: print(f处理历史记录时出错{e}) messages.append({“role”: “user”, “content”: message}) try: response client.chat.completions.create( model“qwen-max”, messagesmessages, streamFalse ) return response.choices[0].message.content except Exception as e: return Error: str(e) demo gr.ChatInterface( fncall_qwen, title“通义千问-max”, description“基于通义千问 max 的聊天机器人”, examples[ [“你好”], [“你叫什么名字”], [“给我讲一个笑话呀”] ] ) ifname “main”: demo.launch(themegr.themes.Soft())聊天示例的执行流程从环境变量读取DASHSCOPE_API_KEY。把 Gradio 的历史消息转换为 OpenAI 接口要求的messages字典列表。追加用户当前输入。调用client.chat.completions.create()。返回response.choices[0].message.content交给聊天组件展示。七、容易出错的细节布尔值使用shareTrue不要写成share“True”。切片语法反转字符串是text[::-1]中间是两个冒号。组件类型图片案例使用gr.Image(type“pil”)否则函数接收的数据类型可能不同。消息格式聊天历史可能是字典列表也可能是二元组列表应分别处理。密钥安全API Key 只从环境变量读取不要硬编码到源码或上传仓库。版本差异Gradio 更新较快如参数报错应先核对本地版本和对应文档。公网链接shareTrue适合临时演示不替代正式生产部署。八、总结先写好处理函数再用 Interface 或 ChatInterface 描述输入与输出。Gradio 的价值在于把模型能力快速变成“可看、可点、可分享”的应用页面。
企业数字化 ERP 产品动态
相关推荐
14-02-对比-CSharp-dotNET-vs-Java-JVM数据结构对比 C#/.NET 与 Java/JVM 数据结构对比:从契约、布局到运行时比较基线:以 .NET 8 BCL/CoreCLR 与 Java 21 标准集合/HotSpot 为主要语义参照;不同 JVM、GC、AOT 与第三方集合库不在统一结论中
比较原则:语言语法、标准库公开契约、固定… · 2026/9/24 17:40:55
基于SpringBoot的药品仓库管理系统-附源码 联系博主 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 … · 2026/9/24 17:40:43
ben skills 代码开发规范
不要为了测试便利在主业务代码中加入测试专用的注入点、分支或参数;应优先在测试代码中通过 mock 依赖或替换模块实现测试,保持主业务代码的可读性和职责纯粹。
开发前端代码时默认不添加无障碍属性(role、aria-* 等)… · 2026/9/24 17:40:43
从零手写UserCF与ItemCF:协同过滤推荐算法实战与避坑指南 简介:这份资源用Python实现了基于物品与基于用户两种协同过滤推荐算法,面向推荐系统入门者、进阶学习者以及需要完成课程设计、大作业或毕设项目的同学,帮助理解协同过滤的核心思路与代码落地方式。压缩包共4个文件,包含2个py脚本… · 2026/9/24 18:16:21
远程3D渲染方案解读:从云GPU到自建算力池 2026年,我把工作室里那台高配渲染工作站拆了。显卡、主板、水冷,整整齐齐装进一个4U机箱,送到机房租来的标准机柜里上架。工位上只留下笔记本、一台校准过的显示器和数位板。日常的建模、材质调试、灯光预览全部通过远程3D渲染方案完成&#… · 2026/9/24 18:16:21
FineReport迁移实战:2026年国产化与JDK17兼容性应对指南 1. 项目概述:为什么2026年必须重新审视FineReport的替代路径FineReport用得越久,越容易陷入一种“稳定假象”——报表跑得稳、用户没投诉、运维没报警,但后台日志里悄悄堆积的JVM内存溢出警告、每年续费时财务部门皱起的眉头、新需求提单后开… · 2026/9/24 18:16:21
远程3D渲染全攻略:GPU算力云、远程桌面与硬件选型实战指南 远程3D渲染这个词,这几年被提得越来越频繁。2026年再看这件事,我觉得核心就一句话:把算力留在机房,人回家。过去做三维设计的人,基本被一台高性能工作站绑在工位上,机器在哪,人就得在哪。现在不… · 2026/9/24 18:16:21
2026远程渲染方案全解析:从GPU云服务器到云渲染农场的选型指南 前两年我一直觉得“远程渲染”是给影视后期大厂准备的,直到自己经历过一次半夜机房跑着灯光测试、人在高铁上改了两版贴图之后就真香了。2026年这个时间节点,远程3D渲染已经不是“能不能用”的问题,而是“怎么选最划算”的问题。所谓“算力留… · 2026/9/24 18:16:20
128QAM与64APSK的PAPR对比:从CCDF到功放回退的量化分析 简介:这份资源面向无线通信、信号处理方向的学习者与研究人员,聚焦128QAM、64APSK及多种QAM/APSK调制方式的峰均功率比(PAPR)对比分析,帮助理解高阶调制在频谱效率与功率效率之间的权衡。压缩包共19个文件,… · 2026/9/24 18:16:07
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程 简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13
1D-CNN时间序列建模实战:从Conv1d原理到工业落地 简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26
柔软的L:汉语语流中被忽视的舌肌张力控制 1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44