Gradio.Net 开发指南 -- Interface 类
目录Interface 类Gradio.Net 组件组件属性多个输入和输出组件图像示例示例输入描述性内容Accordion 中的附加输入总结Gradio.Net (https://github.com/feiyun0112/Gradio.Net)是一个开源的 .NET 库它是 Gradio 的 .NET 移植版本允许你为机器学习模型、API 或任何 C# 函数快速构建演示或 Web 应用程序无需任何 JavaScript、CSS 或 Web 开发经验Interface 类如快速入门中提到的gr.Interface类是 Gradio.Net 中的一个高级抽象让你可以通过简单地指定输入类型和输出类型快速为任何 C# 函数创建演示。让我们重新看一下我们的第一个演示using Gradio.Net; string Greet(string name, double intensity) { return 你好 name ! new string(!, (int)intensity - 1); } var demo gr.Interface( fn: Greet, inputs: new object[] { text, slider }, outputs: new[] { text } ); await demo.Launch();我们看到Interface类使用三个必需参数进行初始化‎fn要包装用户界面 (UI) 的函数‎inputs要使用哪个 Gradio.Net 组件作为输入。组件的数量应与函数中的参数数量匹配‎outputs要使用哪个 Gradio.Net 组件作为输出。组件的数量应与函数的返回值数量匹配在本指南中我们将深入了解gr.Interface以及它可以自定义的各种方式。但在此之前让我们更好地了解一下 Gradio.Net 组件。Gradio.Net 组件Gradio.Net 包含超过 30 个预构建组件可用作演示中的输入或输出。这些组件对应于机器学习和数据科学中的常见数据类型例如gr.Image组件用于处理输入或输出图像gr.Label组件显示分类标签和概率gr.LinePlot组件显示折线图等等。组件属性我们使用了gr.Textbox和gr.Slider的默认版本但如果你想改变 UI 组件的外观或行为怎么办假设你想自定义滑块使其值范围从 1 到 10默认值为 2。并且你想自定义输出文本框 - 你希望它更大并且有一个标签。如果你使用gr.Textbox和gr.Slider的实际类而不是字符串快捷方式你可以通过组件属性访问更多的自定义功能。using Gradio.Net; string Greet(string name, double intensity) { return 你好 name ! new string(!, (int)intensity); } var demo gr.Interface( fn: Greet, inputs: new object[] { text, gr.Slider(value: 2, minimum: 1, maximum: 10, step: 1) }, outputs: new[] { gr.Textbox(label: 问候语, lines: 3) } ); await demo.Launch();多个输入和输出组件假设你有一个更复杂的函数具有多个输入和输出。在下面的示例中我们定义一个函数它接受一个字符串、一个布尔值和一个数字并返回一个字符串和一个数字。using Gradio.Net; (string, decimal) Greet(string name, bool isMorning, decimal temperature) { string salutation isMorning ? 早上好 : 晚上好; string greeting ${salutation} {name}。今天的温度是 {temperature} 华氏度; decimal celsius Math.Round((temperature - 32) * 5 / 9, 2); return (greeting, celsius); } var demo gr.Interface( fn: Greet, inputs: new object[] { text, checkbox, gr.Slider(minimum: 0, maximum: 100) }, outputs: new object[] { text, number } ); await demo.Launch();正如inputs列表中的每个组件按顺序对应函数的一个参数一样outputs列表中的每个组件也按顺序对应函数返回的一个值。图像示例Gradio.Net 支持多种类型的组件例如Image、DataFrame、Video或Label。让我们尝试一个图像到图像的函数来感受一下这些using Gradio.Net; using SixLabors.ImageSharp; using SixLabors.ImageSharp.PixelFormats; string Sepia(string inputImg) { // 加载图像 using var image SixLabors.ImageSharp.Image.LoadRgb24(inputImg); // 应用 sepia 滤镜 for (int y 0; y image.Height; y) { for (int x 0; x image.Width; x) { var pixel image[x, y]; // Sepia 滤镜矩阵 int tr (int)(0.393 * pixel.R 0.769 * pixel.G 0.189 * pixel.B); int tg (int)(0.349 * pixel.R 0.686 * pixel.G 0.168 * pixel.B); int tb (int)(0.272 * pixel.R 0.534 * pixel.G 0.131 * pixel.B); // 确保值在有效范围内 pixel.R (byte)Math.Min(255, tr); pixel.G (byte)Math.Min(255, tg); pixel.B (byte)Math.Min(255, tb); image[x, y] pixel; } } // 保存处理后的图像 string outputPath Path.Combine(Path.GetTempPath(), $sepia_{Guid.NewGuid()}.png); image.Save(outputPath); return outputPath; } var demo gr.Interface( fn: Sepia, inputs: gr.Image(), outputs: image ); await demo.Launch();当使用Image组件作为输入时你的函数将接收图像文件的路径。在上面的例子中我们使用 ImageSharp 库来处理图像。我们返回处理后图像的文件路径。示例输入你可以提供示例数据用户可以轻松加载到Interface中。这有助于演示模型期望的输入类型并提供一种与模型一起探索数据集的方法。要加载示例数据你可以为 Interface 构造函数的examples参数提供一个嵌套列表。外部列表中的每个子列表代表一个数据样本子列表中的每个元素代表每个输入组件的一个输入。using Gradio.Net; decimal Calculator(decimal num1, string operation, decimal num2) { if (operation 加) { return num1 num2; } else if (operation 减) { return num1 - num2; } else if (operation 乘) { return num1 * num2; } else if (operation 除) { if (num2 0) { throw new Exception(不能除以零); } return num1 / num2; } return 0; } var demo gr.Interface( fn: Calculator, inputs: new object[] { number, gr.Radio(choices: new[] { 加, 减, 乘, 除 }), number }, outputs: number, examples: new object[] { new object[] { 45, 加, 3 }, new object[] { 3.14, 除, 2 }, new object[] { 144, 乘, 2.5 }, new object[] { 0, 减, 1.2 } }, title: 简易计算器, description: 这是一个示例计算器。 ); await demo.Launch();你可以将大型数据集加载到示例中以通过 Gradio.Net 浏览数据集并与之交互。描述性内容在前面的示例中你可能注意到Interface构造函数中的title和description参数它们帮助用户理解你的应用程序。Interface构造函数中有三个参数用于指定此内容应放置在何处‎title接受文本可以显示在界面的最顶部也会成为页面标题‎description接受文本、Markdown 或 HTML并将其放置在标题下方‎article也接受文本、Markdown 或 HTML并将其放置在界面下方另一个有用的参数是label它存在于每个Component中。这会修改每个Component顶部的标签文本。你还可以在表单元素如Textbox或Radio中添加info参数以提供有关其使用的更多信息。gr.Number(label: 年龄, info: 以年为单位必须大于 0)Accordion 中的附加输入如果你的预测函数接受许多输入你可能希望将其中一些隐藏在折叠的 accordion 中以避免使 UI 混乱。Interface类接受一个additionalInputs参数它类似于inputs但此处包含的任何输入组件默认情况下都不可见。用户必须点击 accordion 才能显示这些组件。附加输入按顺序传递到预测函数中在标准输入之后。你可以使用可选的additionalInputsAccordion参数自定义 accordion 的外观该参数接受一个字符串在这种情况下它成为 accordion 的标签或一个gr.Accordion()类的实例例如这可以让你控制 accordion 默认是打开还是关闭。这里是一个例子using Gradio.Net; (string, string) GenerateFakeImage(string prompt, int seed, string initialImage null) { return ($使用种子{seed}, https://dummyimage.com/300/09f.png); } var demo gr.Interface( fn: GenerateFakeImage, inputs: new object[] { textbox }, outputs: new object[] { textbox, image }, additionalInputs: new object[] { gr.Slider(minimum: 0, maximum: 1000), image } ); await demo.Launch();总结Interface类为任何 C# 函数快速创建演示提供了一种简单而强大的方法。通过正确的组件组合和配置你可以创建适合你的机器学习模型或数据处理函数的精美 Web 界面。下一篇引入地址

相关新闻

Gradio.Net 开发指南 -- Flag功能

Gradio.Net 开发指南 -- Flag功能

目录 Flag功能 基本使用 自定义标记目录 标记选项 图像示例 标记模式 总结 上一篇 Gradio.Net (https://github.com/feiyun0112/Gradio.Net)是一个开源的 .NET 库,它是 Gradio 的 .NET 移植版本,允许你为机器学习模型、API 或任何 C# 函数快速构…

2026/8/18 4:23:43 阅读更多 →
AI量化中医诊断:从多模态数据到可解释模型

AI量化中医诊断:从多模态数据到可解释模型

1. 项目背景与核心思路三年前我在北京同仁堂跟诊时,发现老中医把脉问诊的每个动作都暗含量化标准。比如"脉弦数"对应着每分钟90次以上的脉搏,"舌苔厚腻"意味着舌面覆盖物超过0.5mm。这个发现让我萌生了用AI建模中医诊断过程的想法。…

2026/8/16 3:24:18 阅读更多 →
视觉Transformer寄存器机制解析与工程实践

视觉Transformer寄存器机制解析与工程实践

1. 视觉Transformer中的寄存器现象解析在2023年9月发布的ICLR论文《Vision Transformers Need Registers》中,Meta AI研究团队揭示了一个被长期忽视的视觉Transformer(ViT)特性:模型会自发地将某些背景区域的token转化为"寄存…

2026/8/16 23:39:38 阅读更多 →

最新新闻

基于结构感知RAG的对话智能体:从嘈杂数据到精准问答的工程实践

基于结构感知RAG的对话智能体:从嘈杂数据到精准问答的工程实践

1. 项目概述:从嘈杂数据到结构化对话的跨越最近在折腾对话智能体项目时,遇到了一个经典难题:我们手头积累了大量非结构化的、质量参差不齐的文档、聊天记录和报告,也就是所谓的“嘈杂数据”。直接把这些数据扔给大语言模型&#x…

2026/8/18 4:23:31 阅读更多 →
EVE-NG虚拟环境中RSTP协议配置与实验指南

EVE-NG虚拟环境中RSTP协议配置与实验指南

1. EVE-NG与RSTP协议概述 EVE-NG(Emulated Virtual Environment - Next Generation)是目前网络工程师最常用的虚拟化网络实验平台之一。它允许用户在单台物理机上构建复杂的网络拓扑,运行包括Cisco、Juniper、华为等主流厂商的网络设备镜像。…

2026/8/18 4:23:31 阅读更多 →
金蝶控股纷享销客:SaaS生态整合下的CRM与ERP融合趋势

金蝶控股纷享销客:SaaS生态整合下的CRM与ERP融合趋势

1. 事件速览:一次典型的SaaS行业股权更迭如果你最近关注企业服务领域的动态,可能会注意到“纷享销客”这家公司发生了一次重要的工商变更。简单来说,就是它的股东结构变了:老牌企业软件巨头金蝶,正式成为了纷享销客的大…

2026/8/18 4:23:31 阅读更多 →
Embedding向量模型:从原理到RAG实战的语义相似度计算指南

Embedding向量模型:从原理到RAG实战的语义相似度计算指南

1. 项目概述:从“词”到“数”的智能桥梁 在人工智能,特别是自然语言处理领域,我们常常面临一个根本性的挑战:如何让计算机“理解”人类语言?计算机擅长处理数字和向量,而人类语言是离散的符号序列。Embedd…

2026/8/18 4:23:31 阅读更多 →
工业自动化模拟量指令:从硬件接线到软件滤波的实战指南

工业自动化模拟量指令:从硬件接线到软件滤波的实战指南

1. 从“开关”到“连续”:为什么模拟量指令是工业自动化的基石在工业控制领域,我们最常接触的是数字量信号,比如一个按钮的“按下”与“弹起”,一个继电器的“吸合”与“断开”,它们的状态非0即1,清晰明了。…

2026/8/18 4:22:31 阅读更多 →
LLM智能体多主体忠诚度:从冲突根源到工程化解决方案

LLM智能体多主体忠诚度:从冲突根源到工程化解决方案

1. 项目概述:当你的AI“代理人”开始“脚踩多条船”最近在搞大语言模型智能体(LLM Agents)落地的朋友,估计都遇到过一种让人后背发凉的场景:你精心调教的AI助手,在为你处理一项涉及多方利益的复杂任务时&am…

2026/8/18 4:22:31 阅读更多 →

日新闻

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 如果你还停留在"看网课 不停暂停 截图 …

2026/8/18 0:00:57 阅读更多 →
思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 你是不是也经历过这种时刻:设计稿里…

2026/8/18 0:00:58 阅读更多 →
华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, …

2026/8/18 0:00:59 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/17 2:58:27 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/17 2:58:30 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/17 2:58:32 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/17 18:54:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/17 18:55:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/17 18:55:55 阅读更多 →