Gradio 智能体 & MCP 黑客马拉松

获奖者
Gradio logo

更新日志

5.34.2

新功能

  • #11418 e398c51 - 全屏图表占据完整高度。感谢 @aliabid94!

5.34.1

修复

  • #11408 9082647 - 使获取 asyncio 事件循环的方法更加健壮。感谢 @abidlabs!
  • #11400 8bb7776 - 解决 gr.Progress 示例缓存问题。感谢 @abidlabs!
  • #11399 4757302 - 关于文档字符串和文档的杂项修复。感谢 @abidlabs!
  • #11387 8245afc - 在前端定义根 URL。感谢 @aliabid94!
  • #11397 5a7790d - 添加从字节检测音频格式功能。感谢 @yahiro-code!

5.34.0

新功能

  • #11393 43ece52 - 能够在 gradio cc publish 中指定 repo-id。感谢 @freddyaboulton!

修复

  • #11386 92aa905 - 如果 show_progress="hidden",则从 gr.Chatbot 隐藏待处理消息指示器(“...”)。感谢 @abidlabs!
  • #11378 3ec4a7c - 在 Chatbot 中添加 Model3D 支持。感谢 @dawoodkhan82!
  • #11349 bed858b - 修复 DataFrame 滚动分歧。感谢 @deckar01!
  • #11381 0e6fae0 - 修复 gr.ImageSlider 中的透明背景问题。感谢 @hannahblair!
  • #11346 3a9a002 - 向屏幕阅读器隐藏原生 Dataframe。感谢 @hannahblair!
  • #11382 5ff539e - 修复 @gr.render 中的缓存示例。感谢 @abidlabs!

5.33.2

新功能

  • #11372 7282c9e - 图表重新渲染修复。感谢 @aliabid94!
  • #11380 0b2b6cb - 截断文本框示例至 70 个字符。感谢 @hannahblair!
  • #11369 6aed692 - 在 colab 中运行 gradio 时的小错误。感谢 @abidlabs!

修复

  • #11363 5e3ec9c - 重新设计 gr.Datetime 组件并确保其在 iframe 中(例如在 Spaces 上)正常工作。感谢 @abidlabs!
  • #11368 3f53679 - 修复聊天机器人不支持的组件。感谢 @dawoodkhan82!
  • #11364 467de5d - 在 @gr.render 上调用加载事件。感谢 @freddyaboulton!
  • #11362 1b88339 - 修复图库缩略图溢出。感谢 @freddyaboulton!
  • #11379 546008c - 修复开发重载中硬编码的 HTTP 协议。感谢 @mtojek!

5.33.1

新功能

  • #11360 1eb4e2e - 在 MCP 工具调用中注入 Request 信息。感谢 @abidlabs!
  • #11237 a6f6b40 - 增强 gr.Dataframe 中的布尔单元格类型。感谢 @hannahblair!

修复

  • #11350 9af8fc1 - 能够在 FastAPI 应用中挂载时启动 MCP 服务器。感谢 @freddyaboulton!
  • #11344 b961441 - 修复默认标签页标签。感谢 @dawoodkhan82!
  • #11348 250ae7a - fix(mcp): 将 SVG 输出打包为 MCP 客户端的正确 ImageContent。感谢 @DavidLMS!
  • #11325 2b571e1 - 修复图像流 - 等待 ws 打开。感谢 @freddyaboulton!
  • #11347 fdce3a0 - 修复 gr.api() 以支持更多类型,包括可选参数。感谢 @abidlabs!
  • #11338 b31c3ed - 修复使用 gr.render 时的重载模式。感谢 @freddyaboulton!

5.33.0

新功能

  • #11306 6cd608d - 改进重新渲染中的图表和事件监听器。感谢 @aliabid94!
  • #11287 7b06b61 - 当示例被缓存时,为 gr.Interface 预加载第一个示例。感谢 @abidlabs!
  • #11328 ff39d56 - 更新 mcp 模式以包含函数的返回类型信息。感谢 @abidlabs!
  • #11320 d6649e5 - 修复 JS Chatbot 的文档标题。感谢 @aymeric-roucher!

修复

  • #11327 5770fd0 - 抑制 create_or_modify_pyi 中的错误。感谢 @freddyaboulton!
  • #11318 3e40af3 - 修复标签页中文本框自动滚动问题。感谢 @dawoodkhan82!
  • #11326 477730e - 修复流式聊天机器人差异逻辑。感谢 @freddyaboulton!

5.32.1

修复

  • #11304 bdbc210 - 修复自定义组件的构建和开发模式与某些基本组件(至少是 Image 和 Audio)的问题。感谢 @pngwn!
  • #11307 bc299f1 - 当用户在聊天机器人中向上滚动时显示滚动到底部按钮。感谢 @dawoodkhan82!
  • #11282 9a6a6f5 - 修复 DataFrame 组闪烁。感谢 @deckar01!

5.32.0

新功能

  • #11283 6ec91bf - 为 mcp 在空间名称和工具名称之间添加 _。感谢 @abidlabs!
  • #11289 1b6bd1e - 在 MCP 文档中包含默认值。感谢 @abidlabs!
  • #11300 6780f69 - MCP 服务器的可流式 HTTP 传输。感谢 @freddyaboulton!
  • #11247 0a26311 - 在 Gradio MCP 服务器中使用函数名作为工具名。感谢 @abidlabs!

修复

  • #11286 5bfc57e - 修复 ChatInterface 视图 API 页面中的参数名称。感谢 @freddyaboulton!
  • #11270 636be09 - gr.Sidebar 的一些前端/UI 修复。感谢 @abidlabs!
  • #11279 8ae434c - 确保错误文本按预期溢出。感谢 @hannahblair!
  • #11272 8177b01 - 修复流式传输一块音频或视频时无法播放的错误。感谢 @freddyaboulton!
  • #11215 2186ae3 - 允许 httpx_kwargs 包含 cookies。感谢 @santibreo!
  • #11271 ab25fb9 - 确保渲染时 i18n 设置完成。感谢 @hannahblair!
  • #11262 56d82d7 - 为 gr.Number 添加缺失的 blur 事件。感谢 @ExcellentAmericanEagle!
  • #11243 35afa21 - 仅当有效的 endpoint_info 存在时才显示参数警告。感谢 @hannahblair!
  • #11285 c16dff0 - 允许 gr.Progress 接受小数步长和小数总步数。感谢 @abidlabs!
  • #11278 ac2bcea - 在移动设备上为滑块输入添加间隙。感谢 @hannahblair!
  • #11273 f54f81b - 修复视频流中只有第一个片段播放音频的错误。感谢 @freddyaboulton!

5.31.0

新功能

  • #11229 231ccfe - 聊天机器人自动滚动修复。感谢 @dawoodkhan82!
  • #11224 834e92c - 修复将值设置为 None 时使用 key 重新渲染的问题。感谢 @aliabid94!
  • #10832 d457438 - 屏幕录制。感谢 @dawoodkhan82!

修复

  • #11236 3a7750c - 为 gr.Markdown 添加 padding 参数。感谢 @hannahblair!
  • #11238 13c8510 - 修复 DeepLink 查询参数。感谢 @freddyaboulton!
  • #11228 0b7f753 - 改进滑块对齐。感谢 @hannahblair!
  • #11227 4099700 - 即使 preprocess=False 也检查文件有效性。感谢 @freddyaboulton!
  • #11230 62a8d97 - 修复 Model3D camera_position 参数。感谢 @dawoodkhan82!
  • #11231 78a3854 - 修复 MCP 服务器挂载路径。感谢 @abidlabs!
  • #11244 ed97e39 - 确保 show_indices 在 gr.JSON 中按预期工作。感谢 @hannahblair!
  • #11232 8ea7ce7 - 为具有 gr.State 组件的端点提供 MCP 集成的一个变通方案。感谢 @abidlabs!
  • #11246 bfb9bcf - 从 API 页面移除 Deep Link 事件。感谢 @freddyaboulton!

5.30.0

新功能

  • #11177 3068196 - 改进的、更流畅的组件全屏模式。感谢 @aliabid94!
  • #11155 30a1d9e - MCP 页面改进。感谢 @abidlabs!
  • #11192 a03736f - 为 ImageEditor 组件添加撤销和重做功能。感谢 @pngwn!
  • #11047 6d4b8a7 - 实现自定义 i18n。感谢 @hannahblair!

修复

  • #11221 5f3e84d - 确保清除排序按预期工作。感谢 @hannahblair!
  • #11117 9b976b7 - 如果视频无法在浏览器中播放,则引发 UI 错误。感谢 @freddyaboulton!
  • #11222 b2a93e1 - 将 xethub 桥添加到主机白名单。感谢 @abidlabs!
  • #11202 53688a2 - 修复 Deep Link 问题。感谢 @freddyaboulton!
  • #11206 c196ac2 - 渲染 key 修复。感谢 @aliabid94!
  • #11218 2f1c9d5 - 对于 Interface,默认禁用 DeepLink,然后在首次提交后启用。感谢 @freddyaboulton!

5.29.1

新功能

  • #11185 e64b83b - 在参数描述中评估索引变量。感谢 @emmanuel-ferdman!
  • #11173 d023b2e - 添加了之前网站中缺失的 gr.api() 文档。感谢 @abidlabs!
  • #11159 cb9f21b - chore: 支持 favicon 的 Path 类型。感谢 @wdroz!
  • #11183 ab0fbb3 - 绘图笔刷阻止图表刷新。感谢 @aliabid94!
  • #11156 a1d436f - 在 native_plot.py 中延迟导入 pandas。感谢 @whitphx!
  • #11129 d5ddd85 - 海洋主题快速修复。感谢 @aliabid94!

修复

  • #11174 f11a26a - 删除 gr.File 中关于 file_count 为目录时指定 file_types 的警告。感谢 @freddyaboulton!
  • #11189 88f06c7 - 确保 visible=False 的标签页不会出现在溢出菜单中。感谢 @abidlabs!
  • #11181 ee7f17e - 修复 gr.Dataset 在表格布局中的 .select() 事件。感谢 @abidlabs!
  • #11180 0595238 - 重构 gr.Stategr.BrowserStategr.Timer 以继承自 FormComponent。感谢 @abidlabs!
  • #11195 0571f83 - 修复在重载模式下以字典形式返回组件时无法工作的问题。感谢 @freddyaboulton!
  • #11179 caf46c7 - 修复 .unrender()。感谢 @abidlabs!
  • #11147 bc0d0e0 - 修复 JS 客户端中的“删除”差异指令。感谢 @freddyaboulton!
  • #11186 470a41f - #11056 避免在 ImageEditor::preprocess 中从 blob_storage 缓存中未经检查的弹出。感谢 @doraeneko!
  • #11171 85cfa82 - 修复传递 gradio 组件时 save_history 不起作用的问题。感谢 @dawoodkhan82!
  • #11184 f1a1c50 - 为 JSON 添加示例组件。感谢 @freddyaboulton!
  • #11196 1bc680d - 修复 /file= 路由中的 500 错误。感谢 @freddyaboulton!
  • #11151 0497068 - 修复 gr.State 值的内置函数。感谢 @freddyaboulton!
  • #11158 56ab579 - gr.Chatbot: 样式修复以移除多个滚动条。感谢 @aymeric-roucher!
  • #11172 b618571 - 修复 Python 客户端 SSE 解码问题。感谢 @freddyaboulton!

5.29.0

新功能

  • #11103 098fb29 - 为 Gradio 应用添加 openapi.json 路由,并在“查看 API”页面上添加文档。感谢 @abidlabs!

修复

  • #11102 8cd4e53 - 修复文件上传进度。感谢 @freddyaboulton!
  • #11098 49ad594 - 修复 #10281: 拖动图像会替换现有图像而不是打开新标签页。感谢 @Martim-Rito!
  • #11113 c32f8de - 修复 markdown 更改事件。感谢 @freddyaboulton!
  • #11115 49e7a0d - 更新 STDIO 说明以指定仅 SSE 传输。感谢 @evalstate!
  • #11111 15d6297 - 修复 gradio cc environment。感谢 @freddyaboulton!
  • #11112 0e5a75e - 修复将 datetime.datetime 实例传递给 gr.Datetime 的问题。感谢 @freddyaboulton!
  • #11119 bb2c744 - 替换 MCP 工具名称中的无效字符。感谢 @abidlabs!

5.28.0

新功能

  • #10984 8dab577 - 让 Gradio 应用也成为 MCP 服务器。感谢 @abidlabs!

修复

  • #11097 bb5a3c5 - 修复 #10320: 聊天机器人 - 确保组中的所有消息都可编辑。感谢 @eduardopalricas33!

5.27.1

修复

  • #11093 cb322df - 更新 client.py 以始终发送文件数据,即使是无扩展名的文件。感谢 @edmcman!
  • #11091 e3d80e3 - 修复 Image 组件中设置高度时的缩放问题。感谢 @freddyaboulton!
  • #11088 a5105cc - 修复:确保所有翻译文件按预期工作。感谢 @Col0ring!

5.27.0

新功能

  • #11027 eff532b - 添加新的 ImageSlider 组件。感谢 @pngwn!

修复

  • #11049 8d2aa3e - 确保翻译按预期工作。感谢 @hannahblair!

5.26.0

新功能

  • #11043 62a0080 - 将 Gradio 应用程序的任何可见错误模态框传递给加载它的应用程序。感谢 @abidlabs!

修复

  • #11038 fd46e48 - 能够从组件分派信息消息。感谢 @freddyaboulton!
  • #11070 0355ef6 - 确保在将图像上传到 ImageEditor 后可以进行绘制。感谢 @pngwn!
  • #11039 aaba2c6 - 修复聊天界面图标错误。感谢 @freddyaboulton!
  • #11057 bb1b74c - 图像编辑器清除事件。感谢 @freddyaboulton!
  • #11033 0dbc14f - 允许在 gr.Dataframedisplay_value 中设置空值。感谢 @abidlabs!
  • #11040 3d3c701 - 即使是非流式聊天功能,也要在 gr.ChatInterface 中显示停止按钮。感谢 @abidlabs!
  • #11052 2750d48 - 修复在 Blocks 中创建界面时 Spaces 中的重复 ID 问题。感谢 @freddyaboulton!

5.25.2

修复

  • #11021 c57a7ff - 确保在多页 Gradio 应用中登录和登出被重定向到正确的页面。感谢 @abidlabs!
  • #11025 d24f8fd - 修复通知消息中的 ssr_mode 参数名称。感谢 @oxkitsune!
  • #11020 a4a3a03 - 修复 gr.ChatInterface 中点击示例时的流式传输/停止按钮。感谢 @abidlabs!

5.25.1

新功能

  • #11014 7f92d5f - 更新文档以反映 1 周超时。感谢 @abidlabs!

修复

  • #11017 734b309 - 在流请求中包含 HF 令牌。感谢 @nostalgebraist!
  • #11018 3615a45 - 在 Sagemaker 笔记本中自动创建分享链接。感谢 @abidlabs!
  • #11010 9219e62 - 修复: 当 allow_tags=True 时为 markdown 添加 svg 标签。感谢 @Col0ring!
  • #11005 3def0ed - 确保 gr.DataFrame 中的 .select() 事件带有 .row_value.col_value。感谢 @abidlabs!

5.25.0

新功能

  • #10980 370b3e2 - 为聊天机器人交互添加 i18n。感谢 @freddyaboulton!
  • #10970 bb45441 - 修复:gr.Audio 接受签名 URL。感谢 @jerpint!
  • #10982 a80b312 - 为代码组件语言添加 latex。感谢 @ginazhouhuiwu!
  • #10981 0db230f - 允许用户更改图像编辑器中图层的可见性。感谢 @pngwn!

修复

  • #10993 1918baa - 更新 babylon.js 并确保 Model3D 组件在加载时自动播放。感谢 @CedricGuillemet!
  • #10968 238702a - 修复默认元社交标签 + 添加覆盖现有元标签的功能。感谢 @dawoodkhan82!
  • #10999 8c70819 - 为 ImageEditor 实现下载按钮。感谢 @pngwn!
  • #10997 45d5840 - 当为 ImageEditor 提供自定义图层时,始终默认为第一个图层。感谢 @pngwn!
  • #10979 975feee - 改进 ImageEditor 的网络摄像头选项。感谢 @pngwn!
  • #10995 fc59815 - 确保图像编辑器背景尊重主题模式。感谢 @pngwn!
  • #10994 714015a - 确保上传到 ImageEditor 的图像正确初始化画布尺寸。感谢 @pngwn!

5.24.0

新功能

  • #10933 b768651 - 为 Block Label 添加 rtl。感谢 @hannahblair!
  • #10924 be46b94 - 为 gr.HighlightedText 添加 rtl。感谢 @hannahblair!
  • #10635 2f68c9d - 重构并重新设计 ImageEditor 组件。感谢 @pngwn!
  • #10923 8a62c7e - 为 gr.Radio 添加 rtl。感谢 @hannahblair!
  • #10927 5b3414a - 更改 FRPC 二进制文件的下载位置。感谢 @abidlabs!
  • #10935 6754d82 - 放宽 aiofiles 版本。感谢 @freddyaboulton!

修复

  • #10955 d654e60 - 将搜索过滤的行索引映射到 gr.Dataframe 中的原始数据索引。感谢 @hannahblair!
  • #10918 36da6d0 - 修复 gr.Dataframe 中的值同步问题。感谢 @hannahblair!
  • #10953 ede7428 - 修复 gr.NativePlot 默认行为中标签的排序。感谢 @Rafalex04!
  • #10925 c37de0f - 微调 gr.MultimodalTextbox 中的 rtl UI。感谢 @hannahblair!
  • #10962 c851862 - 在 gr.ChatInterface 中取消渲染用户提供的文本框,以便其作为 gr.Blocks 应用程序的一部分正确渲染。感谢 @abidlabs!
  • #10928 f09f543 - 颠倒聊天历史中的对话顺序并使用自定义聊天机器人正确渲染。感谢 @abidlabs!

5.23.3

新功能

  • #10845 2521e8a - 检查当前运行时 SharedWorker 是否可用,如果不可用则回退到 DedicatedWorker。感谢 @whitphx!
  • #10926 d81385b - 为 MetadataDict 添加状态文档。感谢 @aliabd!
  • #10847 d5fde7c - model3D 的 Babylon 更新。感谢 @CedricGuillemet!
  • #10890 01b88c7 - 改进 JS 客户端中的 API 错误处理。感谢 @l2dy!

修复

  • #10913 2322700 - 更新 i18n 文件。感谢 @freddyaboulton!
  • #10922 afe0b13 - 修复聊天机器人想法不可折叠的回归问题。感谢 @abidlabs!
  • #10901 64a6ead - 修复 gr.Image 全屏模式下的 EventData 缩放。感谢 @tiago-gsantos!
  • #10921 c8d6ddd - 重构 get_request_url。感谢 @abidlabs!

5.23.2

新功能

  • #10908 09a8d0c - 锁定 pydantic 版本。感谢 @abidlabs!
  • #10897 1e8cdee - 修复 route_utils.get_api_call_path()。感谢 @whitphx!
  • #10891 17fed95 - 修复 gr.Dropdown 中箭头键处理的空数组检查。感谢 @l2dy!

修复

  • #10900 a018a46 - 修复数据框中的换行行为。感谢 @hannahblair!
  • #10892 bfb7aae - 修复次要心跳内存泄漏。感谢 @brentyi!
  • #10902 b9b8d08 - 修复 MultimodalTextboxinteractive=False 时按钮禁用问题。感谢 @lara-gfaria!
  • #10882 cd7f486 - 修复 gradio 挂载应用中的根目录。感谢 @aliabid94!

5.23.1

新功能

  • #10877 b19e8ad - 在 get_api_call_path() 中从 root_url 切换到 request.url。感谢 @abidlabs!
  • #10879 3ba9e4f - 修复请求 URL。感谢 @abidlabs!

修复

  • #10872 84fafc4 - 修复 /monitoring 端点。感谢 @aliabid94!
  • #10873 3a3d0d9 - 改进懒惰缓存的 UI。感谢 @abidlabs!

5.23.0

新功能

  • #10858 e30348b - Gradio 草图: 移除 HF 推理健康检查。感谢 @aliabid94!
  • #10834 c05610c - 添加深层链接。感谢 @freddyaboulton!
  • #10838 a06c7e4 - 允许在 gradio 草图中进行迭代编码。感谢 @aliabid94!
  • #10862 243942e - 修复 gr.on 事件监听器的类型。感谢 @JackismyShephard!
  • #10859 a1862f5 - 修复加载事件监听器中的类型。感谢 @JackismyShephard!
  • #10854 1649b00 - 为 Markdown 组件(以及使用 Markdown 的 gr.Chatbot 等组件)添加 mermaid.js 支持。感谢 @abidlabs!
  • #10812 6384bcc - 基于 Jedi 的 gr.Code Python 代码补全。感谢 @whitphx!
  • #10870 f40e008 - 将 gr.DeepLinkButton 的默认变体更改为 secondary。感谢 @abidlabs!

修复

  • #10841 8ff0a5e - 修复 bash API 返回文件的路径生成。感谢 @cansik!
  • #10860 fb4c3da - 错误修复:如果 launch 中有 root_path,则退出登录。感谢 @azharizz!

5.22.0

新功能

  • #10824 4d78710 - 草图代码生成器。感谢 @aliabid94!
  • #10814 b42e461 - 为 gr.Chatbot 添加了一个水印参数,该参数会添加到复制的文本中。感谢 @abidlabs!
  • #10820 4fa8e00 - 更新 markupsafe 依赖版本。感谢 @abidlabs!

修复

  • #10829 e0ab4f0 - 修复 gr.load_chat。感谢 @aliabid94!
  • #10819 ac075ad - 修复不可编辑数据框中未显示单元格菜单的问题。感谢 @hannahblair!

5.21.0

新功能

  • #10784 6812544 - 在 Windows 操作系统上,隐藏 gr.Dataframe 滚动条同时保留滚动功能。感谢 @abidlabs!
  • #10802 9ec8898 - 修复数据框中过多的滚动 bug。感谢 @hannahblair!
  • #10805 8d03368 - 修复不可编辑数据框中的最大字符数。感谢 @hannahblair!
  • #10787 b3e8c26 - 实现数据框中的拖动选择单元格。感谢 @hannahblair!
  • #10734 c44b8f4 - 为交互式数据框添加 static_columns 参数。感谢 @hannahblair!
  • #10778 373007b - 允许数据框按多列排序。感谢 @hannahblair!
  • #10804 39c30be - 为拖动选择添加父焦点。感谢 @hannahblair!
  • #10777 3b48367 - 允许从标题单元格向下导航,并支持 Cmd/Ctrl + 箭头键。感谢 @abidlabs!
  • #10776 85f6132 - 修复使用 Shift + 箭头键时的单元格选择问题。感谢 @abidlabs!
  • #10733 731ab92 - 代码编辑器组件的自动补全功能。感谢 @whitphx!
  • #10743 3086343 - 修复待处理想法的固定大小。感谢 @dawoodkhan82!
  • #10768 0ce7bfe - 允许使用 gr.load 加载的聊天机器人模型带有标签。感谢 @dawoodkhan82!

修复

  • #10757 b4342d2 - 修复数据框搜索和过滤功能。感谢 @hannahblair!
  • #10786 88941b6 - 从数据框中移除固定布局。感谢 @hannahblair!
  • #10631 b5ca1dc - 重构 gr.Dataframe。感谢 @hannahblair!
  • #10785 fb8c1cb - 将 gr.Textbox 行逻辑移至前端。感谢 @abidlabs!
  • #10765 3232cdd - 修复:markdown 的 latex 渲染。感谢 @Col0ring!
  • #10735 dd2de17 - 修复 FileExplorer 中的 windows 路径问题。感谢 @aliabid94!

5.20.1

新功能

  • #10694 16244f3 - gradio 草图中的事件监听器。感谢 @aliabid94!
  • #10732 2b38420 - 更改警告堆栈级别以改进控制台中的警告。感谢 @wolph!
  • #10720 2248005 - 为 mount_gradio_app 添加 pwaenable_monitoring 参数。感谢 @abidlabs!
  • #10737 1cf992b - 侧边栏固定定位。感谢 @dawoodkhan82!
  • #10728 9fce28b - 连接自定义共享服务器时允许发送自定义 TLS 证书或不发送 TLS 证书。感谢 @abidlabs!

修复

  • #10748 19411c6 - 修复 ClearButton。感谢 @phos-phophy!
  • #10721 b3ac430 - 仅在 SSR 模式为 true 时才检查 Node.js 路径。感谢 @anirbanbasu!
  • #10724 667f8a1 - 修复 Chatbot 头像图片位置。感谢 @abidlabs!
  • #10719 b710d7c - 修复错误显示。感谢 @aliabid94!
  • #10706 5faa2a3 - chore: 将 Pyodide 版本升级到 0.27.3。感谢 @peter-gy!

5.20.0

新功能

  • #10688 bd982df - 将 gr.load 聊天界面行为更改为流式传输。感谢 @abidlabs!
  • #10500 16d419b - 允许仅更新组件属性的函数通过设置 js=True 在前端运行。感谢 @abidlabs!

5.19.0

新功能

  • #10647 b43200d - 数据框的自定义样式。感谢 @abidlabs!
  • #10577 374b762 - 支持 gr.load()gr.LoginButton。感谢 @abidlabs!
  • #10679 cb3c762 - 添加泰语翻译。感谢 @haihandsome!
  • #10678 249eccd - 修复 Dataframe 标题类型以允许整数值。感谢 @abidlabs!

修复

  • #10659 36309ea - 自动恢复多选下拉菜单中的最后滚动位置。感谢 @XcantloadX!
  • #10683 367fe14 - 修复聊天机器人分享按钮有效负载过大问题。感谢 @dawoodkhan82!

5.18.0

新功能

  • #10643 f0a920c - 为 gr.Code() 添加了 show_line_numbers 以切换行号。感谢 @lalitx17!
  • #10664 0b1f729 - 允许 websocket version 15。感谢 @freddyaboulton!
  • #10636 d06f3e3 - 聊天机器人思考生成动画。感谢 @dawoodkhan82!

5.17.1

新功能

  • #10641 d7607a2 - gradio sketch 的人体工程学改进和分析。感谢 @abidlabs!
  • #10646 b01ce47 - 修复 Table.svelte 中的单元格选择逻辑。感谢 @abidlabs!

修复

  • #10650 7c8b0da - 修复已部署的 Spaces。感谢 @abidlabs!

5.17.0

新功能

  • #10569 bd4895a - 更新 Lite 以支持多页应用。感谢 @whitphx!
  • #10630 77432c7 - gradio sketch - 基于 UI 的 gradio 骨架生成器。感谢 @aliabid94!

修复

  • #10622 b505df0 - 修复 fill_width。感谢 @aliabid94!
  • #10616 ae4ba46 - 更改侧边栏为绝对定位并使其可访问。感谢 @dawoodkhan82!
  • #10637 75c9748 - 修复: 聊天机器人分享有效负载过大。感谢 @dawoodkhan82!

5.16.2

新功能

  • #10625 ce4fb99 - 修复 gr.Chatbotresizable 参数的拼写。感谢 @abidlabs!
  • #10594 f0e4fd0 - 修复 Blocks.serve_static_fileButton.svelte 在 Lite 上工作的问题。感谢 @whitphx!

修复

  • #10580 4e70d74 - 修复 gr.load()gr.ChatInterface(save_history=True) 以及上游应用包含 gr.State 作为输入的任何 Gradio 应用的问题。感谢 @abidlabs!
  • #10624 f8eb8e5 - 将 kwargs 传递到 gr.load() 创建的 gr.ChatInterface 中。感谢 @abidlabs!
  • #10597 8c87eb8 - 修复样式更改在值同时更新时被覆盖的问题。感谢 @abidlabs!

5.16.1

新功能

  • #10579 b640df2 - 修复移动设备侧边栏。感谢 @dawoodkhan82!
  • #10582 1299267 - 更改侧边栏位置。感谢 @dawoodkhan82!
  • #10511 c4aa886 - 游乐场中的语义搜索。感谢 @aliabd!

修复

  • #10607 c354f5f - 添加空数据框功能。感谢 @hannahblair!
  • #10596 a8bde76 - 修复 gr.Dataframe 在没有标题时上方的间距问题。感谢 @abidlabs!
  • #10608 b8fada8 - [ZeroGPU] 基于握手的 postMessage 部分.2 (非 SSR 模式)。感谢 @cbensimon!
  • #10595 12669f4 - 行比例更改。感谢 @aliabid94!

5.16.0

新功能

  • #10561 26494ce - 允许在 gr.Dataframe 中冻结列。感谢 @hannahblair!
  • #10554 b8ff5d6 - 在 gr.Dataframe 的工具栏中添加可选的搜索栏。感谢 @hannahblair!
  • #10529 196b600 - 在数据框中选择整行或整列。感谢 @hannahblair!
  • #10558 1113002 - 修复 Safari 中 gr.Dataframe 的间距问题。感谢 @hannahblair!
  • #10492 29880d5 - 允许在任意组件上显示进度更新。感谢 @abidlabs!
  • #10553 4c08b9f - 防止在 Dataframe 单元格菜单打开时滚动。感谢 @hannahblair!
  • #10541 e505fab - 为 gr.Dataframe 添加复制按钮反馈。感谢 @hannahblair!
  • #10507 3748e4c - Chatbot allow_tags。感谢 @dawoodkhan82!
  • #10552 ed25a10 - 为宽屏显示器添加 1920px 宽分辨率。感谢 @Oncorporation!
  • #10540 deeebfb - 还原可编辑文本更改。感谢 @hannahblair!

修复

  • #10544 9b87e12 - 修复 gr.Plot change/load 事件和 plotly css 加载问题。感谢 @freddyaboulton!
  • #10515 1269ad0 - Plotly 6.0 修复:安装最新 plotly js 版本。感谢 @freddyaboulton!
  • #10490 178311b - 确保 Dataframe 中的行号功能按预期工作。感谢 @hannahblair!
  • #10560 4e72dfe - 修复认证。感谢 @freddyaboulton!
  • #10466 8e2cf2f - 修复 micropip.install 的包装函数,抛出原始错误以获得更好的调试体验。感谢 @whitphx!
  • #10548 bcbb7b6 - 修复元组的 DF 后处理。感谢 @freddyaboulton!
  • #10546 27155cf - 原生 Plot 尊重高度参数。感谢 @freddyaboulton!
  • #10534 855d870 - 页脚对齐修复。感谢 @aliabid94!
  • #10535 d909868 - 确保 max_height 应用于 gr.Dataframe。感谢 @hannahblair!
  • #10547 083d68b - quick_fix_client。感谢 @aliabid94!
  • #10521 79937fd - 更改数据框标题中的 word-break 属性。感谢 @hannahblair!
  • #10520 2a1fc2a - 确保数据框中的链接按预期工作。感谢 @hannahblair!
  • #10524 ccf590c - 默认展开行中的标签页。感谢 @aliabid94!
  • #10531 a18ac9c - 修复提供初始值时图表无法加载的错误。感谢 @freddyaboulton!

5.15.0

新功能

  • #10345 39f0c23 - 允许图像上传到 gr.load_chat。感谢 @aliabid94!
  • #10456 8e40c15 - 实现多单元格选择。感谢 @hannahblair!
  • #10480 90f90b7 - 为文档添加侧边栏。感谢 @aliabd!
  • #10495 35fda36 - 为 gr.ParamViewer 添加 anchor_links 参数,允许链接到特定参数。感谢 @abidlabs!
  • #10433 2e8dc74 - 允许构建多页 Gradio 应用。感谢 @aliabid94!
  • #10496 a9bfbc3 - 在 gr.load() 中添加对推理 providers 的支持。感谢 @abidlabs!
  • #10463 ed7a091 - 展开和折叠数据框单元格。感谢 @hannahblair!
  • #10478 afb96c6 - 改进数据框的上传辅助功能。感谢 @hannahblair!
  • #10491 ff5f976 - 允许 gr.Dataframe 中的多行标题。感谢 @hannahblair!
  • #10494 10932a2 - 确保当 interactive 为 False 时数据框不可编辑。感谢 @hannahblair!
  • #10485 6401d32 - chore: 更新 dropdown.py。感谢 @eltociear!
  • #10446 2cf449a - 添加更多 ImageEditor js 测试。感谢 @freddyaboulton!
  • #10483 3750082 - 侧边栏修复。感谢 @dawoodkhan82!

修复

  • #10476 017ed46 - 清理 gr.DataFrame.postprocess() 并修复获取空数据框标题的问题。感谢 @abidlabs!

5.14.0

新功能

  • #10461 ca7c47e - 为数据框工具栏添加复制按钮。感谢 @hannahblair!
  • #10420 a69b8e8 - 支持在 gr.DataFrame 中删除列/行。感谢 @abidlabs!
  • #10470 3465fdb - 使用最新的 ruff 格式化后端。感谢 @abidlabs!
  • #10469 62d0669 - 仅在 gr.Audio() 中点击录制按钮后才请求麦克风权限。感谢 @abidlabs!
  • #10435 ef66fe5 - 侧边栏组件。感谢 @dawoodkhan82!
  • #10460 324383f - 修复因 huggingface_hub 更新导致的类型检查错误。感谢 @freddyaboulton!

修复

  • #10459 fa220a3 - 修补 plotly 依赖项,强制与 altair 一起安装 v5。感谢 @whitphx!

5.13.2

新功能

  • #10452 dd178f3 - 对示例数据框进行微调。感谢 @hannahblair!
  • #10426 2167f58 - 将 Pyodide 更新到 0.27.2。感谢 @whitphx!
  • #10448 337b522 - 对 gr.ChatMessage 和聊天机器人消息间距进行微调。感谢 @abidlabs!

5.13.1

新功能

  • #10370 71c8b8a - 使用 None 清除 Image Editor 值。感谢 @freddyaboulton!
  • #10416 3c2e12b - 修复 ImageEditor 裁剪问题 - 现在裁剪背景图像而不是图像 + 画布。感谢 @freddyaboulton!

修复

  • #10405 92dda15 - 如果 show_recording_waveformFalse,则在播放录制音频时隐藏波形。感谢 @abidlabs!
  • #10421 90e0b47 - 更新所有 md5 哈希到 sha256。感谢 @LArkema!
  • #10406 b7a7e59 - 支持带有 gr.Video, gr.Model3D 和其他组件的预签名 URL。感谢 @abidlabs!

5.13.0

新功能

  • #10359 c44da25 - 允许直接在 gr.ChatInterface 中修改聊天机器人值。感谢 @abidlabs!
  • #10367 5881296 - 改进组件文档字符串和杂项文档。感谢 @abidlabs!
  • #10377 feb1e81 - 为 gr.Dataframe 添加带全屏按钮的工具栏。感谢 @hannahblair!
  • #10341 b0cf92f - PWA 图标定制。感谢 @whitphx!
  • #10392 4d47e4b - 为 Chatbot 元数据添加 log 参数,允许在思考标题旁显示 str 内容。感谢 @abidlabs!
  • #10352 6a7cfc4 - 客户端和 ZeroGPU 之间的兼容性。感谢 @abidlabs!
  • #10366 b10f5e1 - Lite: 重试安装。感谢 @whitphx!
  • #10376 2b7ba48 - 为 gr.Dataframe 添加 show_row_numbers 参数。感谢 @hannahblair!
  • #10368 8cf0461 - 修复 ReDoS。感谢 @kevinbackhouse!
  • #10346 43e05d7 - 为 gr.Chatbot 文档添加额外的辅助类。感谢 @abidlabs!
  • #10340 a91cb9c - 在 gr.slider 初始化中添加 show_reset_button。感谢 @amanchauhan11!
  • #10410 48809c7 - 修复当输入值手动更改时数据框 value 属性未更新的错误。感谢 @abidlabs!

修复

  • #10369 eb85edf - 快速修复:0 被忽略滑块/数字问题。感谢 @dawoodkhan82!
  • #10357 43e7cce - 修复 ImageEditor 尺寸问题。感谢 @freddyaboulton!
  • #10365 40e0c48 - 确保单击单元格一次即可启用编辑模式。感谢 @hannahblair!
  • #10383 9517043 - 确保隐藏了 pandas .hide() 的列按预期工作。感谢 @hannahblair!
  • #10404 9dc5d15 - 调整与 gr.Chatbot 思考消息的 status 相关的行为。感谢 @abidlabs!
  • #10390 9e6eded - 移除覆盖 Gradio 主题设置的 css 标签。感谢 @ericwu09!
  • #10348 62cd4ef - 处理 gr.Dataframe 中的 row_count=0。感谢 @hannahblair!
  • #10403 3219382 - 修复事件触发器和与 gr.DataFrame 相关的近期回归。感谢 @abidlabs!
  • #10360 31cccc3 - 修复 gr.Dataframe 表格值变化检测逻辑。感谢 @abidlabs!
  • #10372 96bbde2 - 允许 fill_height 通过行和选项卡传播,通过缩放实现。感谢 @aliabid94!

5.12.0

新功能

  • #10323 391a4d0 - 为 gr.EditData 添加 .previous_value。感谢 @abidlabs!
  • #10270 bb11a2a - [ZeroGPU] 基于握手的 postMessage。感谢 @cbensimon!
  • #10305 be40307 - 添加对直接在 gr.ChatInterface 中思考 LLM 的支持。感谢 @abidlabs!
  • #10226 58b8391 - 改进工具 UI 并支持嵌套思考。感谢 @hannahblair!

修复

  • #10327 e0cb47f - 修复网络摄像头。感谢 @Col0ring!
  • #10308 3543418 - ImageEditor:即使未定义 change 事件,也触发 input 事件。感谢 @freddyaboulton!
  • #10322 d2691e7 - 快速修复:多模态麦克风音频未清除。感谢 @dawoodkhan82!
  • #10331 decb594 - 更新 gr.load_chat 的指南并允许 **kwargs。感谢 @abidlabs!
  • #10332 e742dcc - 允许用户添加自定义 API 路由。感谢 @aliabid94!
  • #10324 343503d - 支持使用 Blocks.load() 事件加载 Gradio 应用。感谢 @abidlabs!

5.11.0

新功能

  • #10304 6b63fde - 阻塞路径修复。感谢 @freddyaboulton!
  • #10303 f19ca89 - 为 Gallery 添加 preview_open 和 preview_close 事件。感谢 @freddyaboulton!
  • #10314 84e72e4 - 恢复聊天界面全高。感谢 @aliabid94!

修复

  • #10306 9fc988e - 修复 ImageEditor 总是向后端发送空图层列表的错误。感谢 @freddyaboulton!
  • #10297 1e253ff - 修复 numpy==2.x 的 test_subclass_conversion。感谢 @abidlabs!

5.10.0

新功能

  • #10203 c3a9e64 - 允许编辑聊天机器人消息。感谢 @aliabid94!
  • #10272 a1f2649 - 聊天界面标记和聊天机器人反馈。感谢 @aliabid94!
  • #10225 f0cf3b7 - Chatbot 中的数据框支持。感谢 @dawoodkhan82!
  • #10292 f2bd72f - 在聊天历史中切换对话时重置已标记的值。感谢 @abidlabs!
  • #10191 5ce2832 - 支持在 gr.ChatInterface 中保存聊天历史。感谢 @abidlabs!
  • #10197 a95f8ef - 添加对从 gr.ChatInterface 聊天函数返回多条消息的支持。感谢 @abidlabs!
  • #10186 9b17032 - 为 MultimodalTextbox 添加麦克风输入。感谢 @dawoodkhan82!
  • #10192 4fc7fb7 - 确保组件可以重新挂载其先前的数据。感谢 @pngwn!
  • #10187 64d1864 - PWA 的 manifest json。感谢 @whitphx!
  • #10262 f3bedd4 - 添加 gr.Success 并更新 windows 贡献文档。感谢 @not-lain!
  • #10254 da07707 - 为页脚添加 settings 链接,包含国际化选项和 PWA 说明。感谢 @abidlabs!
  • #9984 45df1b1 - Lite: 从主线程捕获 stdout 和 stderr。感谢 @whitphx!
  • #10210 13a83e5 - 允许在 gr.File 中重新排序文件。感谢 @hannahblair!
  • #10221 506bd28 - 更新有关将 Gradio 聊天机器人部署到 Discord、Slack 和网站小部件的指南。感谢 @abidlabs!
  • #10229 1be31c1 - 允许可编辑的 ChatInterface。感谢 @aliabid94!
  • #10245 3e4e0de - 添加 gr.BrowserState 更改事件。感谢 @abidlabs!
  • #10222 9c6d83d - gr.load_chat: 允许将任何 OpenAI 兼容服务器立即加载为 ChatInterface。感谢 @aliabid94!

修复

  • #10214 501adef - 某些代理的简单问题。感谢 @freddyaboulton!
  • #10290 99123e7 - 修复了关于某些模式下无法找到应用的警告。感谢 @YanSte!
  • #10269 890eaa3 - 允许在 gr.Imagegr.Gallery 组件中安全显示 SVG 图像。感谢 @abidlabs!
  • #10209 2700d18 - 确保 gr.File 中的 height 参数按预期工作。感谢 @hannahblair!
  • #10235 9285dd9 - 修复 gr.Interface 中组件的类型和 image.py 中的文档字符串。感谢 @abidlabs!
  • #10207 314a8b5 - 修复:确保 comp.instance 存在。感谢 @Col0ring!
  • #10238 3f19210 - 为类型检查在 all 中声明导出。感谢 @dustalov!

5.9.1

修复

5.9.0

新功能

  • #10196 c9ba9a4 - 在 API 类型信息中使用现代的小写 Python 类型。感谢 @abidlabs!
  • #10149 9cd291b - 可调整大小的聊天机器人。感谢 @aliabid94!
  • #10109 48e4aa9 - 为 gr.ChatInterface 添加 run_examples_on_click 参数,与 gr.Examples 中的 run_on_click 参数对应。感谢 @abidlabs!
  • #10135 3e93740 - 改进 Multimodaltextbox 中粘贴文本的行为。感谢 @hannahblair!
  • #10098 9a6ce6f - 重构全屏逻辑以实现可重用性。感谢 @hannahblair!
  • #10111 3665e81 - 允许聊天机器人示例显示多张图像。感谢 @hannahblair!
  • #10088 cb5b891 - 重构 NO_RELOAD 实现。感谢 @CNSeniorious000!
  • #10132 6645518 - 调整 Chatbot bubble_full_width 行为。感谢 @hannahblair!
  • #10198 494c4dd - 添加 SSR 模式为实验性的说明。感谢 @abidlabs!
  • #10155 23a2958 - 为 HTML 组件添加 .click() 事件和 padding 参数。感谢 @abidlabs!
  • #10158 19e1ef5 - 使 gr.Error 错误消息打印到控制台可配置。感谢 @obendidi!
  • #10137 fe7a9db - 改进 Chatbot 中上传文件的 UI。感谢 @hannahblair!
  • #10169 25484f4 - 默认情况下,连续消息显示在同一气泡中。这由 Chatbot 的新 display_consecutive_in_same_bubble 参数控制。感谢 @freddyaboulton!
  • #10092 20b9d72 - 使用 gr.load 加载模型时传递 HF_TOKEN 环境变量的值。感谢 @abidlabs!
  • #10166 8ac5b13 - 添加日语登录 UI 翻译。感谢 @kazuhitoyokoi!
  • #10193 424365b - 客户端中的 JSON 类型修复以及 gr.ChatInterface/chat 端点的类型修复。感谢 @abidlabs!
  • #10159 7ca3685 - 将日语消息添加到消息目录。感谢 @kazuhitoyokoi!
  • #10188 22fe4ce - 通过将导入重命名为 python_multipart 修复 multipart ModuleNotFoundError。感谢 @archiloque!

修复

  • #10168 7d70596 - 多模态自动对焦修复。感谢 @dawoodkhan82!
  • #10167 5f03649 - 让 Gradio 成为类型化的!感谢 @abidlabs!
  • #10185 e525680 - 清理 gr.ChatInterface 并修复 API 类型不一致问题。感谢 @abidlabs!
  • #10131 4984e84 - 修复 multimodal_textbox.py 的 API 文档。感谢 @abidlabs!
  • #10129 2b55302 - 快速修复:修复 Chatbot 中 Audio/Video 的 autoplay 参数。感谢 @dawoodkhan82!
  • #10190 b4004e3 - 支持 gr.render 触发器中的事件 + 请求数据。感谢 @aliabid94!
  • #10170 5e6e234 - 重新渲染中的自定义组件。感谢 @aliabid94!
  • #10161 3a053cc - 修复聊天机器人 visible 属性不响应更改的问题。感谢 @freddyaboulton!
  • #10097 43d88c3 - 修复:在 mount_gradio_app 中添加了对 show_api 的支持。感谢 @HongweiRuan!

5.8.0

新功能

  • #10083 b2a21c6 - 为 paramviewer 描述添加 HTML 支持。感谢 @aliabd!
  • #10096 ec10aa3 - 修复 paramviewer 描述仅渲染 Markdown 链接的问题。感谢 @aliabd!
  • #10080 ebe25bc - 修复聊天机器人/聊天界面类型不匹配问题。感谢 @abidlabs!
  • #10071 01b919f - 支持 gr.ChatInterface 中的 additional_outputs。感谢 @abidlabs!
  • #10081 b94f010 - 将 Zero GPU 应用于 gr.ChatInterface。感谢 @abidlabs!
  • #10099 8530b6e - 重新设计 Chatbot 中的待处理气泡。感谢 @hannahblair!
  • #10032 e450674 - 添加 webcam_heightwebcam_width 来指定网络摄像头的分辨率。感谢 @yinsumirage!

修复

  • #10123 36e9597 - 修复流式聊天机器人情况下的选项。感谢 @abidlabs!
  • #10095 97d647e - 修复 gr.render 内的状态更改。感谢 @aliabid94!
  • #10094 98dd668 - 为 url_ok 添加 http 代码 303 和 307。感谢 @sharon-wang!
  • #10125 b02c8b7 - 修复聊天机器人在空间中的分享问题。感谢 @aliabid94!
  • #10124 5d61c7b - 修复懒惰缓存。感谢 @abidlabs!
  • #10114 ce5680f - 在 gr.render 块中添加事件和 gr.Select 数据支持。感谢 @aliabid94!
  • #10113 de42c85 - 修复 render 中的 every= 支持。感谢 @aliabid94!
  • #10090 5ea3cb5 - 更新 gradiogradio_clientrequirements.txt。感谢 @abidlabs!

5.7.1

新功能

  • #10068 cbd7032 - 修复:将节点响应流式传输给用户。感谢 @XciD!
  • #10064 c38cf64 - 使用 get_token 而不是 HfFolder.get_token。感谢 @Wauplin!

修复

  • #10025 368ba73 - 更新聊天界面示例并添加更多 LLM 库和 API 提供商。感谢 @abidlabs!
  • #10059 19d4ee6 - 允许并发渲染。感谢 @aliabid94!
  • #10069 afd75de - 修复 gr.HTML 中的标签位置。感谢 @hannahblair!

5.7.0

新功能

  • #10013 5d36c80 - 为 gr.datetime 添加参数 interactive:bool。感谢 @yinsumirage!
  • #10054 458941c - 在交互式 gr.Image 中允许全屏模式。感谢 @hannahblair!
  • #10017 a95fda1 - 修复连接 src 和 api_prefix 时的小错误。感谢 @Chandler-Bing!
  • #10014 4aa0e88 - 为 gr.HTML 组件添加 container parameter。感谢 @yinsumirage!
  • #9987 a2a3cd4 - 为 gr.Label 添加 show_heading 参数。感谢 @hannahblair!
  • #10030 ba05a7c - 修复启动器函数的类型。感谢 @JackismyShephard!
  • #9979 e7629f7 - 为 gr.Markdowngr.Chatbotgr.Textbox 添加复制事件。感谢 @abidlabs!
  • #9989 369a44e - 添加在 gr.Chatbot / gr.ChatInterface 中提供预设响应选项的功能。感谢 @abidlabs!
  • #10053 bea3d2e - 为 ChatInterface 添加 api_name。感谢 @freddyaboulton!

修复

  • #9945 e9f0d03 - 确保 Safari 和 Firefox 中正确处理 Enter 键。感谢 @hannahblair!
  • #9990 c3324d7 - 修复与 gr.ChatInterface 中的示例和示例缓存相关的问题。感谢 @abidlabs!
  • #10055 5da6c1d - 确保聊天机器人消息正确对齐。感谢 @hannahblair!
  • #10036 ed156e2 - 修复状态序列化问题。感谢 @freddyaboulton!
  • #10016 7b8f1e4 - 修复预览中双重画廊关闭按钮的问题。感谢 @freddyaboulton!
  • #9822 2e2cdbf - 修复从代理子路径提供服务时 CSS 预加载问题。感谢 @amol-!
  • #10037 d0b74ba - 确保 ImageEditor 中大图像的工具栏保持可见。感谢 @hannahblair!
  • #10015 db162bf - 为 chatinterface 启用惰性缓存。感谢 @abidlabs!
  • #10000 29cfc03 - 在 Lite 中调用 run_extra_startup_events。感谢 @whitphx!
  • #10038 7d134e0 - 修复示例加载问题。感谢 @freddyaboulton!
  • #10011 74f22d5 - 修复 Starlette 模板弃用警告。感谢 @abidlabs!
  • #10001 f2fa270 - 修复 Windows 中的 Node.js 启动问题。感谢 @rrg92!
  • #10004 0879be7 - 确保 HighlightedText 中使用 show_label 参数。感谢 @hannahblair!
  • #9988 2afcad8 - 允许 gr.Slider 中使用负值。感谢 @hannahblair!
  • #10041 c1fa13c - 确保 ImageEditor 画笔颜色在更改时更新。感谢 @hannahblair!
  • #10056 e0ed480 - 移除 gr.Chatbot 中重复的分享图标。感谢 @hannahblair!

5.6.0

新功能

  • #9906 eafe22c - CheckboxGroup 预处理函数中更清晰的错误消息。感谢 @muhammadyaseen!
  • #9930 eae345e - 允许在 js 客户端中设置自定义标题。感谢 @elgiano!
  • #9921 a70ba5e - Dropdown 和 Radio 预处理函数中更清晰的错误消息。感谢 @muhammadyaseen!
  • #9933 66375ac - 修复 base.py 抛出异常时的拼写错误。感谢 @meg-huggingface!
  • #9950 fc06fe4 - 添加从 LocalStorage 读取和写入的功能。感谢 @abidlabs!
  • #9966 da6f191 - 使用 gr.load() 在本地记住令牌。感谢 @abidlabs!

修复

  • #9949 cfb62bf - 允许数据框列内容换行。感谢 @hannahblair!
  • #9897 c0cf80b - 允许 datetime 值为空。感谢 @hannahblair!
  • #9958 75ad3e3 - SSR Safari 修复。感谢 @dawoodkhan82!
  • #9905 08f4b8b - 添加 allow_file_downloads 参数,允许下载聊天机器人中的图像/视频/音频媒体。感谢 @hannahblair!
  • #9913 d81f430 - 修复:修复文件名剥离以保留扩展名。感谢 @TakaSoap!
  • #9946 a966e9f - 当 file_count="single" 时,上传后隐藏上传按钮。感谢 @abidlabs!
  • #9901 74b4ff0 - 确保单选按钮半径与复选框半径一致。感谢 @hannahblair!
  • #9904 f523c91 - 确保 MultimediaTextbox 中拖放的文件经过验证。感谢 @hannahblair!

5.5.0

新功能

  • #9875 8305ff8 - 为 gr.Accordion 添加 .expand().collapse() 事件。感谢 @abidlabs!
  • #9424 a1582a6 - Lite worker 重构。感谢 @whitphx!
  • #9891 fc12496 - 允许在 gr.File 中上传更多文件。感谢 @hannahblair!
  • #9898 dcfa7ad - 在 FileData payloads 中强制要求 meta 键在预处理期间存在。感谢 @freddyaboulton!
  • #9887 d407c00 - 为 gr.File 添加 .download() 事件。感谢 @abidlabs!
  • #9726 b6725cf - Lite 通过 pyodide.loadPackagesFromImports 自动加载导入的模块。感谢 @whitphx!
  • #9786 f109497 - 修复 ApiDocs 和 RecordingSnippet 上的前端错误。感谢 @whitphx!
  • #9800 d1cfe1e - 允许绘图工具提示显示额外列。感谢 @aliabid94!

修复

  • #9835 4d90883 - 允许在文件浏览器中选择目录。感谢 @aliabid94!
  • #9883 e10bbd2 - 修复音频/图像流的实时界面。感谢 @freddyaboulton!
  • #9804 458a38c - 修复 ChatInterface 示例在提供额外输入时的错误。感谢 @dawoodkhan82!
  • #9827 7ed8d02 - 修复通过 gr.load 加载 SSR 应用的问题。感谢 @freddyaboulton!
  • #9882 6c8a064 - 确保非表单元素在应用缩放时正确定位。感谢 @hannahblair!
  • #9880 120198f - 修复 SSR 的 LoginButton。感谢 @dawoodkhan82!
  • #9881 6866a54 - 确保画廊分享按钮位置正确。感谢 @hannahblair!
  • #9826 69acfeb - 确保如果不是最后一条消息,则关闭工具手风琴。感谢 @freddyaboulton!
  • #9892 7d77024 - 修复数据框高度在滚动时增加的问题。感谢 @abidlabs!
  • #9859 c1cb5be - 修复:解决 Textbox 组件中的复制按钮可见性问题。感谢 @rahulsamant37!
  • #9886 fa5d433 - 在重新加载模式观察线程中,不加载 gr.NO_RELOAD 中的代码。感谢 @freddyaboulton!

5.4.0

新功能

  • #9834 febbed6 - 固定 multipart 版本以修复 yanking 问题。感谢 @aliabd!
  • #9792 d2b56a4 - 更多修复。感谢 @pngwn!
  • #9795 ff5be45 - 使用 safehttpx.get() 而不是 async_get_with_secure_transport()。感谢 @abidlabs!
  • #9807 5e89b6d - 允许在 gr.load 中接受用户提供的令牌。感谢 @abidlabs!
  • #9819 160b27c - 更新 requirements.txt 以允许 pillow 11.x。感谢 @bob-jones-cs!
  • #9649 b1b81c9 - 在数据框中行/列计数固定时隐藏添加行/列选项。感谢 @hannahblair!
  • #9805 78e3b51 - 允许设置 plotly 边距。感谢 @aliabid94!

修复

  • #9831 767643f - 修复示例文本框在初始不可见时渲染的错误。感谢 @cornzz!
  • #9836 a4e70f3 - 修复行中的 Tabs。感谢 @aliabid94!
  • #9769 3b9ed29 - 修复 Chatbot 中的头像图像位置。感谢 @hannahblair!
  • #9757 f971ca6 - 添加 audioop-lts 模块以支持 python3.13+ 的 pydub。感谢 @samy-FERGUI!
  • #9651 1163a37 - 修复组件信息字体大小。感谢 @dawoodkhan82!
  • #9814 6505d42 - 支持在子路径上提供的 gradio 应用。感谢 @pngwn!
  • #9806 b538bda - 更新 gr.Button 中“variant”参数的文档字符串。感谢 @fadingNA!
  • #9815 90d9d14 - 为节点端口范围使用不同的环境变量。感谢 @pngwn!
  • #9825 f15808e - 修复:在 gr.DateTime 中,当 include_time=False 时使用系统时区。感谢 @lcian!
  • #9783 caf3650 - 排除 python-multipart 0.0.13。感谢 @whitphx!

5.3.0

新功能

  • #9746 5015abb - 修复 @gradio/sanitize 导出。感谢 @pngwn!
  • #9756 92f337c - 修复网站构建问题。感谢 @aliabd!
  • #9781 7579e92 - 允许更平滑的绘图更改。感谢 @aliabid94!

修复

  • #9770 47b5565 - 修复损坏的图像选择。感谢 @aliabid94!
  • #9754 36a5076 - 更新 client.py: 在 429 get_config 时抛出错误。感谢 @Pendrokar!
  • #9780 a72e1a9 - Chatbot 组件中的流式 Markdown 修复。感谢 @dawoodkhan82!
  • #9767 16895e8 - 修复 #9742。感谢 @crypdick!
  • #9654 cd7dab7 - 改进 gr.Dataframe 中的选择事件行为。感谢 @hannahblair!
  • #9700 2932e06 - 修复 API 信息错误。感谢 @freddyaboulton!
  • #9653 61cd768 - 确保将 visible 设置为 false 的选项卡不可见。感谢 @hannahblair!
  • #9758 38701a9 - 修复 Safari 中图标不显示的问题。感谢 @hannahblair!
  • #9738 2ade59b - 从 @gradio/tabs 导出 Tabs 类型,并修复 Playground 以兼容新的 Tabs API。感谢 @whitphx!
  • #9762 bcb7d15 - 为 gr.Chatbot 组件添加 .clear 事件。感谢 @abidlabs!
  • #9765 df34f58 - 修复 SVG 图标无法在 Buttons/Chatbots 中使用的问题。感谢 @freddyaboulton!

5.2.1

修复

  • #9730 39a0e8c - 修复聊天机器人组件流式传输错误和可见性错误。感谢 @freddyaboulton!

5.2.0

新功能

  • #9712 bad46f3 - 设置 FastAPI 的最低版本。感谢 @freddyaboulton!
  • #9699 ea2367c - 允许将 gr.Dropdown 的初始值设置为 None,以表示最初不应选择任何值。感谢 @abidlabs!
  • #9681 2ed2361 - 允许在 gr.Info/Warning/Error 中设置标题。感谢 @ABucket!

修复

  • #9716 3c7f2ad - 恢复亮/暗自定义设置。感谢 @aliabid94!
  • #9719 7ec57cb - 修复 Lite 依赖项。感谢 @whitphx!
  • #9711 7134fc2 - 自定义组件修复。感谢 @freddyaboulton!
  • #9659 b1a0f6d - 修复 gr.LoginButton 在本地和 Spaces 上的行为。感谢 @abidlabs!
  • #9693 c45b466 - 修复进度条与生成器兼容性问题。感谢 @brody715!
  • #9728 d0b2ce8 - 确保选项卡在 SSR 模式下渲染并减少其渲染时间。感谢 @pngwn!
  • #9709 31418ef - 修复表格类型检查。感谢 @hannahblair!
  • #9731 ea283e7 - 修复 css 语法错误。感谢 @pngwn!
  • #9652 35bebf3 - 隐藏默认滑块背景。感谢 @hannahblair!
  • #9678 a25a26e - 修复:file_types 检查错误。感谢 @jasongzy!

5.1.0

新功能

  • #9662 b1c5a68 - 调整 Colab 笔记本中显示的消息。感谢 @abidlabs!
  • #9656 8f6626c - 修复流式音频/视频输出。感谢 @freddyaboulton!
  • #9660 3407b50 - 聊天界面功能测试修复 + 聊天示例居中。感谢 @dawoodkhan82!
  • #9677 3a19e69 - 还原文本禁用。感谢 @whitphx!

修复

  • #9676 fd0264f - 修复 Chatbot 中的音频错误。感谢 @freddyaboulton!

5.0.2

修复

  • #9528 9004b11 - 修复 Lite 在 FireFox 上无法工作的问题。感谢 @whitphx!

5.0.1

新功能

  • #9632 9b58ab0 - 升级到 node 20。感谢 @pngwn!
  • #9626 ec95b02 - 修复点击停止按钮时聊天界面停止的问题。感谢 @aliabid94!
  • #9617 c163182 - 修复暗模式检测和容器高度。感谢 @pngwn!
  • #9623 5923c67 - 修复聊天机器人示例错误。感谢 @freddyaboulton!
  • #9614 5d98550 - 修复 gr.Chatbot 中的 重试撤销 响应性。感谢 @hannahblair!
  • #9619 1f3ee97 - 修复功能测试。感谢 @dawoodkhan82!

修复

  • #9630 2eaa066 - 修复重复属性错误。感谢 @pngwn!

5.0.0-beta.10

修复

  • #9600 9f71086 - 确保 gr.Chatbot 中机器人的最后一条消息显示撤销/重试按钮。感谢 @hannahblair!

5.0.0-beta.9

新功能

  • #9437 c3d93be - 为 Gradio 5.0 添加新主题。感谢 @allisonwhilden!
  • #9593 cc61fe7 - 更多聊天机器人修复。感谢 @dawoodkhan82!
  • #9583 b92a762 - 当文本为空时,禁用提交按钮和回车键提交。感谢 @whitphx!
  • #9590 e853c41 - SSR 端到端测试 + 修复。感谢 @pngwn!
  • #9591 139152f - 默认情况下行高不相等。感谢 @aliabid94!
  • #9589 477f45c - 仅将具有元数据键的文件移动到缓存。感谢 @freddyaboulton!
  • #9584 6f8fa54 - 聊天界面多模态修复 & 回退到 gr.Examples()。感谢 @dawoodkhan82!
  • #9482 bd6c5f2 - 修复 main/5.0 中的自定义组件 CLI。感谢 @freddyaboulton!
  • #9601 c078892 - 调整 gr.Dataframe 菜单用户体验。感谢 @hannahblair!
  • #9575 4ec2feb - 更新带有操作弹出框的 gr.Dataframe UI。感谢 @hannahblair!
  • #9582 43a7f42 - 聊天机器人自动滚动。感谢 @whitphx!
  • #9598 ffc33fa - 修复 gr.Chatbot 中的 Markdown 代码复制/检查按钮。感谢 @hannahblair!
  • #9576 430a26a - 修复重新加载模式。感谢 @freddyaboulton!
  • #9580 a9ac396 - 使用哈希进行深度相等检查。感谢 @aliabid94!
  • #9499 17e6c84 - 修复 gr.Chatbot 面板布局。感谢 @hannahblair!
  • #9592 24fe222 - 修复 SSR 模式下的 favicon。感谢 @freddyaboulton!

5.0.0-beta.8

新功能

  • #9550 b0fedd7 - 修复 5.0-dev 分支中大多数不稳定的 Python 测试。感谢 @abidlabs!
  • #9577 9f532e0 - 等高列。感谢 @aliabid94!
  • #9570 e0ee3d5 - 更新 gr.ColorPicker 用户界面。感谢 @hannahblair!
  • #9483 8dc7c12 - 如果可能,通过 Websocket 发送流数据。还支持图像的 base64 输出格式。感谢 @freddyaboulton!
  • #9521 06ef22e - 允许 info= 渲染 markdown。感谢 @dawoodkhan82!
  • #9571 148345d - 修复 ChatInterface 嵌入高度问题。感谢 @aliabid94!
  • #9525 7c367b6 - 修复 gr.ImageEditor 中的截断问题。感谢 @hannahblair!
  • #9522 3b71ed2 - API 信息修复。感谢 @freddyaboulton!
  • #9508 b260389 - 将缓存改为在 Blocks 实际启动时发生,而不是在创建 gr.Examples() 时发生。感谢 @aliabid94!
  • #9524 cf39640 - 添加 css_pathshead_paths 参数。感谢 @abidlabs!

5.0.0-beta.7

新功能

  • #9546 b82aa6f - 暂时禁用 sagemaker_check()。感谢 @vmatt!
  • #9545 098a009 - 为 Code 组件添加 Jinja2 语言。感谢 @CISC!
  • #9526 f60bb68 - 修复单选下拉菜单。感谢 @whitphx!
  • #9497 d826faa - 隐藏 X 轴标签。感谢 @aliabid94!

5.0.0-beta.6

新功能

  • #9460 7352a89 - Playground requirements 标签页。感谢 @whitphx!
  • #9496 1647ebd - UI 主题修复。感谢 @aliabid94!
  • #9450 991883e - 改进 gr.Code。感谢 @hannahblair!
  • #9504 d054262 - 当设置了高度和宽度时,在 Block 中居中组件。感谢 @hannahblair!
  • #9481 2510a6e - 修复 slider-color 变量。感谢 @hannahblair!
  • #9495 488ef76 - 修复自定义组件 CLI 单元测试。感谢 @freddyaboulton!
  • #9488 4e6a47f - 修复:自定义 Chatbot 的 Chatbot 示例 + 重命名 suggestions -> examples。感谢 @dawoodkhan82!
  • #9506 861f5e9 - 修复 Node 进程以正确的服务器名称运行。感谢 @abidlabs!
  • #9493 c307a0c - 文档和演示的小修复。感谢 @abidlabs!
  • #9519 0ab6ac5 - 修复下拉菜单和单选按钮的更改触发器。感谢 @dawoodkhan82!

修复

  • #9431 7065e11 - 在后端检查 file_types 参数。感谢 @dawoodkhan82!

5.0.0-beta.5

新功能

  • #9470 b406139 - 为 gr.load 添加第三方提供商支持,并为会话模型提供更好的用户体验。感谢 @abidlabs!
  • #9383 30d13ac - 预/后处理下载请求。感谢 @aliabid94!
  • #9464 3ac5d9c - 修复图表。感谢 @pngwn!

5.0.0-beta.4

新功能

  • #9419 018c140 - 从后端开始/停止录制。添加会话式聊天机器人的指南。感谢 @freddyaboulton!
  • #9453 56dbf77 - Chatbot 错误修复。感谢 @dawoodkhan82!
  • #9448 e7a415b - 使用 pathlib.Path 对象来指示 cssjshead 参数的文件路径。感谢 @abidlabs!
  • #9469 f7c3396 - 修复。为标题更改触发数据框更改事件。感谢 @Joodith!
  • #9447 afbd8e7 - 减少收集的分析数据。感谢 @abidlabs!
  • #9438 8f469e1 - 缓存的小改动。感谢 @abidlabs!
  • #9446 0c8fafb - 修复 mount_gradio_app 的 SSR 模式标志,并还原 pytests 的更改。感谢 @abidlabs!
  • #9456 4d75f02 - 更新对象检测指南。感谢 @freddyaboulton!
  • #9406 74f3b9d - 允许跳过任意数量的输出组件,并在输出组件数量与函数返回的值数量不匹配时发出警告。感谢 @abidlabs!
  • #9413 a16787a - Lite: HTTPX 客户端改进。感谢 @whitphx!

5.0.0-beta.3

新功能

  • #9376 d92c26f - 修复 gr.Dataframe 和 chatbot 文档的小问题。感谢 @abidlabs!
  • #9412 c2c2fd9 - 修复 Spaces 上的 SSR 应用。感谢 @pngwn!

修复

  • #9405 bf27ff4 - 当没有文本时,图标在按钮中居中。感谢 @abidlabs!

5.0.0-beta.2

新功能

  • #9359 50c3a7f - 微调 gr.Chatbot 中显示思考的方式。感谢 @abidlabs!
  • #9323 06babda - 默认禁用 Chatbot 中用户消息的点赞功能,但可配置。感谢 @freddyaboulton!
  • #8966 8e52b6a - Chatbot 示例。感谢 @dawoodkhan82!
  • #9261 73647a0 - 将图标移动到 IconButtonWrapper 中。感谢 @hannahblair!
  • #9316 4338f29 - 9227 ChatInterface 重试错误。感谢 @freddyaboulton!
  • #9313 1fef9d9 - 统一组件高度,并在适当位置添加 max_heightmin_height 参数。感谢 @abidlabs!
  • #9339 4c8c6f2 - SSR 第二部分。感谢 @pngwn!
  • #9250 350b0a5 - 改进图标按钮一致性。感谢 @hannahblair!
  • #9269 e05f568 - 修复 5.0 开发版中的重新加载模式和流式传输。感谢 @freddyaboulton!
  • #9356 1daf259 - 在 gr.Markdown 中使用 container 参数。感谢 @hannahblair!
  • #9321 81a356d - 移除两个依赖项:importlib_resourcesurllib3(如果不在 Wasm 中)。感谢 @abidlabs!
  • #9253 99648ec - 添加了在文件上传时阻止事件触发的功能。感谢 @dawoodkhan82!
  • #9341 02369b3 - 改进 is_in_or_equal 和 fuzzer。感谢 @freddyaboulton!
  • #9333 5b86e2f - 增强 Lite E2E 测试并修复 Lite 上的网络问题。感谢 @whitphx!
  • #9338 19f6b31 - 修复 tunneling.py 中的拼写错误。感谢 @abidlabs!
  • #9336 736046f - 从网络摄像头流中进行对象检测指南。感谢 @freddyaboulton!
  • #9300 6309a48 - 引发 ChecksumMismatchError。感谢 @abidlabs!
  • #9373 6443062 - 修复流式媒体的缓存示例。感谢 @freddyaboulton!
  • #9367 1c94328 - 添加本地字体并更新主题。感谢 @hannahblair!
  • #9335 b543465 - 将 lite/theme.css 从 Git 管理的文件树中移除。感谢 @whitphx!
  • #9358 16c0485 - 微调 gr.Chatbot 中 “tuples”/“messages” 参数的 DX。感谢 @abidlabs!
  • #9303 34f46b0 - 在 Chatbot 后处理中不要自动将文件移动到缓存。感谢 @freddyaboulton!
  • #9363 3ad28c7 - 防止 HTML 和 Markdown 在状态隐藏时高度发生变化。感谢 @hannahblair!
  • #9260 d47dd1f - 修复 Chatbot 中 Markdown 溢出问题。感谢 @hannahblair!
  • #9320 98cbcae - 杂项:修复文档样式。感谢 @imba-tjd!
  • #9314 299879d - 使 gr.Image 预处理更高效。感谢 @abidlabs!
  • #9371 7bf3e99 - 修复 gr.ImageEditor 工具栏截断问题。感谢 @hannahblair!
  • #9306 f3f0fef - 修复 update_root_in_config 中的竞争条件。感谢 @abidlabs!
  • #9312 7c0780b - 提案:移除 gr.make_waveform 并移除 matplotlib 作为依赖项。感谢 @abidlabs!
  • #9339 4c8c6f2 - SSR 模式的调整。感谢 @pngwn!
  • #9270 b0b8500 - 修复停止录制按钮颜色。感谢 @freddyaboulton!
  • #9268 c469d40 - 如果二进制文件校验和不匹配,则引发错误而非警告。感谢 @abidlabs!
  • #9377 618e9fe - 将 babylon.js 更新到 v7 以用于 gr.Model3D。感谢 @abidlabs!
  • #9282 54ea485 - 进一步调整 is_in_or_equal。感谢 @freddyaboulton!
  • #9326 7afb9a1 - 5.0 合并第二次尝试。感谢 @pngwn!
  • #9280 7122420 - 将文本框停止按钮的样式与提交按钮匹配。感谢 @freddyaboulton!
  • #9348 61f794b - 不为开发者明确允许的文件附加 content_disposition_type = "attachment" 标头。感谢 @abidlabs!
  • #9361 5eb860f - 重构惰性缓存。感谢 @abidlabs!
  • #9311 c4afdcd - 为 gr.Code 添加了最大行数和溢出滚动条。感谢 @micpst!

修复

  • #9299 aa35b07 - 在迭代器上触发状态更改事件。感谢 @freddyaboulton!
  • #9393 53ed0f0 - 修复多模态文本框的文件类型。感谢 @dawoodkhan82!
  • #9328 6a7f631 - 将禁用文本框中占位符的颜色设置为灰色而不是黑色,并在 gr.ChatInterface 生成响应时禁用输入,允许 gr.MultimodalTextbox 接受字符串值。感谢 @abidlabs!

5.0.0-beta.1

新功能

  • #9235 f8b411f - gr.ChatInterface(multimodal=False) 中内置提交和停止按钮,为 gr.Textbox()gr.MultimodalText() 添加 submit_btnstop_btn 属性。感谢 @whitphx!
  • #9201 5492e74 - 将按钮从 ChatInterface 移到 Chatbot 中。感谢 @freddyaboulton!
  • #9199 3175c7a - 重新设计 gr.Tabs()。感谢 @hannahblair!
  • #9167 e9e737e - 重新设计 gr.Button()。感谢 @hannahblair!
  • #9218 4a832f4 - 为 FRP 隧道添加 TLS。感谢 @abidlabs!
  • #9166 8a75559 - 5.0 版标记的微小更改。感谢 @abidlabs!
  • #9254 03f3735 - 添加“huggingface”按钮变体,并将其设为 gr.LoginButtongr.DuplicateButton 的默认值。感谢 @abidlabs!
  • #9187 5bf00b7 - 使所有组件兼容 SSR。感谢 @pngwn!
  • #9236 dd8e2e3 - 改进亮/暗模式下按钮的一致性。感谢 @hannahblair!
  • #9225 5f2e047 - 为 gradio.Image 组件添加一个“None”选项以禁用 image_m… 。感谢 @GeeMoose!
  • #9204 3c73f00 - 🔡 更新默认核心 Gradio 字体。感谢 @hannahblair!
  • #9245 c8cfe93 - 浅化辅助按钮的灰色填充。感谢 @hannahblair!
  • #9246 38cf712 - 停止在 Lite v5 上使用 multiprocessingflagging.CSVLogger 中。感谢 @whitphx!
  • #9216 e137b30 - 减小组件圆角并移除输入阴影。感谢 @hannahblair!
  • #9200 2e179d3 - 前缀 API 路由。感谢 @pngwn!

5.0.0-beta.0

新功能

  • #9069 f9f84bf - gr.load() 默认不传递 token。感谢 @abidlabs!
  • #9160 8f5a895 - 修复原生绘图 lite 演示。感谢 @aliabd!
  • #9197 6773c4d - 重新设计 gr.Slider()。感谢 @hannahblair!
  • #9140 c054ec8 - 停止支持 Python 3.8 和 3.9。感谢 @abidlabs!
  • #8978 fe9d1cb - 改进文件对象的 URL 下载。感谢 @aliabid94!
  • #8810 4cf8af9 - 防止无效值提交到下拉菜单等。感谢 @abidlabs!
  • #9194 20c0836 - 弃用 Chatbot 的 type='tuples' 并将 Chatbot 文档重点放在 'messages' 类型上。感谢 @freddyaboulton!
  • #9122 2672ea2 - 后处理强化。感谢 @freddyaboulton!
  • #9149 3d7a9b8 - 仅在队列准备好时才打开音频/图像输入流。感谢 @freddyaboulton!
  • #9173 66349fe - 流媒体指南。感谢 @freddyaboulton!
  • #9185 2daf3d1 - 通过 max_length 参数为 gr.TextBox() 组件添加了 textareainput HTML 元素的 maxlength 属性处理。感谢 @WH-Yoshi!
  • #8959 a0aac66 - 为 launch() 添加 strict_cors 参数。感谢 @abidlabs!
  • #9052 f3652eb - 视频画廊。感谢 @dawoodkhan82!
  • #9213 ab4580b - 移除所有组件后面的灰色背景。感谢 @hannahblair!
  • #9073 0d8a358 - 将 gr.Audio 中的默认 format 设置为 None 以避免不必要的预处理。感谢 @abidlabs!
  • #9130 864cd0f - 对于 Lite 上的 ffmpeg 使用,引发 WasmUnsupportedError。感谢 @whitphx!
  • #8797 6e6818c - 5.0 版弃用。感谢 @abidlabs!
  • #9132 5cedf16 - 弃用为 gr.Code 值传递元组。感谢 @freddyaboulton!
  • #8941 97a7bf6 - 5.0 的流式输入。感谢 @freddyaboulton!
  • #9150 80c966a - IP 检查上的 DNS 解析器。感谢 @aliabid94!
  • #9175 e6d456a - 将深色模式颜色主题从 gray 更改为 zinc。感谢 @hannahblair!
  • #8884 3408dba - 将 IP 地址替换为特定机器的哈希值。感谢 @abidlabs!

修复

  • #9189 ab142ee - 修复 curl API 中的序列化错误。感谢 @freddyaboulton!

4.44.1

新功能

  • #9320 98cbcae - 杂项:修复文档样式。感谢 @imba-tjd!

4.44.0

新功能

  • #9302 ac2c015 - 文件格式白名单。感谢 @aliabid94!
  • #9276 8362a10 - 修复所有滚动条。感谢 @aliabid94!

修复

  • #9188 8f8e1c6 - 修复函数具有 js 时的多重触发错误。感谢 @freddyaboulton!
  • #9279 fb5845c - 将 starlette.Request 与 PredictBody 分离。仅在新的 PredictBodyInternal 对象中设置。感谢 @freddyaboulton!
  • #9267 ecf9137 - 为 gr.render 创建的组件添加 root_url。感谢 @freddyaboulton!

4.43.0

新功能

  • #9160 8f5a895 - 修复原生绘图 lite 演示。感谢 @aliabd!
  • #9185 2daf3d1 - 通过 max_length 参数为 gr.TextBox() 组件添加了 textareainput HTML 元素的 maxlength 属性处理。感谢 @WH-Yoshi!
  • #9187 5bf00b7 - 使所有组件兼容 SSR。感谢 @pngwn!
  • #9225 5f2e047 - 为 gradio.Image 组件添加一个“None”选项以禁用 image_m… 。感谢 @GeeMoose!

修复

  • #9242 d0e93d7 - 修复 component_meta.py 中 create_or_modify_pyi read_text Windows 问题。感谢 @SmirkingKitsune!
  • #9189 ab142ee - 修复 curl API 中的序列化错误。感谢 @freddyaboulton!
  • #9277 d9c4c86 - 在 requirements.txt 中将 fastapi 版本限制为 <0.113.0。感谢 @abidlabs!

4.42.0

新功能

  • #9128 747013b - 允许在 gr.DataFrame 中访问选定值的整行。感谢 @abidlabs!
  • #8935 f6b2b97 - 使用 Lite 服务器的虚假主机初始化客户端。感谢 @whitphx!
  • #9031 04b7d32 - 允许在 gr.Image 和多模态文本框中拖放替换图像。感谢 @hannahblair!
  • #8930 41d5ab9 - 为 Image 和 ImageEditor 添加 placeholder 参数以替换上传图像文本。感谢 @hannahblair!
  • #9023 87e3537 - 为 gr.JSON 添加高度参数。感谢 @hannahblair!
  • #9013 5350f1f - 为 Chatbot 添加复制所有消息按钮。感谢 @hannahblair!
  • #9118 e1c404d - 设置所有包的 npm 预览。感谢 @pngwn!
  • #9102 efdc323 - 初始 SSR 重构。感谢 @pngwn!

修复

  • #9078 1a9d729 - 在 HuggingFaceDatasetSaver._deserialize_components 中捕获 OSErrors。感谢 @davidberenstein1957!
  • #9088 96f8ffa - 当发生故障时,为自定义组件构建和安装命令设置非零退出代码。感谢 @freddyaboulton!
  • #9161 173c7b8 - Chatbot 图像大小和列表修复。感谢 @dawoodkhan82!
  • #9151 f1ef94a - 在浏览器中打开媒体类型文件。感谢 @aliabid94!
  • #9148 8715f10 - 允许 gr.Request 与 ZeroGPU 配合使用。感谢 @abidlabs!
  • #9093 60650d8 - 样本更改时将 Dataset 页面重置为 0。感谢 @abidlabs!
  • #9116 ba6322e - 修复图像高度内容适配。感谢 @hannahblair!
  • #9079 d6dc384 - 为事件监听器添加更多类型提示。感谢 @JackismyShephard!
  • #9119 30b5d6f - 修复 ChatInterface 多模态错误。感谢 @freddyaboulton!
  • #8987 7b288cf - 修复 Dataset 的意外渲染。感谢 @Col0ring!
  • #9089 508ac84 - 在 downloadbutton 后处理中设置 orig_name。感谢 @freddyaboulton!
  • #8951 6e7d9e5 - 处理 OAuth 过多重定向问题。感谢 @Wauplin!

4.41.0

新功能

  • #8968 38b3682 - FRP 客户端下载和使用方面的改进。感谢 @abidlabs!
  • #8965 d30432e - 强化 CI。感谢 @pngwn!
  • #8972 d4c503a - 类型提示修正。感谢 @sthemeow!
  • #8964 bf6bbd9 - 为 gr.Image 和 gr.Gallery 添加最小化/最大化按钮。感谢 @hannahblair!
  • #9059 981731a - 修复 Windows 上的不稳定测试和测试。感谢 @abidlabs!
  • #9021 360350c - 小修复。感谢 @aliabid94!
  • #9064 4ba7b23 - 改进绘图指南,为绘图添加双击功能。感谢 @aliabid94!
  • #8975 3feea64 - 防止 Model3D 溢出。感谢 @hannahblair!
  • #8967 2f89877 - 为下载的文件设置 content_disposition_typemedia_type。感谢 @aliabid94!
  • #8958 4ff91a3 - 修复了一些文档字符串,特别是针对 show_progress 参数。感谢 @abidlabs!
  • #9020 08b5159 - 对 is_in_or_equal 进行了一些调整。感谢 @freddyaboulton!

修复

  • #8962 c68eefb - 修复:httpx 超时导致 gradio 在启动时失败。感谢 @rsamborski!
  • #8847 4d8a473 - 重构 ChatInterface 以使用 Chatbot 而不是 gr.State 变量。感谢 @freddyaboulton!
  • #9054 9fa635a - 修复多模态 ChatInterface API 错误。感谢 @freddyaboulton!
  • #8847 4d8a473 - 修复:js 客户端的错误命名参数检查。感谢 @freddyaboulton!
  • #9011 0978de8 - 如果类型提示为 Request | None,则传递 gr.Request。感谢 @abidlabs!
  • #9053 8b33393 - 修复 gr.Interface 中的 show_progress。感谢 @abidlabs!

4.40.0

新功能

  • #8954 5010e95 - 为 JSON 添加 overflow: wrap 以捕获 xs 设备宽度中的溢出。感谢 @hannahblair!
  • #8932 600c97c - 允许使用 show_indices 参数将 JSON 显示为列表或字典。感谢 @hannahblair!
  • #8929 3539787 - 为 gr.JSON 添加行号和折叠/展开逻辑。感谢 @hannahblair!
  • #8862 ac132e3 - 支持在 Python 客户端中使用自定义身份验证机制、超时和其他 httpx 参数。感谢 @valgai!
  • #8947 96d36d7 - 恢复绘图标签角度。感谢 @aliabid94!
  • #8948 f7fbd2c - 为 gradio-client 提高 websockets 版本上限。感谢 @evanscho!
  • #8907 9b42ba8 - 更新指南,特别是绘图。感谢 @aliabid94!
  • #8888 70a0c56 - 添加了对 TokenClassificationPipeline 的支持。感谢 @cswamy!
  • #8950 7e997a8 - 修复带有虚假 OAuth 的本地应用运行。感谢 @Wauplin!
  • #8867 f8ccb5e - 使 update_root_in_config 原子化。感谢 @abidlabs!
  • #8900 de997e6 - 添加了通过 Video 组件中的 watermark 参数为视频添加水印的功能。感谢 @meg-huggingface!

修复

  • #8949 1e16f67 - 修复 gr.JSON 和 gr.Code 中的选中图标。感谢 @hannahblair!
  • #8899 20444f9 - 修复 Chatbot 多模态示例。感谢 @dawoodkhan82!
  • #8933 5f9b8d0 - 修复惰性缓存。感谢 @abidlabs!
  • #8879 67c08bf - 修复 iOS 中的文件上传。感谢 @hannahblair!
  • #8905 4b14ea8 - 允许在 iOS 中使用 gr.File 的文件扩展名。感谢 @hannahblair!
  • #8927 223688b - 修复 gradio/utils 包中的 Could not resolve "virtual:component-loader" 问题。感谢 @benzler!
  • #8934 8204425 - 修复 JSON 组件序列化错误。感谢 @freddyaboulton!
  • #8931 4c2d37d - 为 gr.Code 行号添加背景。感谢 @hannahblair!

4.39.0

新功能

  • #8832 e75f2ca - 修复预发布版本构建。感谢 @pngwn!
  • #8618 aa4b7a7 - 改进文档中参数表的样式。感谢 @abidlabs!
  • #8745 4030f28 - 允许更新 gr.Examples 的数据集。感谢 @abidlabs!
  • #8757 6073736 - 在文档中记录 FileData 类。感谢 @hannahblair!
  • #8846 76c1759 - 添加空间头部。感谢 @pngwn!
  • #8804 1d09925 - 修复 Lite 的。感谢 @whitphx!
  • #8807 a238af4 - 重构绘图以放弃 altair 并直接使用 vega.js。感谢 @aliabid94!
  • #8806 a3d23b4 - 为 gr.Audiogr.Video 添加 loop 参数。感谢 @abidlabs!
  • #8856 5622331 - 扩展 pyright 以覆盖测试。感谢 @abidlabs!
  • #8851 914b193 - 为 gr.Markdown 添加复制按钮。感谢 @hannahblair!
  • #8837 0d76169 - 升级 pyright==1.1.372。感谢 @abidlabs!
  • #8816 9ee6839 - 更改 submit + predictdata 参数的可选性。感谢 @hannahblair!
  • #8809 7f41567 - 在检查用户提供的分析密钥时使用恒定时间比较。感谢 @abidlabs!
  • #8817 34510db - 允许警报模态框中包含 HTML。感谢 @abidlabs!
  • #8803 e1a4040 - 确保所有上传组件具有一致的上传区域。感谢 @pngwn!
  • #8821 cea3bf9 - 修复 statustracker 和 markdown 的依赖循环。感谢 @aliabd!
  • #8774 2d179f6 - 将 Wasm 模式下 gr.Plot 的默认格式设置为 png。感谢 @whitphx!
  • #8775 e36bab7 - 重构 loadPyodide 类型。感谢 @whitphx!

修复

  • #8854 d1f0441 - 在整个代码库中使用协变容器类型,并为我们的演示添加类型。感谢 @abidlabs!
  • #8818 2de9a97 - 重构组件,使代码更简单并修复了 Playground 模式的错误。感谢 @whitphx!
  • #8799 61bb588 - 从 Lite 中移除 Pydantic v2 补丁。感谢 @whitphx!
  • #8822 3a81fb2 - Latex 渲染修复。感谢 @dawoodkhan82!
  • #8865 2f630ab - Chatbot 示例滚动修复。感谢 @dawoodkhan82!
  • #8820 5050b36 - 修复:JS 客户端的错误命名参数检查。感谢 @JacobLinCool!
  • #8836 7e8c829 - 为 gr.Audiogr.Image 添加 .input() 事件。感谢 @abidlabs!
  • #8802 7b19474 - 确保 ImageEditor 画笔颜色可以通过 gr.update 更新。感谢 @pngwn!
  • #8852 16b8200 - 修复 gr.Image 高度不一致问题。感谢 @hannahblair!

4.38.1

新功能

  • #8766 2b4636e - 修复助手聊天机器人气泡的宽度。感谢 @pngwn!

4.38.0

亮点

支持聊天机器人中的消息格式 💬 (#8422 4221290)

gr.Chatbotgr.ChatInterface 现在支持 Messages API,该 API 与 Hugging Face Text Generation Inference、OpenAI 的聊天完成 API 和 Llama.cpp 服务器等 LLM API 提供商完全兼容。

围绕这些 LLM 解决方案构建 Gradio 应用程序现在变得更加容易!

gr.Chatbotgr.ChatInterface 现在有一个 type 参数,可以接受两个值——'tuples''messages'。如果设置为 'tuples',则预期为默认的聊天机器人数据格式。如果设置为 'messages',则预期为包含 contentrole 键的字典列表。请参见下方——

def chat_greeter(msg, history):
    history.append({"role": "assistant", "content": "Hello!"})
    return history

此外,gradio 现在公开了一个 gr.ChatMessage 数据类,您可以用于 IDE 类型提示和自动完成。

image

聊天机器人中的工具使用 🛠️

Gradio Chatbot 现在可以本地显示 Agent 和思维链工作流中常见的工具使用和中间思考!

如果您使用新的“messages”格式,只需添加一个带有包含 title 键和 value 的字典的 metadata 键。这将在可展开的消息框中显示助手消息,以显示工具或中间步骤的结果。

import gradio as gr
from gradio import ChatMessage
import time

def generate_response(history):
    history.append(ChatMessage(role="user", content="What is the weather in San Francisco right now?"))
    yield history
    time.sleep(0.25)
    history.append(ChatMessage(role="assistant",
                               content="In order to find the current weather in San Francisco, I will need to use my weather tool.")
                               )
    yield history
    time.sleep(0.25)

    history.append(ChatMessage(role="assistant",
                               content="API Error when connecting to weather service.",
                              metadata={"title": "💥 Error using tool 'Weather'"})
                  )
    yield history
    time.sleep(0.25)

    history.append(ChatMessage(role="assistant",
                               content="I will try again",
                              ))
    yield history
    time.sleep(0.25)

    history.append(ChatMessage(role="assistant",
                               content="Weather 72 degrees Fahrenheit with 20% chance of rain.",
                                metadata={"title": "🛠️ Used tool 'Weather'"}
                              ))
    yield history
    time.sleep(0.25)

    history.append(ChatMessage(role="assistant",
                               content="Now that the API succeeded I can complete my task.",
                              ))
    yield history
    time.sleep(0.25)

    history.append(ChatMessage(role="assistant",
                               content="It's a sunny day in San Francisco with a current temperature of 72 degrees Fahrenheit and a 20% chance of rain. Enjoy the weather!",
                              ))
    yield history


with gr.Blocks() as demo:
    chatbot  = gr.Chatbot(type="messages")
    button = gr.Button("Get San Francisco Weather")
    button.click(generate_response, chatbot, chatbot)

if __name__ == "__main__":
    demo.launch()

tool-box-demo

感谢 @freddyaboulton!

新功能

  • #8683 a92c3e8 - 警告虚假凭证。感谢 @Paillat-dev!
  • #8743 ee497d5 - 当请求带有 cookie 时执行 CORS 验证。感谢 @abidlabs!
  • #8744 b736c8d - 重构 gr.ParamViewer 以使用 HTML <details> 和其他调整。感谢 @abidlabs!
  • #8665 3b8238c - 添加 c/cpp 代码支持。感谢 @ginazhouhuiwu!
  • #8713 e3c7079 - 时间范围组件。感谢 @aliabid94!
  • #8705 280a3f4 - GRADIO_ALLOWED_PATHS & GRADIO_BLOCKED_PATHS 逗号分隔的环境变量…。感谢 @cocktailpeanut!
  • #8733 fb0daf3 - 改进 gr.Examples:添加事件作为属性并记录它们,添加 sample_labelsvisible 属性。感谢 @abidlabs!
  • #8750 5e36144 - 添加消息格式和 LLM 代理指南。感谢 @freddyaboulton!
  • #8687 bc1d45d - Model3D 点云和线框显示模式。感谢 @dawoodkhan82!

修复

  • #8699 012da05 - 确保 JS 客户端的 status_callback 功能正常工作并改进状态消息。感谢 @hannahblair!
  • #8763 c1ecfde - 8394 df 隐藏项。感谢 @pngwn!
  • #8505 2943d6d - 添加 Timer 组件。感谢 @aliabid94!
  • #8715 a6b3c6c - 确保 @gradio/clientsubmit 迭代器按预期释放。感谢 @pngwn!
  • #8758 26cdd0f - 恢复聊天机器人样式。感谢 @pngwn!
  • #8658 0482453 - Chatbot LaTeX 崩溃修复。感谢 @dawoodkhan82!
  • #8716 e834d30 - 确保 @gradio/client 始终返回正确的数据。感谢 @pngwn!
  • #8737 31a876d - 修复图像的“分享到社区”按钮。感谢 @hannahblair!
  • #8719 d15ada9 - 修复多模态文本框自定义组件。感谢 @freddyaboulton!
  • #8714 1b5b5b0 - 在 JS 客户端中绑定 fetchstream。感谢 @hannahblair!
  • #8677 c946c6f - 允许向 gr.ChatInterface 提供带有事件的自定义 gr.Chatbot。感谢 @abidlabs!
  • #8748 a9307c6 - Chatbot 生成滚动和点击修复。感谢 @freddyaboulton!
  • #8720 936c713 - 在指南和 API 视图页面中记录身份验证,并对 Blocks.config 对象进行类型化。感谢 @abidlabs!

4.37.2

新功能

  • #8632 ea6482c - 从 gr.Chatbot 文档页面移除 chatbot_multimodal 演示。感谢 @abidlabs!
  • #8649 4b6c8b1 - 确保 JS 客户端 handle_file 中处理 File 对象。感谢 @hannahblair!
  • #8604 b6fa6b5 - 添加 .on().then().success() 以及 gr.EventData 子类的文档。感谢 @abidlabs!

修复

  • #8655 3896398 - 确保聊天机器人上的复制按钮在适当时候显示。感谢 @pngwn!
  • #8645 9933e53 - 更新 file_explorer.py 以支持 str 类型的 height。感谢 @magical-l!
  • #8608 c12f82a - Bugfix: 为 gr.MultimodalTextbox 添加 file_count 参数。通过将 file_count 设置为 "multiple" 可以上传多个文件。默认为 "single" 以保留之前的行为。感谢 @freddyaboulton!
  • #8631 9b8840a - 确保聊天机器人消息对屏幕阅读器可见。感谢 @hannahblair!
  • #8637 c348392 - 多模态文本框按钮对齐。感谢 @dawoodkhan82!

4.37.1

修复

  • #8610 9204d86 - 添加清理状态和文件资源的指南。感谢 @freddyaboulton!

4.37.0

新功能

  • #8131 bb504b4 - gr.Chatbot() 中的 Gradio 组件。感谢 @dawoodkhan82!
  • #8489 c2a0d05 - 控制错误、信息、警告的显示。感谢 @freddyaboulton!
  • #8571 a77877f - 首次加载性能优化。感谢 @baojianting!
  • #8607 c7cd0a0 - 确保聊天机器人背景与其他组件一致。感谢 @pngwn!
  • #8555 7fc7455 - 支持聊天机器人中的 HTML。感谢 @pngwn!
  • #8590 65afffd - 修复多模态聊天界面外观。感谢 @aliabid94!
  • #8603 affce4c - 修复 altair 上的调整器。感谢 @aliabid94!
  • #8580 797621b - 改进了绘图渲染以在主题上匹配。感谢 @aliabid94!/n 亮点: gr.Plot、gr.BarPlot、gr.LinePlot、gr.ScatterPlot 将有视觉变化,包括颜色和宽度尺寸的更改。
  • #8520 595ecf3 - 为自定义组件 gradio.config.js 文件添加构建目标选项。感谢 @pngwn!
  • #8593 d35c290 - 添加了更多关于在聊天机器人中使用组件的文档。感谢 @abidlabs!
  • #8609 36b2af9 - 将 gradio 版本检查从打印语句更改为警告。感谢 @gdevakumar!
  • #8600 7289c4b - 添加凭证:包含和 Cookie 头部以防止 401 错误。感谢 @yinkiu602!
  • #8488 b03da67 - 监控方面的微小更改。感谢 @freddyaboulton!
  • #8569 6f99a02 - 升级 pyodide 0.26。感谢 @whitphx!
  • #8565 fd5aab1 - 移除 routes.py 中重复的代码。感谢 @sadra-barikbin!
  • #8529 d43d696 - feat: 关于 File 组件 file_count 参数的异常处理。感谢 @young-hun-jo!
  • #8528 2b0c157 - 为 Markdown 组件添加了可选的 height 和溢出滚动条。感谢 @ShruAgarwal!
  • #8516 de6aa2b - 为文档添加辅助类。感谢 @aliabd!
  • #8522 bdaa678 - 添加 handle_file 文档。感谢 @pngwn!

修复

  • #8599 ca125b7 - 修复 Jupyter Notebook 和有状态演示的重新加载模式。感谢 @freddyaboulton!
  • #8521 900cf25 - 确保前端函数在不返回值时也能工作。感谢 @pngwn!
  • #8594 530f8a0 - 聊天机器人组件调整。感谢 @pngwn!
  • #8530 d429690 - 修复 fastapi /docs 的请求序列化。感谢 @zhzLuke96!
  • #8589 34430b9 - 在 gr.Image 预处理中正确处理 GIF。感谢 @abidlabs!
  • #8506 7c5fec3 - 使用根 URL 进行监控 URL。感谢 @abidlabs!
  • #8524 546d14e - 添加测试 + 演示。感谢 @pngwn!
  • #8588 1e61644 - 将 deploy_space_action.yaml 移动到正确位置。感谢 @abidlabs!
  • #8543 a4433be - 通过在事件定义中设置 show_progress='minimal'show_progress='hidden' 来禁用生成器橙色进度动画。这是一个小的视觉破坏性更改,但它与 show_progress 参数的预期行为更一致。同时将 show_progress 添加到 gr.Interfacegr.ChatInterface。感谢 @freddyaboulton!
  • #8579 bc5fccf - 允许 gr.loadgr.Blocks 内部自动工作。感谢 @abidlabs!
  • #8573 56af40f - 修复 favicon_path 工作错误。感谢 @ShruAgarwal!
  • #8548 7fc0f51 - 通过在客户端实现 close 修复重新加载模式。感谢 @freddyaboulton!
  • #8531 88de38e - 修复 Windows 上的自定义组件。感谢 @freddyaboulton!
  • #8581 a1c21cb - 修复数据集更新。感谢 @abidlabs!
  • #8537 81ae766 - 网站和文档的许多小修复。感谢 @aliabd!

4.36.1

新功能

  • #8491 ffd53fa - 移除损坏的指南重定向。感谢 @aliabd!
  • #8499 c5f6e77 - 在主题更改时破坏缓存。感谢 @aliabid94!

修复

  • #8504 2a59bab - 修复TabbedInterface仅触发第一个界面事件的bug。感谢 @freddyaboulton!

4.36.0

新功能

  • #8478 73e1108 - 为 Gradio 应用程序添加监控仪表板,可用于查看使用情况。感谢 @aliabid94!

4.35.0

新功能

  • #8481 41a4493 - 修复客户端不稳定的测试。感谢 @abidlabs!
  • #8483 e2271e2 - @gradio/client 的文档。感谢 @pngwn!
  • #8485 f8ebace - 确保在调用 predict 时内部报告所有状态。感谢 @pngwn!

4.34.0

新功能

  • #8370 48eeea4 - 重构取消逻辑以使用 /cancel。感谢 @freddyaboulton!
  • #8460 8628899 - 支持 Api Recorder 中的 Bash。感谢 @aliabd!
  • #8417 96d8de2 - 为 File 组件添加删除事件。感谢 @pngwn!
  • #8444 2cd02ff - 从 Python 客户端中移除已弃用的参数。感谢 @abidlabs!
  • #8473 8ca93d4 - 改进 api recorder 的设计。感谢 @aliabd!
  • #8445 5c8915b - 在查看 API 页面添加 cURL 并添加专用指南。感谢 @abidlabs!

修复

  • #8477 d5a9604 - 修复 js 客户端打包。感谢 @pngwn!
  • #8451 9d2d605 - 将客户端提交 API 更改为 AsyncIterable 并支持更多平台。感谢 @pngwn!
  • #8462 6447dfa - 改进 JS 客户端中的文件处理。感谢 @hannahblair!
  • #8439 63d36fb - 处理 JS 客户端中使用 state 的 gradio 应用程序。感谢 @hannahblair!

4.33.0

新功能

  • #8429 d393a4a - 修复渲染和 on 的类型提示。感谢 @freddyaboulton!
  • #8377 341844f - 点击预览聊天机器人中的图片。感谢 @dawoodkhan82!
  • #8455 a970589 - 修复多模态文本框占位符。感谢 @dawoodkhan82!
  • #8446 4a55157 - state.change 监听器,带深度哈希检查。感谢 @aliabid94!

修复

  • #8400 33c8081 - 在提取视图 API 页面参数名称时处理特殊参数。感谢 @abidlabs!
  • #8369 4795c6e - 修复某些主题的多模态文本框样式。感谢 @dawoodkhan82!
  • #8440 83bdf5c - 添加对 numpy~=2.0 的支持。感谢 @freddyaboulton!

4.32.2

修复

  • #8431 9909b28 - 修复空间上的滚动。感谢 @pngwn!

4.32.1

新功能

  • #8415 227de35 - 修复空间加载错误。感谢 @aliabid94!

4.32.0

新功能

  • #8401 d078621 - 在 JS 文档中添加 CDN 安装。感谢 @hannahblair!
  • #8243 55f664f - 为渲染块添加事件监听器支持。感谢 @aliabid94!
  • #8398 945ac83 - 改进渲染。感谢 @aliabid94!
  • #8299 ab65360 - 允许 JS 客户端与经过身份验证的空间协作 🍪。感谢 @hannahblair!
  • #8386 e738e26 - 包含如何从他人自定义组件仓库开始的说明。感谢 @freddyaboulton!
  • #8363 94a1143 - 在预检头中添加 allow-credentials。感谢 @abidlabs!
  • #8403 5efd35c - 可编辑文档。感谢 @aliabd!
  • #8355 33e8bab - 通过 show_inline_category 参数启用在 HighlightedText 中隐藏内联类别。感谢 @xu-song!
  • #8409 8028c33 - 渲染装饰器文档。感谢 @aliabid94!
  • #8378 3fbf2e8 - chore: 更新 docs.py。感谢 @eltociear!

修复

  • #8408 e86dd01 - 如果状态在渲染中创建,则连接心跳。同时修复配置清理bug #8407。感谢 @freddyaboulton!
  • #8258 1f8e5c4 - 改进 JS 客户端中的 URL 处理。感谢 @hannahblair!
  • #8376 aebd2e9 - Model3D 右手坐标系。感谢 @dylanebert!
  • #8381 24ab22d - 修复编码错误。感谢 @xu-song!
  • #8364 6a1b58c - 添加 --table-text-color 变量以修复 Examples 中的正文文本。感谢 @hannahblair!
  • #8284 2d705bc - 为 gr.Accordion 添加主体颜色。感谢 @hannahblair!
  • #8371 a373b0e - 在 python 客户端文件上传中设置 orig_name。感谢 @freddyaboulton!
  • #8385 97ac79b - 修复重新加载模式相等性检查中的 bug。更好的状态变量相等性转换。感谢 @freddyaboulton!
  • #8372 89d6a17 - 更改状态跟踪器的 z-index。感谢 @hannahblair!

4.31.5

新功能

  • #8311 35905c5 - 清理 Markdown 样式。感谢 @aliabid94!

修复

  • #8339 4dc7fa7 - 修复 Chatbot、Dataframe、Markdown 自定义组件。感谢 @freddyaboulton!
  • #8336 f138b41 - 如果无法导入 JsonValue,则使用 Any。感谢 @freddyaboulton!
  • #8334 0236b1a - 修复:防止在删除时触发 gr.File.select。感谢 @gtm-nayan!
  • #8341 82ba397 - 添加缺失的 orig_name(#8334 的后续)。感谢 @gtm-nayan!
  • #8322 47012a0 - 确保客户端正确处理所有二进制数据。感谢 @Saghen!

4.31.4

新功能

  • #8318 9e31697 - 添加了图像到图像的 diffusers 管道。感谢 @cswamy!

修复

4.31.3

新功能

  • #8229 7c81897 - chore(deps): 更新依赖 esbuild 到 ^0.21.0。感谢 @renovate!
  • #8279 4350215 - 在自定义组件加载状态中链接到故障排除指南。感谢 @freddyaboulton!

修复

  • #8292 ee1e294 - 确保 JSON 组件输出在后处理中得到正确处理。感谢 @freddyaboulton!
  • #8296 929d216 - 连接空间时,如果存在 hf_token,则始终创建 jwt。感谢 @pngwn!

4.31.2

修复

  • #8285 7d9d8ea - 使用正确的查询参数将 jwt 传递给心跳事件。感谢 @pngwn!

4.31.1

新功能

  • #8264 a9e1a8a - 使客户端中的异常更具体。感谢 @abidlabs!
  • #8263 de52f0e - 减少 Gradio 中收集的分析数据。感谢 @abidlabs!

修复

  • #8276 0bf3d1a - 修复客户端无法连接到具有自签名证书的应用程序的 bug。感谢 @freddyaboulton!
  • #8260 7e976fd - 作业取消时发送 ProcessCompleted 消息。感谢 @freddyaboulton!
  • #8261 719d596 - 修复状态跟踪器是指针事件目标的问题。感谢 @freddyaboulton!
  • #8272 fbf4edd - 确保客户端适用于私人空间。感谢 @pngwn!

4.31.0

新功能

  • #8226 892181b - chore(deps): 更新依赖 @types/prismjs 到 v1.26.4。感谢 @renovate!
  • #8254 0a6f0a7 - 修复分析中的自定义组件检测逻辑。感谢 @freddyaboulton!
  • #8244 52dac63 - 为 gr.ChatInterface 添加 examples_per_page,并允许隐藏 gr.Interface 中的 clear_btn。感谢 @abidlabs!
  • #8219 32d915a - 对使用
     标签指定的文件内容应用 clean_indent()。感谢 @whitphx!
  • #8110 5436031 - 渲染装饰器 2。感谢 @aliabid94!
  • #8197 e09b4e8 - 添加支持将关键字参数传递给 JS 客户端中的 data。感谢 @hannahblair!
  • #8236 bf909bd - 更改 MultimodalTextbox 的上传图标。感谢 @dawoodkhan82!

修复

  • #8245 c562a3d - 从 python 客户端取消服务器进度。感谢 @freddyaboulton!
  • #8242 05fe491 - 允许带有 .success() 的空间被 gr.load-ed。感谢 @abidlabs!
  • #8252 22df61a - 客户端节点修复。感谢 @pngwn!
  • #8227 9ece050 - 修复在重新加载模式下更新组件值不会在 UI 中显示的 bug。感谢 @freddyaboulton!

4.29.0

亮点

在 gr.load 中支持自定义组件 (#8200 72039be)

现在可以通过 gr.load 加载带有自定义组件的演示。

自定义组件必须安装在您的系统并导入到您的 python 会话中。

import gradio as gr
import gradio_pdf

demo = gr.load("freddyaboulton/gradiopdf", src="spaces")

if __name__ == "__main__":
    demo.launch()
image

感谢 @freddyaboulton!

新功能

  • #8121 f5b710c - chore(deps): 更新依赖 eslint 到 v9。感谢 @renovate!
  • #8174 a81e369 - 移除 js/app/package.json 中不再需要的 hatch 安装。感谢 @whitphx!
  • #8209 b9afe93 - 重命名 eventSource_Factoryfetch_implementation。感谢 @hannahblair!
  • #8109 bed2f82 - 实现 JS 客户端测试。感谢 @hannahblair!
  • #8106 d0a759f - 在 /dev/reload 流中传递错误状态。感谢 @freddyaboulton!
  • #7855 611c927 - Lite wheel 优化。感谢 @whitphx!
  • #8211 91b5cd6 - 移除冗余的事件源逻辑。感谢 @hannahblair!
  • #8127 24b2286 - 允许在 ImageEditor 上设置画布大小。感谢 @pngwn!
  • #8205 cfc272f - 在 Lite 上设置 show_api 标志。感谢 @whitphx!
  • #8052 1435d1d - 扩展 Interface.from_pipeline() 以支持 Lite 上的 Transformers.js.py 管道。感谢 @whitphx!
  • #8189 68dcae5 - 使用 _website 中代码的工作区版本。感谢 @aliabd!

修复

  • #8179 6a218b4 - 重构上传为类方法 + 将客户端传递到每个组件中。感谢 @pngwn!
  • #8181 cf52ca6 - 确保通过 SSE 协议连接到私有 HF 空间。感谢 @hannahblair!
  • #8169 3a6f1a5 - 仅在需要时连接心跳。感谢 @freddyaboulton!
  • #8118 7aca673 - 为 Node.js 和浏览器环境添加 eventsource polyfill。感谢 @hannahblair!
  • #8158 5671ff1 - 修复:在 reload.py 中正确处理 SIGINT,blocks.py 中 block_thread 的单一入口。感谢 @Tiger3018!
  • #8180 449d0e6 - 重构分析以不使用 api.gradio.app。感谢 @freddyaboulton!
  • #8182 39791eb - 将客户端中的 sse 调用从异步转换为同步。感谢 @abidlabs!
  • #8170 08b4e61 - 为 /custom_component 路由添加 ETag 以控制浏览器缓存。感谢 @freddyaboulton!
  • #8194 2471f79 - 仅在 python 文件更改时运行 python 重新加载。感谢 @jameszhou02!
  • #8204 376dfaa - 在 Lite 上指定 fastapi 版本以避免 Pyodide 尚不支持的 ujson 安装。感谢 @whitphx!

4.28.3

修复

  • #8144 7ba2780 - 修复 @gradio/preview 缺失的依赖。感谢 @pngwn!

4.28.2

修复

  • #8142 44eb8ac - 确保 @gradio/preview dist 文件已发布。感谢 @pngwn!

4.28.1

修复

4.28.0

亮点

设置文件上传限制 (#7909 2afca65)

我们添加了 max_file_size 参数到 launch(),用于限制上传到服务器的文件大小。此限制适用于每个单独的文件。此参数可以指定为字符串或整数(对应于以字节为单位的大小)。

以下代码片段将最大文件大小设置为 5 兆字节。

import gradio as gr

demo = gr.Interface(lambda x: x, "image", "image")

demo.launch(max_file_size="5mb")
# or
demo.launch(max_file_size=5 * gr.FileSize.MB)

max_file_size_upload

现在可以清除错误状态

当组件遇到错误时,现在可以通过单击组件右上角的 x 图标来清除 UI 中显示的错误状态。这适用于所有类型的错误,无论是在 UI 还是服务器中引发的。

error_modal_calculator

感谢 @freddyaboulton!

新功能

  • #8092 659d3c5 - chore(deps): 更新依赖 iframe-resizer 到 v4.3.11。感谢 @renovate!
  • #8067 0fb058e - 修复 Lite 自定义元素解析器,使其在入口文件已指定时不再添加 .code 选项。感谢 @whitphx!
  • #8051 d665f40 - 修复自定义 JS 函数调用器,将依赖项的输出连接到输入作为参数。感谢 @whitphx!
  • #8056 2e469a5 - 使用键在重新加载之间保留值。感谢 @aliabid94!
  • #7646 450b8cc - 重构 JS 客户端。感谢 @hannahblair!
  • #8115 595ebf7 - 缓存 app.submit() 的错误并在前端显示。感谢 @whitphx!
  • #8084 1c99570 - 调整 View Api 容器的 z-index。感谢 @hannahblair!
  • #8107 cbf2d4e - 修复 #8105 中的拼写错误。感谢 @abidlabs!
  • #8100 cbdfbdf - 将 ruff 测试依赖升级到 ruff==0.4.1。感谢 @abidlabs!
  • #6787 15a7106 - 允许自定义组件作者提供自定义 vite 插件和 svelte 预处理器。感谢 @pngwn!
  • #8080 568eeb2 - 修复 gr.Interface.from_pipeline() 以允许音频上传并正确显示分类标签。感谢 @whitphx!
  • #8040 32cfa61 - 从 gradio cc publish 中删除自动创建的文件和其他调整。感谢 @freddyaboulton!
  • #8117 6864035 - 向 gr 请求添加会话哈希。感谢 @freddyaboulton!
  • #8061 17e83c9 - 文档重组和介绍页面。感谢 @aliabd!
  • #8065 5bf61cb - 在不需要时隐藏 WaveformControls 中的滚动条。感谢 @whitphx!
  • #8130 0efd72e - 为自定义组件添加分析。感谢 @freddyaboulton!
  • #8087 b50a67d - 修复 GRADIO_CACHE_EXAMPLES 环境变量,使其仅在提供了 fnoutputs 参数时生效。感谢 @abidlabs!
  • #8093 ac30e07 - [HF OAuth] 如果 oauth 令牌过期,则注销用户。感谢 @Wauplin!
  • #8063 72f4ca8 - 修复 gr.Label 样式和可访问性标记。感谢 @whitphx!
  • #8105 006fa3c - 改进 BlocksInterfaceChatInterfacejs 参数的文档。感谢 @abidlabs!
  • #8054 176a8a4 - 修复 Label 组件的值更改检测,以避免无限循环调度更改事件。感谢 @whitphx!
  • #8030 91a7a31 - 在后端按会话存储配置。感谢 @aliabid94!

修复

  • #8077 d7461aa - 修复 gradio/components/code.py 中的编码问题。感谢 @3210448723!
  • #8075 5d9db89 - 修复导致热重载的问题 (#8070)。感谢 @zolgear!
  • #8041 937c858 - 使用 orjson 序列化包含 np.array 的字典。感谢 @whitphx!
  • #8097 487db7b - 遵循 launch() 中的 auth_dependency 参数。感谢 @abidlabs!
  • #8133 0a42e96 - 允许用户在使用自定义组件时模板化 ImageEditor。感谢 @pngwn!
  • #8066 624f9b9 - 将 gradio 开发工具作为本地依赖项,而不是打包。感谢 @pngwn!

4.27.0

亮点

焕然一新的 ImageEditor

ImageEditor 组件已更新,使其更加用户友好和可靠。

此版本包含对 ImageEditor 组件的一系列改进,对于构建实时图像编辑应用程序或复杂图像处理管道的用户尤其有用。

  • 更简洁紧凑的界面。
  • 新增选项可隐藏图层控件,提供更简洁的 UI。
  • 程序化更新源时的稳定性提升。
  • 改进了对 inputuploadchangeapply 事件的支持。
  • 支持通过 change 事件进行实时绘图。
  • 大量 bug 修复!

output

新功能

  • #7998 06bdf0e - 恢复聊天机器人格式。感谢 @aliabid94!
  • #7986 05f935c - GRADIO_SHARE 环境变量。感谢 @cocktailpeanut!
  • #8062 cecd6e4 - 更新依赖 iframe-resizer 到 v4.3.10。感谢 @renovate!
  • #8042 92139f3 - 刷新 ImageEditor UI。感谢 @pngwn!
  • #8000 a0c2848 - 修复 HF OAuth 工作流中的内部服务器错误。感谢 @Wauplin!
  • #7887 5f0248e - 使用 HF OAuth 认证时,停留在同一标签页。感谢 @Wauplin!
  • #8059 074ce38 - 确保 ImageEditor 在图层和 change 事件下正确工作。感谢 @pngwn!
  • #7845 dbb7373 - 确保 ImageEditor 事件按预期工作。感谢 @pngwn!
  • #7975 c9ddd84 - 更新 Lite 自定义元素解析器。感谢 @whitphx!
  • #8012 299c87c - 记录 gr.Textbox 中的 show_copy_buttonshow_label=False 时不可见。感谢 @lappemic!

修复

  • #8025 55ef4a5 - 修复聊天机器人图像大小调整。感谢 @dawoodkhan82!
  • #8014 e10ec6a - 修复多模态界面文件上传时的双重框问题。感谢 @TALLEC-Scott!
  • #8028 6fafce0 - 确保在更新状态时正确浅克隆地图。感谢 @pngwn!
  • #7974 79e0aa8 - 修复 js 客户端中的心跳以兼容 Lite。感谢 @whitphx!
  • #8002 8903415 - 为 Upload 组件添加 show_progress 属性,以恢复上传进度动画。感谢 @freddyaboulton!
  • #8046 d6c289b - 裁剪前对 [x, y, w, h] 进行四舍五入,以避免像素值出现意外插值。感谢 @ernestchu!
  • #8011 f17d1a0 - 添加 urllib3~=2.0 的显式依赖,并更新 processing_utils.save_url_to_cache 以使用 urllib3 支持 Lite。感谢 @whitphx!
  • #7981 c1df2f8 - 修复自定义组件的示例加载。感谢 @freddyaboulton!
  • #8026 522daf7 - 为 Lite 修复 async_save_url_to_cache。感谢 @whitphx!
  • #7959 2a5cb97 - 确保 ImageEditor 始终在正确位置绘图。感谢 @hrrbay!
  • #8050 0424c75 - 更新 typer 以删除不再需要的 [all]。感谢 @joennlae!

4.26.0

新功能

  • #7811 b43055b - Lite playground 设计变更。感谢 @aliabd!
  • #7850 2bae1cf - 在查看 API 页面添加“API 记录器”,一些内部方法已改为异步。感谢 @abidlabs!
  • #7936 b165193 - 恢复聊天机器人、MarkdownCode 的 Markdown 格式。感谢 @aliabid94!
  • #7912 a4782f7 - 如果值是元组,允许按文件名显示 gr.Code 示例。感谢 @freddyaboulton!
  • #7938 8250a1a - 处理构建根 URL 时存在多个 header 的情况。感谢 @abidlabs!
  • #7932 b78129d - 使用 asyncio.Event 在心跳路由中停止流。感谢 @freddyaboulton!
  • #7961 eae97c2 - 修复 python 3.9 中的任务 bug。感谢 @freddyaboulton!
  • #7967 1a7851c - 修复主题中单个字体名称的处理。感谢 @sd109!

修复

  • #7963 1eb4c20 - 确保 kwargs 在整个应用程序中始终同步。感谢 @pngwn!
  • #7916 7c9a964 - 修复程序化标签选择。感谢 @aliabid94!
  • #7754 057d171 - 正确处理 ImageImageEditor 中的设备选择。感谢 @hannahblair!
  • #7756 b729f10 - Bug修复:修复主题构建器应用中的颜色和大小键。感谢 @shubhamofbce!
  • #7918 be46ab1 - 确保整个下拉菜单可点击。感谢 @dawoodkhan82!
  • #7966 bad3836 - 为示例参数添加提示 list[list]。感谢 @WH-Yoshi!
  • #7817 867ff16 - 触发 Image Editor 的“clear”事件。感谢 @uebian!
  • #7935 919afff - 添加了使用 Docker 部署 Gradio 应用程序的指南。感谢 @abidlabs!
  • #7915 efd9524 - 修复 gr.CheckboxGroup 更改事件。感谢 @freddyaboulton!
  • #7926 9666854 - 修复流事件竞争条件。感谢 @aliabid94!

4.25.0

亮点

用户从网页断开连接后自动删除状态 (#7829 6a4bf7a)

当用户关闭浏览器标签页时,Gradio 现在会自动删除存储在服务器 RAM 中的 gr.State 变量。删除将在服务器检测到用户浏览器断开连接后 60 分钟发生。如果用户在此时间范围内再次连接,他们的状态将不会被删除。

此外,Gradio 现在包含 Blocks.unload() 事件,允许您在用户断开连接时运行任意清理函数(此事件没有 60 分钟的延迟)。您可以将 unload 事件视为 load 事件的反面。

with gr.Blocks() as demo:
    gr.Markdown(
"""# State Cleanup Demo
🖼️ Images are saved in a user-specific directory and deleted when the users closes the page via demo.unload.
""")
    with gr.Row():
        with gr.Column(scale=1):
            with gr.Row():
                img = gr.Image(label="Generated Image", height=300, width=300)
            with gr.Row():
                gen = gr.Button(value="Generate")
            with gr.Row():
                history = gr.Gallery(label="Previous Generations", height=500, columns=10)
                state = gr.State(value=[], delete_callback=lambda v: print("STATE DELETED"))

    demo.load(generate_random_img, [state], [img, state, history]) 
    gen.click(generate_random_img, [state], [img, state, history])
    demo.unload(delete_directory)


demo.launch(auth=lambda user,pwd: True,
            auth_message="Enter any username and password to continue")

感谢 @freddyaboulton!

新功能

  • #7863 024b44c - 添加对示例的惰性缓存支持,并添加 GRADIO_CACHE_EXAMPLES 环境变量。感谢 @abidlabs!
  • #7892 c7933ff - 当 quiet 设置为 true 时,抑制打印“Running on local URL:”。感谢 @dnoliver!
  • #7869 b9dbcf7 - 使 gr.ChatInterface 中的按钮更适合移动设备。感谢 @abidlabs!
  • #7875 e6d051d - 将图像粘贴到 MultimodalTextbox 中。感谢 @abidlabs!
  • #7893 f42d3e2 - 使 gr.Interface 和 gr.ChatInterface 的内部事件处理程序异步化。感谢 @freddyaboulton!

修复

  • #7886 ccdab9b - 注销路由删除 cookie 修复。感谢 @MichaelPerger!
  • #7888 946487c - 在服务器和 python 客户端中缓存 view_api 信息。感谢 @freddyaboulton!
  • #7881 5e66e01 - 修复音频流出问题。感谢 @aliabid94!
  • #7865 7bbc3b6 - 如果没有输入,JS 函数会破坏整个应用程序,已修复。感谢 @aliabid94!

4.24.0

新功能

  • #7849 7af3cd7 - 为 gr.Chatbot 添加 placeholder 参数。感谢 @abidlabs!
  • #7835 ee804b2 - 当 js 客户端断开连接时,停止运行迭代器。感谢 @freddyaboulton!
  • #7852 72661e3 - 恢复 vite.config.js 中在 #6261 中错误引入的 minify 设置。感谢 @whitphx!
  • #7818 1a7c8d3 - 在 Wasm 模式下停止导入 gradio.ipython_ext。感谢 @whitphx!
  • #7830 75a2bf7 - 添加客户端状态指南并修复组件的默认值。感谢 @abidlabs!
  • #7823 e0a8b7f - 将 typer 从 Wasm 环境的 requirements 列表中排除,并修复不导入 gradio.cli 的问题。感谢 @whitphx!
  • #7851 e3b1236 - 惰性导入 pandas。感谢 @whitphx!
  • #7840 ecf5c52 - 修复 gradio/components/dataframe.py 不导入 pandas.io 的问题。感谢 @whitphx!
  • #7801 05db0c4 - 重构 CORS 中间件以大大提高速度。感谢 @abidlabs!
  • #7810 425fd1c - 基准测试修复。感谢 @aliabid94!

修复

  • #7795 1c257f5 - Bug修复:文件名中的 .. 在输出加载时抛出错误。感谢 @shubhamofbce!
  • #7862 0e125d7 - 即使没有文件,也从 gr.DownloadButton 触发点击事件。感谢 @abidlabs!
  • #7848 8d7b3ca - 多模态文本框加载 + 其他修复。感谢 @dawoodkhan82!

4.23.0

新功能

  • #7782 2c8cd0a - 惰性导入 altair。感谢 @whitphx!
  • #7800 b0a3ea9 - 客户端 client.view_api() 在默认文件值情况下的微小修复。感谢 @abidlabs!
  • #7684 755157f - 不在 gr.NO_RELOAD 上下文内重新加载代码。感谢 @freddyaboulton!
  • #7770 dd3e363 - 如果 lint 或类型检查失败,则 CI 失败。感谢 @abidlabs!
  • #7796 aad209f - 减少延迟:不在线程池中运行预处理和后处理。感谢 @freddyaboulton!
  • #7744 d831040 - 在 Wasm 环境中移除 Ruff 和 Uvicorn。感谢 @whitphx!
  • #7732 2efb05e - 添加了对 python 客户端中的 kwargs 和默认参数的支持,并改进了“查看 API”页面中参数信息的显示方式。感谢 @abidlabs!
  • #7661 c62a57e - 将文档演示转换为 Lite。感谢 @aliabd!
  • #7814 f7df92f - 改进非交互式滑块的用户体验。感谢 @Pythongor!
  • #7789 ff6bf3e - 移除 Wasm worker 中的 aiohttp mock,因为它在 https://github.com/gradio-app/gradio/pull/5244 中已移除。感谢 @whitphx!

修复

  • #7783 43ae23f - 修复意外 bug,该 bug 阻止自定义文本框传递给聊天界面。感谢 @freddyaboulton!
  • #7762 e78bca4 - 即使 Radio 是输出组件,也触发 Radio 的输入事件。感谢 @freddyaboulton!
  • #7787 781678b - 修复从 x_forwarded_host headers 解析根 URL 的问题。感谢 @abidlabs!
  • #7794 cf98c7e - 为 gr.on 添加 trigger_mode。将其设置为 trigger_model="always_last" 用于实时界面。感谢 @freddyaboulton!
  • #7761 ca42748 - 确保当 Dataset 中的 samples 值发生变化时 paginate 会更新。感谢 @hannahblair!

4.22.0

新功能

  • #7743 a2badf1 - 迁移到 Storybook 8。感谢 @hannahblair!
  • #7680 853d945 - 为 gr.Image、gr.Gallery、gr.AnnotatedImage、gr.Plot 添加 format 参数,以控制保存图像文件的格式。感谢 @dfl!
  • #7691 84f81fe - 从后端关闭流。感谢 @aliabid94!
  • #7420 15da39f - 多模态文本框(聊天输入组件)。感谢 @dawoodkhan82!
  • #7712 aca4892 - 更多 gr.load() 修复,以及调整组件的 __str____repr__ 方法。感谢 @abidlabs!
  • #7660 f739bef - 将 Playground 添加到 Lite Custom Element。感谢 @aliabd!
  • #7710 0a3870d - 即使 window.__gradio_mode__ === "website",也调用 handle_darkmode(),但强制使用浅色主题。感谢 @whitphx!
  • #7572 7d3c868 - 为 wasm_utils.get_registered_app() 提供详细的错误消息。感谢 @whitphx!
  • #7734 04857bc - 为 gr.mount_gradio_app 添加 allowed_pathsblocked_pathsshow_errorfavicon_path 参数。感谢 @abidlabs!
  • #7667 aba4470 - 为 mount_gradio_app 添加 authauth_messageroot_path 参数。感谢 @abidlabs!

修复

  • #7716 188b86b - 在 gr.load() 中添加对对象检测模型的支持。感谢 @abidlabs!
  • #7564 5d1e8da - 每帧批量更新 UI。感谢 @pngwn!
  • #7718 6390d0b - 添加对 python 客户端连接到运行自签名 SSL 证书的 gradio 应用程序的支持。感谢 @abidlabs!
  • #7697 a1c24db - 修复 OAuth + 修复 OAuth 文档 + 取消文档中的注销按钮。感谢 @Wauplin!
  • #7623 c9aba8d - 修复:当 gr.Markdown 包含图像标签时,不能正确更新。感谢 @dawoodkhan82!
  • #7704 95c6bc8 - 修复标记文件并确保 flagging_mode="auto" 也保存输出组件。感谢 @abidlabs!
  • #7706 bc61ff6 - gr.load 的多项修复。感谢 @abidlabs!
  • #7733 7f9b291 - 在后处理中将按钮值转换为字符串。感谢 @heaversm!
  • #7691 84f81fe - 修复状态更新和加载状态更新之间的竞争条件。感谢 @aliabid94!
  • #7709 f67759d - 修复 wasm_proxied_mount_css 不重用现有样式元素的问题。感谢 @whitphx!
  • #7703 598ad7b - 修复开发模式。感谢 @pngwn!
  • #7707 28342a2 - 修复 httpx 超时问题。感谢 @freddyaboulton!

4.21.0

新功能

  • #7577 7c66a29 - 修复 Lite 自定义元素,使其在 connected 回调中初始化应用程序,并在 disconnected 回调中释放应用程序。感谢 @whitphx!
  • #7620 1a4b089 - 重构 example_inputs(),将其逻辑分为两个独立方法:example_payload()example_value()。感谢 @abidlabs!
  • #7265 6ebf0ce - 在 gr.Interface.from_pipeline() 中添加对 diffuser 管道的支持。感谢 @shubhamofbce!
  • #7650 048364c - 降级 contourpy。感谢 @abidlabs!
  • #7571 2edba13 - 修复 CrossOriginWorkerMaker 以缓存 blob URL。感谢 @whitphx!

修复

  • #7643 9482c7a - 修复:不需要的冗余 meta 标签。感谢 @qkdxorjs1002!
  • #7628 ba8cc48 - 功能检测 CSSStylesheet。感谢 @pngwn!
  • #7575 d0688b3 - 文件现在应在客户端中以 file(...) 形式提供,并修复了 gr.load() 的一些问题。感谢 @abidlabs!
  • #7624 a22f3e0 - 修复根路径问题,避免子路径重复。感谢 @abidlabs!
  • #7638 b3b0ea3 - 添加 --python-path、--pip-path、--gradio-path CLI 参数,让自定义组件开发者控制使用哪个可执行文件。感谢 @freddyaboulton!
  • #7618 0ae1e44 - 通过 gr.set_static_paths 控制哪些文件移动到缓存。感谢 @freddyaboulton!
  • #7641 cb3999e - 使用 x-forwarded-host header 来确定根 URL,并允许用户提供完整的 root_path 来覆盖自动确定的根 URL。感谢 @abidlabs!

4.20.1

新功能

4.20.0

新功能

修复

4.19.2

新功能

修复

4.19.1

新功能

修复

4.19.0

新功能

修复

4.18.0

新功能

修复

4.17.0

新功能

修复

4.16.0

新功能

修复

4.15.0

亮点

自定义组件文档生成器(#7030 3a944ed

如果您的自定义组件具有参数和返回值的类型提示和文档字符串,您现在可以无需额外努力自动生成文档页面和README.md。只需运行以下命令:

gradio cc docs

这将生成一个Gradio应用程序,您可以将其上传到Spaces,为潜在用户提供丰富的文档。文档页面包括:

  • 安装说明。
  • 从您的演示应用程序中提取的实时嵌入式演示和工作代码片段。
  • 用于初始化组件的API参考,包含类型、默认值和描述。
  • 组件如何影响用户预测函数输入和输出的解释。
  • 理解API参考所需的任何额外接口或类。
  • 可选的GitHub、PyPi和Hugging Face Spaces链接。

还会生成一个README文件,详细说明相同的信息,但格式经过优化,适合在GitHub或PyPi上查看!

感谢 @pngwn

新功能

修复

4.14.0

新功能

修复

4.13.0

新功能

修复

4.12.0

新功能

修复

4.11.0

新功能

修复

4.10.0

新功能

修复

  • #6799 c352811 - 为gr.WaveformOptionsgr.Brushgr.Eraser添加文档字符串,修复ImageEditor的示例,并允许将单个图像用作ImageEditor的初始value。感谢 @abidlabs
  • #6808 6b130e2 - 确保LoginButton的value文本显示。感谢 @hannahblair
  • #6810 526fb6c - 修复gr.load(),使其与SSE v1协议兼容。感谢 @abidlabs

4.9.1

新功能

修复

4.9.0

新功能

修复

4.8.0

新功能

修复

4.7.1

新功能

修复

4.6.0

新功能

修复

4.5.0

亮点

全新ImageEditor组件(#6169 9caddc17b

一个全新的组件,完全独立于Image,提供简单的编辑功能。

  • 可以通过文件上传、网络摄像头或直接粘贴来设置背景图像!
  • 使用改进的裁剪UI裁剪图像。应用程序作者甚至可以设置特定的裁剪尺寸或裁剪比例(例如1:1)。
  • 在任何图像(或无图像)上绘画并擦除任何错误!
  • ImageEditor支持图层,将绘制和擦除操作限制在该图层上。
  • 更灵活的数据访问。图像组件返回一个表示画布最终状态的复合图像,并提供背景和所有图层作为单独的图像。
  • 完全可定制。所有功能都可以启用和禁用。甚至可以自定义画笔颜色样本。

def fn(im):
    im["composite"] # the full canvas
    im["background"] # the background image
    im["layers"] # a list of individual layers


im = gr.ImageEditor(
    # decide which sources you'd like to accept
    sources=["upload", "webcam", "clipboard"],
    # set a cropsize constraint, can either be a ratio or a concrete [width, height]
    crop_size="1:1",
    # enable crop (or disable it)
    transforms=["crop"],
    # customise the brush
    brush=Brush(
      default_size="25", # or leave it as 'auto'
      color_mode="fixed", # 'fixed' hides the user swatches and colorpicker, 'defaults' shows it
      default_color="hotpink", # html names are supported
      colors=[
        "rgba(0, 150, 150, 1)", # rgb(a)
        "#fff", # hex rgb
        "hsl(360, 120, 120)" # in fact any valid colorstring
      ]
    ),
    brush=Eraser(default_size="25")
)

感谢 @pngwn

修复

  • #6497 1baed201b - 修复SourceFileReloader,使其以限定名称监视模块,以避免从不同路径导入同名模块。感谢 @whitphx
  • #6502 070f71c93 - 确保图像编辑器裁剪和绘制光标在滚动位置改变时按预期工作。感谢 @pngwn

4.4.1

新功能

4.4.0

新功能

修复

4.3.0

新功能

修复

4.2.0

新功能

修复

4.1.2

新功能

修复

4.1.1

修复

4.1.0

新功能

修复

4.0.2

修复

4.0.1

新功能

4.0.0

亮点

4.0 是一个重大版本,以下是主要亮点:

1. 自定义组件:我们引入了创建和发布您自己的自定义 gradio 组件的功能。自定义 Gradio 组件是 Python 和 JavaScript(特别是 Svelte)的组合,您可以编写它们来完全自定义 Gradio 组件。自定义组件可以像常规 Gradio 组件一样使用(与 gr.Interfacegr.Blocks 等),并且可以发布,以便其他用户可以在其应用程序中使用。要开始使用自定义组件,请在此处阅读我们的快速入门指南

2. 重新设计的媒体组件和可访问性:

我们从头开始重新设计了媒体组件(gr.Audiogr.Imagegr.Video),并全面改进了可访问性。所有组件现在都可以通过键盘导航,并包含更好的颜色,以便更广泛的用户使用。

3. 服务器端事件:

Gradio 的内置队列系统现在是每个 Gradio 应用程序的默认设置。我们现在使用服务器端事件而不是 Websockets 来实现队列。SSE 意味着所有内容都通过 HTTP 提供,并且比 websockets 具有更好的设备支持和更好的扩展性。

4. 自定义共享服务器:

Gradio 共享链接现在可以在自定义域上运行。您现在可以设置自己的服务器来提供 Gradio 共享链接。要开始使用,请在此处阅读我们的指南

  1. 我们现在支持使用 Blocks 中的 js 参数向您的应用程序添加任意 JS,以及使用 Blocks 中的 head 参数对应用程序进行任意修改

  2. 发布 Gradio 应用程序时,我们不再默认公开用户的工作目录。在安全性方面还有其他一些改进。

  3. 以前,Gradio 应用程序的 API 端点是公开的,允许您绕过队列。作为 Gradio 开发人员,您需要设置 api_open=False 以防止这种滥用。我们现在已将其设为默认设置。

  4. 您现在可以控制用户是否可以多次触发同一事件(通过使用每个事件的 trigger_mode 参数)

  5. 您现在可以对每个事件在后端可以同时运行的次数进行细粒度控制(使用每个事件的 concurrency_limit 参数)

  6. 我们不再将图像序列化为 base64,然后再将其发送到服务器或在返回途中。这应该使任何包含 gr.Image 组件的 Gradio 应用程序速度更快。

重大更改

Gradio 4.0 是一个新的主要版本,包含与 3.x 版本的重大更改。以下是所有重大更改的列表,并附带了适当的迁移步骤。

组件:

  • 移除每个组件中的 **kwarg,这意味着组件不能接受任意(未使用的)参数。以前会抛出警告。
  • 移除已弃用的参数。例如,plain 不再是 gr.Button 类中 variant 参数的 secondary 别名
  • 移除已弃用的 Carousel 类、StatusTracker 类和 Box 布局类
  • 移除已弃用的 Variable 作为 State 的别名
  • 移除组件类中已弃用的 .style() 方法
  • 移除组件类中已弃用的 .update() 方法
  • 移除组件类中的 get_interpretation_neighbors()get_interpretation_scores()
  • 移除 deprecation.py — 这设计用于内部使用,因此不太可能破坏 gradio 应用程序
  • 将保存到缓存的方法从组件方法移动到 processing_utils 中的独立函数
  • gr.Audiogr.Video 中的 source 参数重命名为 sources
  • 移除 gr.Audio 中的 show_edit_button 参数
  • gr.Image() 中的 tool= 参数已移除。自 gradio==4.5.0 起,我们有一个新的 gr.ImageEditor 组件取代了它的位置。ImageEditor 组件是一个简化的组件,允许您对图像进行基本操作。它支持设置背景图像(可以通过上传、粘贴或通过网络摄像头录制),以及通过使用画笔创建笔触和橡皮擦擦除背景图像上方图层中的笔触来“编辑”背景图像。请参阅下面的迁移到 Gradio 4.0 部分。

其他与 gradio 库相关的更改:

  • 移除事件中已弃用的 status_tracker 参数
  • 移除已弃用的 HuggingFaceDatasetJSONSaver
  • 现在 Blocks.load() 只能用作实例方法来附加页面加载时运行的事件。要使用类方法,请改用 gr.load()
  • 同样,Interface.load() 已移除
  • 如果您运行 Gradio 4.x,则无法 gr.load 运行 Gradio 3.x 的空间。但是,您仍然可以使用客户端库(请参阅下面的客户端库更改)。
  • 移除已弃用的参数,例如 launch() 中的 enable_queue
  • launch() 中的许多位置参数现在仅支持关键字,并且 show_tips 已移除
  • 更改已标记数据的格式,对于媒体和聊天机器人,从文件路径更改为 json
  • 移除 gr.Seriesgr.Parallel
  • 所有 API 端点默认命名。如果 api_name=None,则 API 名称为 python 函数的名称。

与客户端库相关的更改:

  • 在 3.x 版本中使用 gradio 客户端库时,任何返回 JSON 数据的组件(包括 gr.Chatbotgr.Labelgr.JSON)都会将数据保存到文件并返回文件路径。同样,您必须将输入 JSON 作为文件路径传递。现在,JSON 数据直接传递和返回,使得使用这些组件与客户端一起工作更容易。

迁移到 Gradio 4.0

以下是一些帮助迁移到 Gradio 4.0 的具体提示

使用 allowed_paths

由于工作目录现在默认不提供服务,如果您在 CSS 或 gr.HTML 组件中通过 /file= 路由引用本地文件,您将需要使用 launch() 中的 allowed_paths 参数明确允许访问这些文件(或其父目录)

例如,如果您的代码如下所示

import gradio as gr

with gr.Blocks() as demo:
    gr.HTML("<img src='/file=image.png' alt='image One'>")
    
demo.launch()

为了使 HTML 组件能够提供 image.png,您需要将 image.png 添加到 allowed_paths 中,如下所示

import gradio as gr

with gr.Blocks() as demo:
    gr.HTML("<img src='/file=image.png' alt='image One'>")
    
demo.launch(allowed_paths=["image.png"])

或者,如果您想像 Gradio 3.x 中那样公开工作目录中的所有文件(如果您打算与他人共享您的应用程序,则不推荐),您可以这样做

import gradio as gr

with gr.Blocks() as demo:
    gr.HTML("<img src='/file=image.png' alt='image One'>")
    
demo.launch(allowed_paths=["."])

使用 concurrency_limit 而不是 concurrency_count

以前,在 Gradio 3.x 中,有一个单独的全局 concurrency_count 参数,用于控制有多少线程可以同时执行队列中的任务。默认情况下,concurrency_count 为 1,这意味着一次只能执行一个事件(以避免在使用占用大量内存或 GPU 使用的预测函数时出现 OOM 错误)。您可以通过设置 queue=False 来绕过队列。

在 Gradio 4.0 中,concurrency_count 参数已被移除。您仍然可以使用 max_threads 参数控制总线程数。此参数的默认值为 40,但您不必(太多地)担心 OOM 错误,因为即使有 40 个线程,我们使用单工作线程-单事件模型,这意味着每个工作线程只执行一个特定函数。因此,实际上,每个函数都有自己的“并发计数”为 1。如果您想更改此行为,可以通过设置参数 concurrency_limit 来实现,该参数现在是每个事件的参数,而不是全局参数。默认情况下,每个事件的此值为 1,但您可以将其设置为更高值,或者设置为 None 以允许任意数量的此事件同时执行。事件还可以使用 concurrency_id 参数进行分组,以便它们共享相同的限制,默认情况下,调用相同函数的事件共享相同的 concurrency_id

最后,需要注意的是,Blocks 中所有事件的 concurrency_limit 的默认值(通常为 1)可以使用 Blocks.queue() 中的 default_concurrency_limit 参数进行更改。您可以将其设置为更高的整数或 None。这反过来会设置所有未明确指定 conurrency_limit 的事件的 concurrency_limit

迁移总结

  • 对于执行速度快或不占用太多 CPU 或 GPU 资源的事件,您应该在 Gradio 4.0 中设置 concurrency_limit=None。(以前您会设置 queue=False。)
  • 对于占用大量资源(例如机器学习模型的预测函数)的事件,并且您希望一次只执行此函数 1 次,则无需设置任何参数。
  • 对于占用大量资源(例如机器学习模型的预测函数)的事件,并且您希望一次只执行此函数 X 次,则应在事件触发器中设置 concurrency_limit=X 参数。(以前您会设置一个全局 concurrency_count=X。)

新的 ImageEditor 组件

在 Gradio 4.0 中,gr.Image() 中的 tool= 参数已移除。自 Gradio 4.5.0 起,它已被新的 gr.ImageEditor() 组件取代。ImageEditor 组件是一个简化的组件,允许您对图像进行基本操作。它支持设置背景图像(可以通过上传、粘贴或通过网络摄像头录制),以及通过使用画笔创建笔触和橡皮擦擦除背景图像上方图层中的笔触来“编辑”背景。

ImageEditor 组件性能更高,并且提供了更大的灵活性来自定义组件,特别是通过新的 brusheraser 参数,它们分别接受 BrushEraser 对象。

以下是一些如何从 Image(tool=...) 迁移到 gr.ImageEditor() 的示例。

  • 要创建一个支持在白色背景上书写黑色笔触的速写本输入,您以前可能这样写:
gr.Image(source="canvas", tools="sketch")

现在,您应该这样写:

gr.ImageEditor(sources=(), brush=gr.Brush(colors=["#000000"]))

注意:您可以在 gr.Brush 中提供支持的笔触颜色列表,并通过将 gr.Brushcolor_mode 参数设置为 "fixed""defaults" 来控制用户是否可以选择自己的颜色。

  • 如果您想创建一个用户可以绘制任何颜色的速写本,只需省略 brush 参数。换句话说,以前您会这样做:
gr.Image(source="canvas", tools="color-sketch")

现在,您应该这样写:

gr.ImageEditor(sources=())
  • 如果您想允许用户选择背景图像,然后在图像上绘图,以前您会这样做:
gr.Image(source="upload", tools="color-sketch")

现在,这是 ImageEditor 组件的默认行为,所以您只需写:

gr.ImageEditor()

Image 组件不同,后者将输入图像作为单个值传递给预测函数,ImageEditor 传递一个由三个键值对组成的字典:

  • "background",其值为背景图像
  • "layers",包含一个值列表,其中每个图层中的笔触对应一个列表元素。
  • "composite",其值为由背景图像和所有笔触组成的完整图像。

每个值的类型可以通过 type 参数设置("filepath""pil""numpy",默认为 "numpy"),就像 Image 组件一样。

有关 gr.ImageEditor 组件的更多详细信息,请参阅文档:https://gradio.org.cn/docs/imageeditor

新功能

修复

3.45.0-beta.13

新功能

3.45.0-beta.12

新功能

修复

3.48.0

新功能

修复

3.47.1

修复

  • #5816 796145e2c - 修复对组件服务器的调用,使 gr.FileExplorer 在 Spaces 上正常工作。感谢@abidlabs

3.47.0

亮点

FileExplorer 组件 (#5672 e4a307ed6)

得益于一项新功能,允许组件直接与服务器通信,而无需通过值传递数据,我们创建了一个新的 FileExplorer 组件。

此组件允许您通过传递 glob 来填充资源管理器,但只在您的预测函数中提供所选文件。

用户可以导航虚拟文件系统并选择文件,这些文件将在您的预测函数中可访问。此组件将允许开发人员构建更复杂的空间,具有更灵活的输入选项。

output

有关更多信息,请查阅 FileExplorer 文档

感谢@aliabid94

新功能

修复

3.46.1

新功能

修复

3.46.0

新功能

修复

3.45.2

新功能

修复

3.45.1

修复

3.45.0

新功能

修复

3.44.4

新功能

修复

3.44.3

修复

3.44.2

修复

3.44.1

修复

3.44.0

新功能

修复

3.43.2

修复

3.43.1

修复

3.43.0

新功能

修复

3.42.0

亮点

聊天机器人的点赞/点踩按钮(#5391 abf1c57d

感谢 @dawoodkhan82

新增通过装饰器附加事件监听器的功能(#5395 55fed04f

例如:

with gr.Blocks() as demo:
    name = gr.Textbox(label="Name")
    output = gr.Textbox(label="Output Box")
    greet_btn = gr.Button("Greet")

    @greet_btn.click(inputs=name, outputs=output)
    def greet(name):
        return "Hello " + name + "!"

感谢@aliabid94

新功能

修复

3.41.2

新功能

  • #5284 5f25eb68 - 小错误修复。感谢 @aliabid94!/n - 我们对__exit__的使用会捕获错误并破坏任何未能实例化的组件的堆栈跟踪(例如尝试在主分支上运行blocks_kitchen_sink)。现在,如果发生异常,__exit__会立即退出,以便可以干净地打印原始异常/n - HighlightedText渲染异常,已清理

修复

3.41.1

修复

3.41.0

亮点

改进启动性能和Markdown支持(#5279 fe057300

改进的Markdown支持

我们现在对gr.Markdowngr.Dataframe中的Markdown有了更好的支持,包括语法高亮和Github Flavoured Markdown。我们还拥有更一致的Markdown行为和样式。

各种性能改进

这些改进将特别有益于大型应用程序。

  • 现在不再手动附加事件,而是委托处理,从而显著提高了性能,并解决了最近Gradio版本中引入的性能回归问题。大型应用程序的启动速度现在大约快了一倍。

  • 优化了单个组件的挂载,从而在启动期间带来了适度的性能改进(约30%)。

  • 纠正了一个导致Markdown无限次重新渲染的问题。

  • 确保gr.3DModel不会过早重新渲染。

    感谢 @pngwn

在Python客户端启用音频流(#5248 390624d8

gradio_client现在支持流式文件输出🌊

没有新的语法!连接到支持流式文件输出的gradio演示,并像往常一样调用predictsubmit

import gradio_client as grc
client = grc.Client("gradio/stream_audio_out")

# Get the entire generated audio as a local file
client.predict("/Users/freddy/Pictures/bark_demo.mp4", api_name="/predict")

job = client.submit("/Users/freddy/Pictures/bark_demo.mp4", api_name="/predict")

# Get the entire generated audio as a local file
job.result()

# Each individual chunk
job.outputs()

感谢 @freddyaboulton

<gradio-app>添加render函数(#5158 804fcc05

我们现在在web组件上有一个render事件,当嵌入的space完成渲染时触发。感谢 @hannahblair

<script>
	function handleLoadComplete() {
		console.log("Embedded space has finished rendering");
	}
	const gradioApp = document.querySelector("gradio-app");
	gradioApp.addEventListener("render", handleLoadComplete);
</script>

感谢 @hannahblair

新功能

修复

3.40.0

亮点

Client.predict现在将返回流式端点的最终输出(#5057 35856f8b

这是一个破坏性更改(仅针对gradio_client)!

以前,Client.predict只会返回流式结果的端点的第一个输出。这导致了开发人员在使用客户端调用这些流式演示时感到困惑。

我们意识到使用客户端的开发人员不了解演示是否流的内部机制,因此我们正在更改predict的行为以符合开发人员的预期。

现在使用Client.predict将返回流式端点的最终输出。这将使得通过客户端使用gradio应用程序变得更加容易。

感谢 @freddyaboulton

Gradio现在支持流式音频输出

允许用户使用生成器流式输出音频,连续生成音频块。需要将输出音频设置为streaming=True

import gradio as gr
from pydub import AudioSegment

def stream_audio(audio_file):
    audio = AudioSegment.from_mp3(audio_file)
    i = 0
    chunk_size = 3000
    
    while chunk_size*i < len(audio):
        chunk = audio[chunk_size*i:chunk_size*(i+1)]
        i += 1
        if chunk:
            file = f"/tmp/{i}.mp3"
            chunk.export(file, format="mp3")            
            yield file
        
demo = gr.Interface(
    fn=stream_audio,
    inputs=gr.Audio(type="filepath", label="Audio file to stream"),
    outputs=gr.Audio(autoplay=True, streaming=True),
)

demo.queue().launch()

在后端,流式输出从/stream/端点而不是/file/端点提供。目前仅用于提供音频流输出。输出JSON将在文件数据对象中包含is_stream: true,而不是is_file: true。感谢 @aliabid94

新功能

修复

3.39.0

亮点

从Gradio应用创建Discord机器人🤖(#4960 46e4ef67

我们很高兴地宣布,Gradio现在可以自动从任何gr.ChatInterface应用创建Discord机器人。

这就像导入gradio_client、连接到应用程序并调用deploy_discord一样简单!

🦙 将Llama 2 70b变成Discord机器人🦙

import gradio_client as grc
grc.Client("ysharma/Explore_llamav2_with_TGI").deploy_discord(to_id="llama2-70b-discord-bot")

模板空间入门

为了帮助您入门,我们在Hugging Face上创建了一个名为gradio-discord-bots的组织,其中包含可用于将由Gradio提供支持的最先进LLM转换为Discord机器人的模板空间。

目前,我们有以下模板空间:

但再次强调,您可以部署任何通过互联网公开的gr.ChatInterface应用程序!所以不要犹豫,在您自己的聊天机器人上尝试一下。

❗️ 额外注意 ❗️:从技术上讲,任何公开接受单个字符串并输出单个字符串的API路由的gradio应用程序都可以部署到discord。但是gr.ChatInterface应用程序天生适合discord的聊天功能,所以我们建议您从这些应用程序开始。

感谢 @freddyaboulton

新功能

修复

3.38

新功能

  • gr.make_waveform()中提供一个参数animate(默认为False),它由@dawoodkhan82PR 4918中实现动画叠加波形。
  • 添加show_download_button参数,允许隐藏静态Image组件中的下载按钮,由@hannahblairPR 4959中实现。
  • 添加Textbox的autofocus参数,由@aliabid94PR 4978中实现。
  • gr.ChatInterface UI现在在流式传输时将“Submit”按钮转换为“Stop”按钮,可用于暂停生成。由@abidlabsPR 4971中实现。
  • 添加一个border_color_accent_subdued主题变量,为加重项目添加柔和的边框颜色。聊天机器人用户消息使用此变量。在Default主题中将此变量的值设置为*primary_200。由@freddyaboultonPR 4989中实现。
  • 添加默认草图颜色参数brush_color。此外,在图像上绘制的蒙版现在略微半透明(蒙版颜色也可以通过brush_color设置)。由@aliabid94PR 4979中实现。

Bug修复

  • 修复了生成器的cancels,使得如果生成器在完成之前被取消,随后的事件运行不会从之前的迭代继续,而是从头开始。由@abidlabsPR 4969中实现。
  • gr.ChatInterface中使用gr.State以减少延迟,由@freddyaboultonPR 4976中实现。
  • 修复了gr.Interface中的bug,即从处理程序参数推断的组件标签包含特殊参数,如gr.Requestgr.EventData。由@cbensimonPR 4956中实现。

其他更改

3.37

新功能

引入了新的gr.ChatInterface抽象,它允许Gradio用户非常轻松地构建功能齐全的聊天界面。唯一必需的参数是一个聊天函数fn,它接受一个(字符串)用户输入message和一个(列表的列表)聊天history,并返回一个(字符串)响应。这是一个简单的例子

import gradio as gr

def echo(message, history):
    return message

demo = gr.ChatInterface(fn=echo, examples=["hello", "hola", "merhaba"], title="Echo Bot")
demo.launch()

产生

image

以及相应的易于使用的API,位于/chat

image

gr.ChatInterface抽象与各种LLM库(例如langchain)配合良好。有关使用gr.ChatInterface的更多示例,请参阅专用指南。由团队共同努力在PR 4869中实现。

  • 聊天机器人消息现在显示指向上传到gr.Chatbot()的文件的超链接,由@dawoodkhan82PR 4848中实现。
  • 缓存的示例现在适用于生成器和异步生成器,由@abidlabsPR 4927中实现。
  • gr.Markdowngr.Chatbotgr.Textbox(通过rtl布尔参数)添加RTL支持,并为gr.Textbox(通过字符串text_align参数)添加文本对齐功能,由@abidlabsPR 4933中实现。

使用示例

with gr.Blocks() as demo:
    gr.Textbox(interactive=True, text_align="right")
demo.launch()
with gr.Blocks() as demo:
    gr.Markdown("سلام", rtl=True)
demo.launch()
  • Blocksget_api_info方法现在支持布局输出组件,由@freddyaboultonPR 4871中实现。

  • 添加了对新命令gradio environment的支持,以便人们更容易提交错误报告,如果我们提供一个简单的命令来列出操作系统、gradio版本以及gradio/gradio-client依赖项的版本。由@varshneydevanshPR 4915中实现。

Bug修复

  • VideoImage中的.change()事件已修复,现在只触发一次,由@abidlabsPR 4793中实现。
  • Audio中的.change()事件已修复,当组件值被另一个事件以编程方式更新时会触发,由@abidlabsPR 4793中实现。
  • Row添加缺失的display: flex属性,以便将flex样式应用于子元素,由[@hannahblair]在PR 4896中实现。
  • 修复了gr.Video无法预处理URL的错误,由@freddyaboultonPR 4904中实现。
  • 修复了Safari浏览器API页面中复制按钮的渲染问题,由@aliabid94PR 4924中实现。
  • 修复了gr.Groupcontainer=False的问题。container参数仅适用于TextboxNumberDropdown,这是唯一有意义的元素。由@aliabid94PR 4916中实现。
  • 修复了ThemeClass.push_to_hub自动生成的app.py中损坏的图片链接,由@deepkyuPR 4944中实现。

其他更改

  • 在移动设备上警告用户如果离开标签页,websocket连接可能会断开。当连接断开时,尝试重新加入队列并显示连接断开的错误信息。由@aliabid94PR 4742中实现。
  • 移除了在打印本地URL之前进行的阻塞网络调用——这些调用会减慢本地URL的显示,尤其是在没有互联网连接的情况下。由@aliabid94PR 4905中实现。
  • 将依赖项固定到主要版本,以降低因下游依赖项更改而导致gradio损坏的可能性,由@abidlabsPR 4885中实现。
  • 当在带有ZeroGPU硬件的Spaces上运行时,队列max_size默认为父Blocks的max_thread。由@cbensimonPR 4937中实现。

重大更改

由于pydantic==2.0的发布,其中包含破坏性更改,导致大量Gradio应用程序崩溃,我们固定了许多Gradio依赖项。请注意,固定的依赖项可能会导致下游冲突,因此这可能是一个破坏性更改。尽管如此,我们保持了固定宽松,并且我们期望此更改能更好地保证Gradio应用程序的长期稳定性。

3.36.1

新功能

Bug修复

  • 修复了当gr.File的值被另一个事件更改时,其change事件未触发的bug,由@freddyaboultonPR 4811中实现。

3.36.0

新功能

  • gr.Videogr.Audiogr.Imagegr.Chatbotgr.Gallery组件现在在部署到Spaces时包含一个分享图标。此行为可以通过在组件类中设置show_share_button参数进行修改。由@aliabid94PR 4651中实现。
  • 允许Web组件spacesrchost属性动态更新,由@pngwnPR 4461中实现。
  • Gradio内置的Spaces复制建议,由@aliabid94PR 4458中实现。
  • api_name参数现在接受False作为值,这意味着它不会显示在命名或未命名端点中。由@abidlabsPR 4683中实现。
  • 增加了对gr.Videogr.Gallerygr.Chatbotpathlib.Path的支持,由sunilkumardash9PR 4581中实现。

Bug修复

  • 更新了带有info属性的组件,以便在调用其update()时进行更新。由@jebarpgPR 4715中实现。
  • 确保当Image组件的模式为maskcolor-sketch时,其撤销按钮能够正常工作,由@amyorzPR 4692中实现。
  • 异步加载iframe resizer外部资源,由@akxPR 4336中实现。
  • 恢复了gr.components中缺失的导入,由@abidlabsPR 4566中实现。
  • 修复了当gr.Galleryheight设置为大且allow_preview=False时,select事件未触发的bug,由@freddyaboultonPR 4551中实现。
  • 修复了gr.Group中设置visible=False事件不工作的bug,由@abidlabsPR 4567中实现。
  • 修复make_waveform以处理包含空格的路径,由@akxPR 4570PR 4578中实现。
  • gr.Audiogr.Video组件的stop_recording事件中发送捕获的数据,由@freddyaboultonPR 4554中实现。
  • 修复了gr.Galleryheightobject_fit参数被忽略的bug,由@freddyaboultonPR 4576中实现。
  • 修复了DOMPurify中的HTML清理问题,该问题导致Markdown中的链接无法在新窗口中打开,由[@hannahblair]在PR 4577中实现。
  • 修复了Columns中Dropdown高度渲染问题,由@aliabid94PR 4584中实现。
  • 修复了AnnotatedImage CSS样式导致注释蒙版无法正确显示的bug,由@freddyaboultonPR 4628中实现。
  • 确保Gradio在被占用的端口上运行时不会静默失败,由@abidlabsPR 4624中实现。
  • 修复了导致文件上传滞后的重复上传bug,由@aliabid94PR 4661中实现。
  • 现在,即使在tqdm构造函数中未指定iterableProgress组件也会出现,由@itrushkinPR 4475中实现。
  • 弃用警告现在指向使用这些弃用功能的用户代码,而不是Gradio内部,由(https://github.com/akx)在PR 4694中实现。
  • 根据内容调整gr.Examples中的列宽,由@pngwn@dawoodkhan82PR 4700中实现。
  • plot参数的弃用警告现在只应针对Image组件发出,由@freddyaboultonPR 4709中实现。
  • 移除了不必要的type弃用警告,由@freddyaboultonPR 4709中实现。
  • 确保当 autoplay=True 且视频源动态更新时,音频自动播放功能正常工作,由 @pngwnPR 4705 中完成。
  • 当错误模态框在 Spaces 中显示时,确保滚动到顶部以便 @pngwnPR 4712 中能看到它。
  • 更新依赖项,由 @pngwnPR 4675 中完成。
  • 修复了 @abidlabsPR 4691 中解决的 gr.Dropdown 底部被截断的问题。
  • 在 Spaces 中点击“查看 API”时滚动到顶部,由 @pngwnPR 4714 中完成。
  • 修复了 show_label 隐藏 gr.Label 整个组件的错误,由 @freddyaboultonPR 4713 中完成。
  • 当上传的图片 EXIF 数据损坏时不再崩溃,由 @akxPR 4764 中完成。
  • 将吐司消息放置在屏幕顶部,由 @pngwnPR 4796 中完成。
  • 修复了启用身份验证后登录页面的回退样式,由 @freddyaboultonPR 4797 中完成。
  • 防止 Spaces 上滚动到输出时出现问题,由 @aliabid94PR 4822 中完成。

其他更改

  • 添加 .git-blame-ignore-revs,由 @akxPR 4586 中完成。
  • PR 4601 中更新了前端依赖项。
  • 在 Gradio 库和客户端中尽可能使用 typing.Literal,由 @freddyaboultonPR 4608 中完成。
  • 移除了前端 E2E 测试不必要的 mock json 文件,由 @dawoodkhan82PR 4625 中完成。
  • 更新依赖项,由 @pngwnPR 4643 中完成。
  • 主题构建器现在成功启动,并且 API 文档得到了清理。由 @abidlabsPR 4683 中完成。
  • 从某些组件中移除了 cleared_value,因为它在内部不再使用,由 @freddyaboultonPR 4685 中完成。
  • 当您定义两个 Blocks 并在一个 Blocks 的事件中引用另一个 Blocks 中的组件时,会显示更好的错误提示 @abidlabsPR 4738 中完成。
  • 当未创建共享链接时,显示更好的消息,由 @abidlabsPR 4773 中完成。
  • 改进了 gr.Gallery 组件中选定图像的可访问性,由 @hannahblairPR 4790 中完成。

重大更改

PR 4683 移除了在 PR 4456 中引入的 gr.Interface 的显式命名端点“load_examples”。

3.35.2

Bug修复

  • 修复了聊天机器人流式传输问题,由 @aliabid94PR 4537 中完成。
  • 修复了聊天机器人高度和滚动问题,由 @aliabid94PR 4540 中完成。

3.35.1

Bug修复

  • 修复了聊天机器人流式传输问题,由 @aliabid94PR 4537 中完成。
  • 修复了错误模态框位置和文本大小问题,由 @pngwnPR 4538 中完成。

3.35.0

新功能

  • 一个 gr.ClearButton 允许用户轻松清除组件的值,由 @abidlabsPR 4456 中完成。

示例用法

import gradio as gr

with gr.Blocks() as demo:
    chatbot = gr.Chatbot([("Hello", "How are you?")])
    with gr.Row():
        textbox = gr.Textbox(scale=3, interactive=True)
        gr.ClearButton([textbox, chatbot], scale=1)

demo.launch()
  • gr.Number 的最小值和最大值,由 @artegoser@dawoodkhan82PR 3991 中完成。
  • VideoAudio 组件添加 start_recordingstop_recording 事件,由 @pngwnPR 4422 中完成。
  • 允许任何函数生成错误消息,并允许同时显示多条消息。其他错误模态框改进,例如达到时间限制后自动解除,以及移动设备上的新布局 @pngwnPR 4459 中完成。
  • VideoAudio 组件添加 autoplay kwarg,由 @pngwnPR 4453 中完成。
  • Gallery 添加 allow_preview 参数,用于控制点击时是否显示详细预览,由 @freddyaboultonPR 4470 中完成。
  • Chatbot 添加 latex_delimiters 参数,用于控制 LaTeX 使用的分隔符并在 Chatbot 中禁用 LaTeX,由 @dawoodkhan82PR 4516 中完成。
  • 现在可以发出 gr.Warninggr.Info 模态框。只需将代码 gr.Warning("Your warning message")gr.Info("Your info message") 作为独立行放入您的函数中即可。由 @aliabid94PR 4518 中完成。

示例

def start_process(name):
    gr.Info("Starting process")
    if name is None:
        gr.Warning("Name is empty")
    ...
    if success == False:
        raise gr.Error("Process failed")

Bug修复

  • 在 JS 客户端中添加 PAUSED 状态支持,由 @abidlabsPR 4438 中完成。
  • 确保 Tabs 只占用所需空间,由 @pngwnPR 4419 中完成。
  • 确保组件具有正确的空尺寸,以防止空容器折叠,由 @pngwnPR 4447 中完成。
  • 前端代码在 <a> 元素中存在相对 URL 时不再崩溃,由 @akxPR 4449 中完成。
  • 修复了视频组件上设置 format='mp4' 会导致上传视频无法播放时函数出错的错误,由 @freddyaboultonPR 4467 中完成。
  • 修复了 _js 参数,使其即使没有后端函数也能工作,由 @aliabid94PR 4486 中完成。
  • 修复了 gr.Chatbot() 的换行问题,由 @dawoodkhan82PR 4491 中完成。
  • 修复了 Label 组件的清除按钮不工作的问题,由 @abidlabsPR 4456 中完成。
  • 恢复了向 gr.Audio() 传入元组(采样率,音频数组)的功能,由 @abidlabsPR 4525 中完成。
  • 确保代码格式正确,并且聊天机器人中始终存在复制按钮,由 @pngwnPR 4527 中完成。
  • show_label 将不会在 gr.BarPlot.update 中自动设置为 True,由 @freddyaboultonPR 4531 中完成。
  • gr.BarPlot 分组文本现在尊重暗色模式,由 @freddyaboultonPR 4531 中完成。
  • 修复了从组件内部调度的错误 @aliabid94PR 4786 中完成。

其他更改

  • 更改了状态和吐司错误组件的样式,由 @hannahblairPR 4454 中完成。
  • 清理不必要的 new Promise(),由 @akxPR 4442 中完成。
  • 对 Examples 和 Dataframe 组件进行次要 UI 清理 @aliabid94PR 4455 中完成。
  • 对 Examples 和 Dataframe 组件进行次要 UI 清理 @aliabid94PR 4455 中完成。
  • 添加加泰罗尼亚语翻译 @jordimasPR 4483 中完成。
  • 加载示例的 API 端点已被赋予一个显式名称(“/load_examples”),由 @abidlabsPR 4456 中完成。
  • 允许在调用 mount_gradio_app 时配置 FastAPI 应用,由 @charlesfryePR4519 中完成。

重大更改

  • SliderCheckboxGroupRadioDropdown 组件的 Clear 按钮行为已更改,由 @abidlabsPR 4456 中完成。清除按钮现在将这些组件的值设置为空,而不是开发者设置的原始默认值。这是为了使其与 Gradio 的其他组件保持一致。
  • Python 3.7 生命周期将于 2023 年 6 月 27 日结束。Gradio 将不再支持 Python 3.7,由 @freddyaboultonPR 4484 中完成。
  • 移除了 $ 作为 Chatbot 的默认 LaTeX 分隔符,由 @dawoodkhan82PR 4516 中完成。具体的 LaTeX 分隔符可以使用 Chatbot 中的新参数 latex_delimiters 进行设置。

3.34.0

新功能

  • gr.UploadButton 组件现在支持 variantinteractive 参数,由 @abidlabsPR 4436 中完成。

Bug修复

  • 移除了带有内部目标的锚标签上的 target="_blank" 覆盖,由 @hannahblairPR 4405 中完成。
  • 修复了 gr.File(file_count='multiple') 无法缓存为输出的错误,由 @freddyaboultonPR 4421 中完成。
  • 限制了可以通过 /proxy 路由代理的域,由 @abidlabsPR 4406 中完成。
  • 修复了 gr.UploadButton 无法用于上传两次相同文件的问题,由 @dawoodkhan82PR 4437 中完成。
  • 修复了前端错误构建 /proxy 路由的错误,由 @abidlabsPR 4430 中完成。
  • 修复了状态组件的 z-index,由 @hannahblairPR 4429 中完成。
  • 修复了 Safari 中的视频渲染问题,由 @aliabid94PR 4433 中完成。
  • 现在,当 Blocks 作为函数调用时,下载文件的输出目录默认设置为临时目录(而不是某些情况下的工作目录),由 @abidlabsPR 4501 中完成。

其他更改

  • 在 Spaces 上运行时,处理函数将通过 PySpaces 库进行转换,以使其与特定硬件一起工作。它对独立的 Gradio 应用程序或常规 Gradio Spaces 没有影响,并且可以按如下方式全局禁用:import spaces; spaces.disable_gradio_auto_wrap(),由 @cbensimonPR 4389 中完成。
  • 弃用了 .style 参数,并将参数移至构造函数。添加了对 .update() 的支持,适用于样式中所有初始参数。为每个组件添加了 scalemin_width 支持。由 @aliabid94PR 4374 中完成。

3.33.1

Bug修复

其他更改

  • 当共享链接二进制文件被杀毒软件阻止时,提供更明确的错误消息,由 @abidlabsPR 4380 中完成。

3.33.0

新功能

  • 引入了 gradio deploy,允许您直接从终端将 Gradio 应用程序部署到 Spaces。由 @aliabid94PR 4033 中完成。
  • 引入了 show_progress='corner' 参数到事件监听器,这不会用进度动画覆盖输出组件,而是在组件的角落显示它。由 @aliabid94PR 4396 中完成。

Bug修复

  • 修复了 Label change 事件自身触发的错误,由 @freddyaboultonPR 4371 中完成。
  • 使 Blocks.load 行为类似于其他事件监听器(允许在其后链接 then@anentropicPR 4304 中完成。
  • gr.Interface 的输出组件中尊重 interactive=True,由 @abidlabsPR 4356 中完成。
  • 移除未使用的前端代码,由 @akxPR 4275 中完成。
  • 修复了 Windows 上 favicon 路径的问题,由 @abidlabsPR 4369 中完成。
  • 防止 /file 路由中的路径遍历,由 @abidlabsPR 4370 中完成。
  • 不要通过 /proxy 路由将 HF 令牌发送到其他域,由 @abidlabsPR 4368 中完成。
  • gr.Chatbot() 的默认 markedjs 清理函数替换为 DOMPurify 清理器,由 @dawoodkhan82PR 4360 中完成。
  • 防止聊天机器人中创建重复的复制按钮,并确保复制按钮在非安全上下文中也能工作,由 @binary-huskyPR 4350 中完成。

其他更改

  • 通过添加不透明度过渡来消除加载条的闪烁,由 @aliabid94PR 4349 中完成。
  • 前端 Blocks 代码的性能优化,由 @akxPR 4334 中完成。
  • 将 pnpm 锁文件格式版本从 v6.0 升级到 v6.1,由 @whitphxPR 4393 中完成。

重大更改

  • /file= 路由不再允许访问点文件或“点目录”中的文件,由 @akxPR 4303 中完成。

3.32.0

新功能

  • Interface.launch()Blocks.launch() 现在接受 app_kwargs 参数,以允许自定义底层 FastAPI 应用程序的配置,由 @akxPR 4282 中完成。

Bug修复

  • 修复了 Gallery/AnnotatedImage 组件不尊重 GRADIO_DEFAULT_DIR 变量的问题,由 @freddyaboultonPR 4256 中完成。
  • 修复了 Gallery/AnnotatedImage 组件重复保存相同图像的问题,由 @freddyaboultonPR 4256 中完成。
  • 修复了 Audio/Video/File 组件在每次运行时创建空临时文件的问题,由 @freddyaboultonPR 4256 中完成。
  • 修复了 gr.Examplesrun_on_click 参数的行为,由 @abidlabsPR 4258 中完成。
  • 确保当队列启用时错误模态框显示,由 @pngwnPR 4273 中完成。
  • 确保 js 客户端在向服务器发出请求时尊重完整的根路径,由 @pngwnPR 4271 中完成。

其他更改

  • 重构 Web 组件 initial_height 属性,由 @whitphxPR 4223 中完成。
  • 重新定位 mount_css 函数以移除循环依赖 @whitphxPR 4222 中完成。
  • 将 Black 升级到 23.3,由 @akxPR 4259 中完成。
  • gr.Chatbot() 中添加前端 LaTeX 支持,使用 KaTeX,由 @dawoodkhan82PR 4285 中完成。

3.31.0

新功能

  • reloader 命令(gradio app.py)现在可以接受命令行参数,由 @micky2bePR 4119 中完成。
  • Audio 组件添加 format 参数,由 @freddyaboultonPR 4178 中完成。
  • 添加 JS 客户端代码片段,可通过 API 页面使用,由 @aliabdPR 3927 中完成。
  • JS 客户端更新,由 @pngwnPR 4202 中完成。

Bug修复

  • 修复了在 Python 3.9 中使用 Optional[Types] 时出现“TypeError: issubclass() arg 1 must be a class”的错误,由 @lingfengchencnPR 4200 中完成。
  • 如果通过 GRADIO_ANALYTICS_ENABLED 环境变量禁用分析,Gradio 将不再发送任何分析或回调主页。由 @akxPR 4194PR 4236 中完成。
  • kwargs 的弃用警告现在显示调用实际的堆栈级别,由 @akxPR 4203 中完成。
  • 修复了在 Python 3.9 中使用 Optional[Types] 时出现“TypeError: issubclass() arg 1 must be a class”的错误,由 @lingfengchencnPR 4200 中完成。
  • 确保取消函数正常工作,由 @pngwnPR 4225 中完成。
  • 修复了 Python 3.9 上 typing.get_type_hints() 的一个错误,由 @abidlabsPR 4228 中完成。
  • 修复了 JSONDecodeError,由 @davidaiPR 4241 中完成。
  • 修复了 chatbot_dialogpt 演示,由 @dawoodkhan82PR 4238 中完成。

其他更改

  • gr.Chatbot() 的 markdown 解析更改为前端使用 marked 库和 prism,由 @dawoodkhan82PR 4150 中完成。
  • 更新 js 客户端,由 @pngwnPR 3899 中完成。
  • 修复了 Image 组件生成的 numpy 数组形状的文档,由 @der3318PR 4204 中完成。
  • 将 websocket 消息的超时时间从 1 秒增加到 5 秒,由 @abidlabsPR 4235 中完成。

3.30.0

新功能

  • launch() 添加了 root_path 参数,允许 Gradio 应用程序在代理后的子路径(例如 www.example.com/app)上运行,由 @abidlabsPR 4133 中完成。
  • 修复了下拉菜单更改监听器在作为输出更新时触发更改的问题,由 @aliabid94PR 4128 中完成。
  • 添加 .input 事件监听器,该监听器仅在用户更改组件值时触发(与 .change 相比,后者在组件因函数触发而更新时也会触发),由 @aliabid94PR 4157 中完成。

Bug修复

3.29.0

新功能

Bug修复

  • 允许用户在 iOS 上通过音频组件上传音频文件,由 @aliabid94PR 4071 中完成。
  • 修复了 Gradio 主题构建器启动时出现的错误,由 @aliabid94@abidlabsPR 4080 中完成。
  • 保持手风琴内容在 DOM 中,由 @aliabid94PR 4070 中完成。
  • 修复了函数中的类型提示导致事件处理程序崩溃的错误,由 @freddyaboultonPR 4068 中完成。
  • 修复了下拉菜单默认值不显示的问题,由 @aliabid94PR 4072 中完成。
  • 软主题标签颜色修复,由 @aliabid94PR 4070 中完成。
  • 修复了 gr.Slider release 事件在移动设备上不触发的错误,由 @space-nukoPR 4098 中完成。
  • 移除了 /info 路由中多余的 State 组件信息,由 @abidlabsPR 4107 中完成。
  • 即使第一个事件失败,也能使 .then() 工作,由 @aliabid94PR 4115 中完成。

完整更新日志

  • 允许用户在带有文本框/数字输入的界面中使用回车键提交 @aliabid94PR 4090 中完成。
  • 更新 Gradio 的 requirements.txt 以要求 uvicorn>=0.14.0,由 @abidlabsPR 4086 中完成。
  • 更新了一些错误消息,由 @abidlabsPR 4086 中完成。
  • 将简体中文翻译文件从 zh-cn.json 重命名为 zh-CN.json,由 @abidlabsPR 4086 中完成。

3.28.3

Bug修复

  • 修复了 gr.Code() 组件流式传输时缩进问题,由 @dawoodkhan82PR 4043 中完成。

3.28.2

Bug修复

新功能

  • 添加了对 visual-question-answeringdocument-question-answeringimage-to-text 的支持,使用 gr.Interface.load("models/...")gr.Interface.from_pipeline,由 @osansevieroPR 3887 中完成。
  • gr.Chatbot() 中添加代码块支持,由 @dawoodkhan82PR 4048 中完成。
  • 添加了黑名单文件路径的功能(并改进了白名单机制),由 @abidlabsPR 4047 中完成。
  • 添加了通过环境变量指定上传目录的功能,由 @abidlabsPR 4047 中完成。

Bug修复

  • 修复了如果后端未设置为 Aggmatplotlib 无法正确渲染的问题,由 @abidlabsPR 4029 中完成。
  • 修复了在较大 Blocks 中跨不同 Interfaces/Blocks 渲染相同 gr.State 不起作用的错误,由 @abidlabsPR 4030 中完成。
  • 代码组件视觉更新,由 @pngwnPR 4051 中完成。

文档变更

  • 添加了如何在 FastAPI 应用程序中使用 Python 客户端的指南,由 @abidlabsPR 3892 中完成。

重大更改

  • gr.HuggingFaceDatasetSaver 行为在内部发生变化。使用时,flagging/ 文件夹不再是 .git/ 文件夹。organization 参数现在被忽略,转而将完整数据集 ID 作为 dataset_name 传递(例如 "username/my-dataset")。
  • 新行(\n)不会在 gr.Markdown()gr.Chatbot() 中自动转换为 <br>。对于多行,开发者必须添加多个 <br> 标签。

完整更新日志

  • 使用 HTTP 方法而非 git pull/push 的更安全的 gr.HuggingFaceDatasetSaver 版本,由 @WauplinPR 3973 中完成。

3.28.1

新功能

  • gr.Image 草图模式中添加“清除蒙版”按钮,由 @space-nukoPR 3615 中完成。

Bug修复

  • 修复了下拉菜单默认值不显示的问题,由 @aliabid94PR 3996 中完成。
  • 修复了 iOS / Safari 中输出文本框的褪色问题,由 @aliabid94PR 3993 中完成。

测试和基础设施变更

  • CI:简化 Python CI 工作流,由 @akxPR 3982 中完成。
  • 将 pyright 升级到 1.1.305,由 @akxPR 4042 中完成。
  • 启用了更多 Ruff 规则并修复了 lint 错误,由 @akxPR 4038 中完成。

3.28.0

Bug修复

  • 修复了视频全屏模式下重复播放命令的问题,由 @tomchang25PR 3968 中完成。
  • 修复了 DataFrame 的“selected”未重置导致 UI 卡顿的问题,由 @tomchang25PR 3916 中完成。
  • 修复了 gr.Video()gr.Tab() 内部不工作的问题,由 @dawoodkhan82PR 3891 中完成。
  • 修复了 File 中 old_value 检查的问题,由 @tomchang25PR 3859 中完成。
  • 修复了所有 bokeh 图都出现在同一个 div 中的错误,由 @freddyaboultonPR 3896 中完成。
  • 修复了图像输出自动占据完整输出图像高度的问题,除非明确设置,由 @aliabid94PR 3905 中完成。
  • 修复了 gr.Gallery() 中设置高度导致图像宽高比崩溃的问题,由 @dawoodkhan82PR 3830 中完成。
  • 修复了请求不存在的文件会触发 500 错误的 bug,由 @micky2be[PR 3895](https://github.com/gradio-app/gradio/pull/3895) 中完成。
  • 修复了 Windows 上 abspath 关于符号链接和无法解析路径的 bug,由 @micky2be[PR 3895](https://github.com/gradio-app/gradio/pull/3895) 中完成。
  • 修复了客户端 Status 枚举中的类型错误,由 @10zintenPR 3931 中完成。
  • 修复了 gr.ChatBot 以处理图像 URL tye-singwaPR 3953 中完成。
  • 将 Google Tag Manager 相关初始化代码移至启用分析的块中,由 @akxPR 3956 中完成。
  • 修复了如果演示关闭后重新启动,端口不会被重用的错误,由 @freddyaboultonPR 3896 中完成。
  • 修复了下拉菜单打开时不会定位到选定元素的问题 @dawoodkhan82PR 3639 中完成。

文档变更

测试和基础设施变更

  • CI:Python 后端 lint 只运行一次,由 @akxPR 3960 中完成。
  • 在可能的情况下,格式化调用和连接被 f-string 替换,由 @akxPR 3984 中完成。
  • Linting 规则变得更严格,并修复了问题,由 @akxPR 3979 中完成。

重大更改

  • gradio.themes 工具(在 3.24.0 中引入)中的一些重新导出已被消除。由 @akxPR 3958 中完成。

完整更新日志

  • 将 DESCRIPTION.md 添加到 image_segmentation 演示中,由 @aliabdPR 3866 中完成。
  • 修复了运行 gr.themes.builder() 时的错误,由 @deepkyuPR 3869 中完成。
  • 修复了在使用 _js 加载自定义 JS 并将 outputs 设置为 Nonegradio.Blocks() 中时出现的 JavaScript TypeError,由 @DavG25PR 3883 中完成。
  • 修复了 bg_background_fill 主题属性以扩展到整个背景,block_radius 影响表单元素,并添加了 block_label_shadow 主题属性,由 @aliabid94PR 3590 中完成。

3.27.0

新功能

AnnotatedImage 组件

新的 AnnotatedImage 组件允许用户通过提供边界框或 0-1 像素掩码来突出显示图像区域。此组件对于图像分割、对象检测和图像标注等任务非常有用。

AnnotatedImage screenshot

示例用法

with gr.Blocks() as demo:
    img = gr.Image()
    img_section = gr.AnnotatedImage()
    def mask(img):
        top_left_corner = [0, 0, 20, 20]
        random_mask = np.random.randint(0, 2, img.shape[:2])
        return (img, [(top_left_corner, "left corner"), (random_mask, "random")])
    img.change(mask, img, img_section)

查看 image_segmentation 演示 以获取完整示例。由 @aliabid94PR 3836 中完成。

3.26.0

新功能

Video 组件支持字幕
  • 允许视频组件接受字幕作为输入,由 @tomchang25PR 3673 中完成。要提供字幕,只需从函数返回一个包含 (path_to_video, path_to_subtitles) 的元组即可。支持 .srt.vtt 格式。
with gr.Blocks() as demo:
    gr.Video(("video.mp4", "captions.srt"))

Bug修复

  • 修复了 gr.Chatbot() 组件中的代码 markdown 支持,由 @dawoodkhan82PR 3816 中完成。

文档变更

3.25.0

新功能

  • 改进了事件处理程序输入/输出数量不匹配时的错误消息,由 @space-nukoPR 3519 中完成。

  • 为 Images 添加 select 监听器,允许用户点击图像的任何部分并获取点击坐标,由 @aliabid94PR 3786 中完成。

with gr.Blocks() as demo:
    img = gr.Image()
    textbox = gr.Textbox()

    def select_handler(img, evt: gr.SelectData):
        selected_pixel = img[evt.index[1], evt.index[0]]
        return f"Selected pixel: {selected_pixel}"

    img.select(select_handler, img, textbox)

Recording 2023-04-08 at 17 44 39

Bug修复

  • 增加了发送分析数据的超时时间,由 @dawoodkhan82PR 3647 中完成。
  • 修复了 http 令牌无法通过 websocket 连接访问的错误,由 @freddyaboultonPR 3735 中完成。
  • gr.Gallery() 组件添加了在 style() 中指定 rowscolumnsobject-fit 的功能,由 @dawoodkhan82PR 3586 中完成。
  • 修复了通过麦克风录制音频文件导致文件名损坏的错误,由 @abidlabsPR 3770 中完成。
  • 为 blocks.launch 方法添加了“ssl_verify”以允许使用自签名证书,由 @garrettsutulaPR 3873 中完成。
  • 修复了进程过早终止时迭代器未重置的错误,由 @freddyaboultonPR 3777 中完成。
  • 修复了上传按钮未能正确处理 file_count='multiple' 情况的错误,由 @freddyaboultonPR 3782 中完成。
  • 修复了使用 API 按钮出现错误的问题,由 @Devang-CPR 3783 中完成。

文档变更

  • 修复了无效参数文档字符串,由 @akxPR 3740 中完成。

完整更新日志

  • 修复了 IPv6 监听以使用括号 [::1] 符号,由 @dsullyPR 3695 中完成。

3.24.1

新功能

  • 没有需要特别强调的更改。

Bug修复

  • 修复了聊天机器人问题,即每次消息来回发送时都会创建新行,由 @aliabid94PR 3717 中完成。
  • 修复了 DataFrame 中数据更新的问题,即在选择 DataFrame 后会触发 select 事件。由 @yiyuezhuoPR 3861 中完成。
  • 修复了由于类型检查过于严格而导致的误报警告,由 @yiyuezhuoPR 3837 中完成。

3.24.0

新功能

  • 在 Slider 数字输入释放或失去焦点时触发 release 事件,由 @freddyaboultonPR 3589 中完成。

  • 创建了主题构建器,允许用户无需编写任何代码即可创建主题,由 @aliabid94PR 3664 中完成。通过以下方式启动:

    import gradio as gr
    gr.themes.builder()

    Theme Builder

  • Dropdown 组件现在有一个 allow_custom_value 参数,允许用户输入不在原始选项列表中的自定义值。

  • Colorpicker 组件现在有一个 .blur() 事件。

为视频添加了下载按钮!📥

download_video

@freddyaboultonPR 3581 中完成。

  • 在 Slider 数字输入释放或失去焦点时触发 release 事件,由 @freddyaboultonPR 3589 中完成。

Bug修复

  • 修复了 altair 图表的文本在暗模式下难以辨认的错误,由 @freddyaboultonPR 3555 中完成。
  • 修复了 ChatbotImage 组件,使其在处理过程中传入的文件被添加到可供服务的目录中,由 @abidlabsPR 3523 中完成。
  • 使用 Gradio API 服务器通过 huggingface_hub 发送遥测数据 @dawoodkhan82PR 3488 中完成。
  • 修复了一个问题,即如果 Blocks 范围未退出,则 State 可能会在会话之间共享,由 @abidlabsPR 3600 中完成。
  • 确保 gr.load() 加载并应用上游主题,由 @abidlabsPR 3641 中完成。
  • 修复了文件上传文本中“或”未本地化的错误,由 @freddyaboultonPR 3599 中完成。
  • 修复了聊天机器人无法在选项卡、行或列内自动滚动的错误,由 @dawoodkhan82PR 3637 中完成。
  • 修复了文本框在 lines 设置大于 20 时收缩的错误,由 @dawoodkhan82PR 3637 中完成。
  • 确保 CSS 完全加载后才渲染应用程序,由 @pngwnPR 3573 中完成。
  • 支持使用空列表作为 gr.Dataframe 值,由 @space-nukoPR 3646 中完成。
  • 修复了 gr.Image 未填充整个元素大小的问题,由 @space-nukoPR 3649 中完成。
  • 使 gr.Code 支持 lines 属性,由 @space-nukoPR 3651 中完成。
  • 修复了某些 _js 返回值被双重数组包装的问题,由 @space-nukoPR 3594 中完成。
  • 更正了 gr.File 组件的文档,说明其预处理方法将上传的文件转换为临时文件,由 @RussellLuo 在 PR 3660 中完成。
  • 修复了 Serializer ValueError 文本中的错误,由 @osansevieroPR 3669 中完成。
  • 修复了默认参数和在同一函数中使用的 gr.Progress,由 @space-nukoPR 3671 中完成。
  • gr.Dropdown 单选模式下隐藏 Remove All 按钮,由 @space-nukoPR 3678 中完成。
  • 修复了文档中损坏的空格,由 @aliabdPR 3698 中完成。
  • 修复了 gr.Dropdown 中除了选定项之外的其他项也出现勾选标记的问题,由 @space-nukoPR 3644 中完成。
  • 修复了 gr.Dropdown 的若干问题并改进了可用性,由 @space-nukoPR 3705 中完成。

文档变更

  • 对主题指南进行了一些与变量命名相关的修复,由 @abidlabsPR 3561 中完成。
  • 记录了 HuggingFaceDatasetJSONSaver,由 @osansevieroPR 3604 中完成。
  • AudioState 组件的文档做了一些补充,并修复了 pictionary 演示,由 @abidlabsPR 3611 中完成。
  • 修复了过时的分享应用指南,由 @aliabdPR 3699 中完成。

测试和基础设施变更

  • 移除了与 comet_ml、wandb 和 mlflow 相关的大量模拟测试,因为它们增加了大量的测试依赖项,阻止了 Windows 环境下测试依赖项的安装。由 @abidlabsPR 3608 中完成。
  • 添加了 Windows 持续集成,由 @space-nukoPR 3628 中完成。
  • 将 linting 从 flake8 + isort 切换到 ruff,由 @akxPR 3710 中完成。

完整更新日志

  • 主题指南中响应式 iframes 的移动端优化,由 @aliabdPR 3562 中完成。
  • 从主题指南中移除多余的 $demo,由 @aliabdPR 3563 中完成。
  • 在从 Hub 加载时,将主题名称设置为上游 repo 名称,由 @freddyaboultonPR 3595 中完成。
  • 复制网站 Dockerfile 中的所有内容,修复构建问题,由 @aliabdPR 3659 中完成。
  • 当事件排队但队列未配置时,抛出错误,由 @freddyaboultonPR 3640 中完成。
  • 允许用户为内置主题传入字符串名称,由 @abidlabsPR 3641 中完成。
  • 在后端 Video 输出中添加了 orig_name,以便前端可以为下载的视频文件设置正确的名称,由 @freddyaboultonPR 3700 中完成。

3.23.0

新功能

主题分享!

现在您可以与世界分享您的 Gradio 主题了!

创建主题后,您可以将其上传到 HuggingFace Hub,让其他人查看、使用和在此基础上构建!您还可以下载、重用和混搭其他人的主题。更多详情请参见 https://gradio.app/theming-guide/

Bug修复

完整更新日志

3.22.1

Bug修复

  • 修复了下拉菜单的渲染以占用更多空间,以及相关错误,由 @aliabid94PR 3549 中完成。

3.22.0

新功能

恢复标签条,由 @aliabid94PR 3507 中完成。

官方主题发布

Gradio 现在支持新的主题系统,允许您自定义应用程序的外观。您现在可以使用 theme= kwarg 传入预构建主题,或自定义您自己的主题!更多详情请参见 https://gradio.app/theming-guide/。由 @aliabid94PR 3470PR 3497 中完成。

elem_classes

Bug修复

  • 为组件添加了关键字参数 elem_classes,以控制组件的类名,与现有 elem_id 的方式相同。由 @aliabid94PR 3466 中完成。
  • 修复了 File.upload() 事件触发器的问题,该问题是文件上传方式更改的一部分,由 @abidlabsPR 3462 中完成。
  • 修复了 gr.Request 对象在嵌套键无法转换为变量名时无法处理字典的问题 #3454,由 @radamesPR 3459 中完成。

文档变更

  • 修复了 CSS 和客户端 API 在子路径中挂载时无法正常工作的问题,由 @freddyaboultonPR 3482 中完成。

测试和基础设施变更

  • 在文档中记录 gr.Error,由 @aliabdPR 3465 中完成。
  • 为了稳定性,将 pyright==1.1.298 固定,由 @abidlabsPR 3475 中完成。
  • 移除了 IOComponent.add_interactive_to_config(),由 @space-nukoPR 3476 中完成。

完整更新日志

3.21.0

新功能

在暗模式下恢复主按钮背景颜色,由 @aliabid94PR 3468 中完成。

主题分享 🎨 🤝

现在您可以与世界分享您的 Gradio 主题了!

创建主题后,您可以将其上传到 HuggingFace Hub,让其他人查看、使用和在此基础上构建!

上传

  1. 有两种方式可以上传主题:通过主题类实例或命令行。
my_theme.push_to_hub(repo_name="my_theme",
                     version="0.2.0",
                     hf_token="...")
  1. 通过类实例

通过命令行

my_theme.dump(filename="my_theme.json")

首先将主题保存到磁盘

upload_theme\
"my_theme.json"\
"my_theme"\
"0.2.0"\
"<hf-token>"

然后使用 upload_theme 命令

version 必须是有效的 语义版本 字符串。

这会在 huggingface hub 上创建一个空间来托管主题文件,并向潜在用户展示您的主题预览。

一个示例主题空间在此:https://hugging-face.cn/spaces/freddyaboulton/dracula_revamped

下载

my_theme = gr.Theme.from_hub("freddyaboulton/my_theme")

with gr.Blocks(theme=my_theme) as demo:
    ....

要从 Hub 使用主题,请在 ThemeClass 上使用 from_hub 方法并将其传递给您的应用程序。

您也可以将主题字符串直接传递给 BlocksInterface (gr.Blocks(theme="freddyaboulton/my_theme"))

您可以使用语义版本表达式将应用程序固定到上游主题版本。

with gr.Blocks(theme="freddyaboulton/my_theme@>=0.1.0,<0.2.0") as demo:
    ....

例如,以下将确保我们从 my_theme 仓库加载的主题版本在 0.1.00.2.0 之间。

@freddyaboultonPR 3428 中完成。

代码组件 🦾

新的代码组件允许您输入、编辑和显示带有完整语法高亮的代码,由 @pngwnPR 3421 中完成。

Chatbot 组件现在支持音频、视频和图像。

gr.Chatbot([
    (("driving.mp4",), "cool video"),
    (("cantina.wav",), "cool audio"),
    (("lion.jpg", "A lion"), "cool pic"),
]).style(height=800)
image

Chatbot 组件现在支持音频、视频和图像,语法简单:只需传入一个包含 URL 或文件路径的元组(元组的第二个可选元素是替代文本),图像/音频/视频就会显示出来。

  • 注意:图像以前通过 Markdown 语法支持,为了向后兼容,现在仍然支持。由 @dawoodkhan82PR 3413 中完成。

  • 代码组件 🦾

  • 允许使用 .then.success 连续触发函数,由 @aliabid94PR 3430 中完成。
import gradio as gr

with gr.Blocks() as demo:
    gallery = gr.Gallery(["images/1.jpg", "images/2.jpg", "images/3.jpg"])
    selected_index = gr.Textbox()

    def on_select(evt: gr.SelectData):
        return evt.index

    gallery.select(on_select, None, selected_index)

添加了 .select() 事件监听器,其中还包含可作为 gr.SelectData 类型提示的参数传递给函数的事件数据。以下组件支持 .select() 事件监听器:Chatbot, CheckboxGroup, Dataframe, Dropdown, File, Gallery, HighlightedText, Label, Radio, TabItem, Tab, Textbox。示例用法:

Bug修复

  • Textbox 组件现在包含一个复制按钮,由 @abidlabsPR 3452 中完成。
  • 使用 huggingface_hub 发送 interfaceblocks 的遥测数据;最终取代 segment,由 @dawoodkhan82PR 3342 中完成。
  • 确保组件(滑块的随机化、可调用值)创建的加载事件永远不会排队,除非传递了 every,由 @freddyaboultonPR 3391 中完成。
  • 通过浅拷贝防止 generic_update 的就地更新,由 @gitgithanPR 3405 中完成,以修复 #3282
  • 修复了 utils.py 中未导入 BlockContext 导致的错误,由 @freddyaboultonPR 3424 中完成。
  • 确保下拉菜单不会高亮部分匹配项,由 @pngwnPR 3421 中完成。

文档变更

测试和基础设施变更

  • 修复了事件处理程序在文档中不显示的问题,由 @freddyaboultonPR 3434 中完成。
  • 修复了在本地失败但在 CI 上通过的测试,由 @abidlabsPR 3411 中完成。

完整更新日志

  • 确保组件(滑块的随机化、可调用值)创建的加载事件永远不会排队,除非传递了 every,由 @freddyaboultonPR 3391 中完成。
  • 从仓库中删除 codecov,由 @aliabdPR 3415 中完成。
  • 通过任何 Gradio 组件上传的文件都将保留文件名,由 @abidlabsPR 3412 中完成。
  • 修复文档中 markdown 嵌入组件的 css 问题,由 @aliabdPR 3410 中完成。
  • 清理事件监听器代码,由 @aliabid94PR 3420 中完成。
  • 修复 Spaces logo 的 css 问题,由 @aliabdPR 3422 中完成。

3.20.1

新功能

  • JSON 组件进行了一些修复(show_label 参数、图标),由 @abidlabsPR 3451 中完成。
chatbot = gr.Chatbot().style(height=500)

Bug修复

  • gr.Chatbot() 组件在样式中添加 height kwarg,由 @dawoodkhan82PR 3369 中完成。
  • 确保上传的图像始终显示在草图工具中,由 @pngwnPR 3386 中完成。

3.20.0

新功能

修复了当 fn 为非静态类成员时,fn 的第一个参数 self 应该被忽略的错误,由 @or25PR #3227 中完成。

Slider 的释放事件

现在,您可以让您的 Python 函数在滑块释放时运行,而不是每次滑块值更改时!

slider.release(function, inputs=[...], outputs=[...], api_name="predict")

只需使用滑块上的 release 方法即可。

@freddyaboultonPR 3353 中完成。

下拉组件更新

gr.Dropdown(label="Choose your favorite colors", choices=["red", "blue", "green", "yellow", "orange"], multiselect=True, max_choices=2)

标准下拉组件现在支持搜索选项。此外,当 multiselectTrue 时,您可以指定 max_choices 来设置用户可以从下拉组件中选择的最大选项数。

@dawoodkhan82PR 3211 中完成。

图像下载按钮 🖼️

download_sketch

输出图像现在将自动显示下载按钮,以便更轻松地保存和分享机器学习艺术模型的结果。

  • @freddyaboultonPR 3297 中完成。
  • 更新了图像上传组件以接受所有图像格式,包括无损格式如 .webp,由 @fienestarPR 3225 中完成。
  • 通过设置 interactive=False,为 gr.Button 组件添加了禁用模式,由 @abidlabsPR 3266PR 3288 中完成。
  • 点击 Flag 按钮时添加了视觉反馈,由 @abidlabsPR 3289 中完成。
  • 增加了单独设置 flagging_options 显示文本和保存标记的功能,由 @abidlabsPR 3289 中完成。
  • 允许为 Image 组件设置 brush_radius,既作为默认值,也通过 Image.update(),由 @pngwnPR 3277 中完成。
  • 为表单组件添加了 info= 参数,以提供给用户额外的上下文,由 @aliabid94PR 3291 中完成。
  • 允许开发者使用 .username 属性从 gr.Request() 对象访问登录用户的用户名,由 @abidlabsPR 3296 中完成。

Bug修复

  • Gallery.style 添加了 preview 选项,该选项在首次加载时以预览模式启动画廊,由 @freddyaboultonPR 3345 中完成。
  • 确保 mirror_webcam 始终受到尊重,由 @pngwnPR 3245 中完成。
  • 修复了更新的 markdown 链接未在新选项卡中打开的错误,由 @gantePR 3236 中完成。
  • API Docs 修复,由 @aliabdPR 3287 中完成。
  • 为队列消息添加了超时,因为某些演示遇到了无限增长的队列,其中活动的作业永远等待客户端响应,由 @freddyaboultonPR 3196 中完成。
  • 修复了渲染 LaTeX 图像的高度使其与周围文本高度匹配的问题,由 @abidlabsPR 3258PR 3276 中完成。
  • 修复了 matplotlib 图像在前端总是过小的问题,由 @freddyaboultonPR 3274 中完成。
  • 防止在提供默认图像时Sketch崩溃,由 @pngwnPR 3277 中修复
  • 在创建图像草图时,前端遵守 shape 参数,由 @pngwnPR 3277 中实现
  • 修复将 Dropdown 的值设置为 [] 并向下拉菜单添加更改事件时导致的无限循环问题,由 @freddyaboultonPR 3295 中修复
  • 修复图像文档中更改事件列出两次的问题,由 @aliabdPR 3318 中修复
  • 修复导致UI始终垂直居中的错误,由 @pngwnPR 3336 中修复
  • 修复 Gallery.style 中设置的 height 在前端不生效的错误,由 @freddyaboultonPR 3343 中修复
  • 确保Markdown列表正确渲染,由 @pngwnPR 3341 中实现
  • 确保 gr.Dropdown(Multiselect=True) 的初始空值为一个空列表,以及 gr.Dropdown(Multiselect=False) 的初始值为空字符串,由 @pngwnPR 3338 中实现
  • 确保在画布启用时,上传的图片遵守形状属性,由 @pngwnPR 3351 中实现
  • 确保 Gradio 应用在 analytics_enabled=True 时 Google Analytics 正常工作,由 @abidlabsPR 3349 中实现
  • 修复更新后文件被重新上传的错误,由 @freddyaboultonPR 3375 中修复
  • 修复同时使用 backen_fn 和自定义 js 时发生的错误,由 @jialeicuiPR 3358 中修复
  • 支持 Hugging Face Spaces 子域的新嵌入方式,由 @pngwnPR 3367 中实现

文档变更

  • 在配置文件的依赖字段中添加 types 字段,由 @freddyaboultonPR 3315 中实现
  • Gradio 状态页面,由 @aliabdPR 3331 中实现
  • 添加了一份关于使用 gr.BarPlot 组件从 Supabase 数据设置仪表板的指南,由 @abidlabsPR 3275 中实现

测试和基础设施变更

重大更改

  • 聊天机器人气泡颜色不再能通过 chatbot.style(color_map=) 设置,由 [@aliabid94] 在 PR 3370 中实现

完整更新日志

  • 修复 components.py 中的注释拼写错误,由 @eltociearPR 3235 中修复
  • 清理了聊天机器人UI的外观和感觉,由 [@aliabid94] 在 PR 3370 中实现

3.19.1

Bug修复

完整更新日志

  • 添加了对主题的后端支持,由 @aliabid94PR 2931 中实现
  • 添加了对按钮大小“lg”(默认)和“sm”的支持。

3.19.0

新功能

改进了嵌入体验

当将 Spaces 托管的 Gradio 应用作为 Web 组件嵌入时,您现在将获得改进的 UI,可以链接回原始 Space,更好的错误处理和更智能的加载性能。无需更改您的代码即可享受此增强体验;只需将您的 Gradio SDK 升级到最新版本。

此行为可配置。您可以通过传递 info="false" 来禁用底部的资讯面板。您可以通过传递 container="false" 来完全禁用容器。

错误状态会在 UI 中报告,并提供一种简单的方式让终端用户通过 Hugging Face Space 的社区标签向原始 Space 作者报告问题

默认情况下,Gradio 应用是延迟加载的,这大大提高了页面上存在多个演示时的性能。元数据会提前加载,但 Space 仅在视图中时才会被加载和渲染。

此行为可配置。您可以传递 eager="true" 来加载和渲染 Space,无论它是否当前在屏幕上。

@pngwnPR 3205 中实现

新增 gr.BarPlot 组件!📊

使用 gr.BarPlot 从高级接口创建交互式条形图。不再需要记住 matplotlib 语法了!

示例用法

import gradio as gr
import pandas as pd

simple = pd.DataFrame({
    'a': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'],
    'b': [28, 55, 43, 91, 81, 53, 19, 87, 52]
})

with gr.Blocks() as demo:
    gr.BarPlot(
        simple,
        x="a",
        y="b",
        title="Simple Bar Plot with made up data",
        tooltip=['a', 'b'],
    )

demo.launch()

@freddyaboultonPR 3157 中实现

Bokeh 图回来了!🌠

修复了阻止 Bokeh 图在前端显示的问题,并扩展了对 Bokeh 2.x 和 3.x 版本的支持!

image

@freddyaboultonPR 3212 中实现

Bug修复

  • 增加了从机器人或用户侧添加单个消息的功能。例如:将元组中的第二个值指定为 None,以从“机器人”侧在聊天机器人中添加单个消息。
gr.Chatbot([("Hi, I'm DialoGPT. Try asking me a question.", None)])

@dawoodkhan82PR 3165 中实现

  • 修复 gr.utils.delete_none 以仅从配置中删除值为 None 的属性,由 @abidlabsPR 3188 中实现
  • 修复嵌入式演示未正确加载文件的错误,由 @freddyaboultonPR 3177 中修复
  • 现在当用户点击多选下拉组件的“全部清除”按钮时,会触发 change 事件,由 @freddyaboultonPR 3195 中实现
  • 阻止 File 组件在上传大文件时冻结,由 @aliabid94PR 3191 中实现
  • 支持 Dataframe 中的中文拼音,由 @aliabid94PR 3206 中实现
  • 现在当图像被清除时,会触发 clear 事件,由 @freddyaboultonPR 3218 中实现
  • 修复通过 http 连接应用时未发送认证 cookie 的错误,由 @freddyaboultonPR 3223 中修复
  • 确保 Latex CSS 在亮色和暗色模式下始终正确应用,由 @pngwnPR 3233 中实现

文档变更

  • 文档中的组件按字母顺序排序,由 @aliabdPR 3152 中实现
  • W&B 指南的更改,由 @scottirePR 3153 中实现
  • 为画廊保留 pnginfo 元数据,由 @wfng92PR 3150 中实现
  • 添加关于如何在本地运行 Gradio 应用的部分,由 @osansevieroPR 3170 中实现
  • 修复 Gradio 事件函数文档中的拼写错误,由 @vidalmaximePR 3168 中修复
  • 添加了一个使用 Gradio 批量模式与 diffusers 库的示例,由 @abidlabsPR 3224 中实现

完整更新日志

  • 修复演示页面 CSS 并添加关闭演示按钮,由 @aliabdPR 3151 中修复
  • 通过根据数据内容为其提供确定性路径来缓存 base64 输入数据中的临时文件,由 @abidlabsPR 3197 中实现
  • 更好的警告(当输出组件数量与函数返回值不匹配时,或者当 File 组件或 UploadButton 组件包含 file_types 参数以及 file_count=="dir" 时),由 @abidlabsPR 3194 中实现
  • 当使用 gr.Interface.load() 加载模型时,如果查询 HF API 时出错,则抛出 gr.Error 而不是常规 Python 错误,由 @abidlabsPR 3194 中实现
  • 修复 Gradio 共享链接使其持久化,并且在网络连接中断时不会重置,由 XciDWauplin@abidlabsPR 3149 中实现,以及一个后续更改,以允许其适用于从先前 Gradio 版本升级的用户,在 PR 3221 中实现

3.18.0

新功能

接口的停止按钮已更新 🛑

如果您的接口函数是生成器,以前在“提交”按钮旁边会显示一个单独的“停止”按钮。

我们改进了“提交”按钮,使其在生成过程中变为“停止”按钮。点击“停止”按钮将取消生成并将其变回“提交”按钮。如果您不使用“停止”按钮,它将在生成结束时自动变回“提交”按钮!

@freddyaboultonPR 3124 中实现

队列现在支持重新加载模式!

您现在可以在 if __name__ == "__main__" 块外部调用 demo 上的 queue,并使用 gradio 命令在重新加载模式下运行脚本。

app.py 文件的任何更改都会自动反映在网页中,并且队列将正常工作!

@freddyaboultonPR 3089 中实现

允许从其他目录提供文件
demo = gr.Interface(...)
demo.launch(
  file_directories=["/var/lib/demo/path/to/resources"]
)

@maxaudronPR 3075 中实现

Bug修复

  • 修复 Windows 上的 URL 解析问题,由 @abidlabsPR 3108 中修复
  • 示例缓存现在适用于没有标签属性的组件(例如 Column),由 @abidlabsPR 3123 中实现
  • 确保视频组件在加载新视频源时正确重置 UI 状态,并减少 UI 的卡顿,由 @pngwnPR 3117 中实现
  • 修复加载私有 Spaces 的问题,由 @abidlabsPR 3068 中修复
  • 添加了在尝试通过 %%blocks jupyter notebook 魔术命令启动 Interface 时发出警告的功能,由 @freddyaboultonPR 3126 中实现
  • 修复了在编辑模式下无法设置交互式输出图像的错误,由 @dawoodkhan82PR 3135 中修复
  • 在 Sagemaker 笔记本上运行时将自动创建共享链接,以便正确显示前端界面,由 @abidlabsPR 3137 中实现
  • 修复了一些下拉组件问题;按预期隐藏选项旁边的勾选标记,并且键盘悬停可见,由 @dawoodkhan82 在 [PR 3145]https://github.com/gradio-app/gradio/pull/3145) 中修复
  • 修复了在暗色模式下示例分页按钮不可见或显示在示例表格下方的问题。由 @freddyaboultonPR 3144 中修复
  • 修复了原生绘图的坐标轴标签和标题的字体颜色不响应暗色模式偏好设置的错误。由 @freddyaboultonPR 3146 中修复

文档变更

  • 添加了关于 Gradio 四种接口的指南,由 @yvrjsharma@abidlabsPR 3003 中实现
  • 解释了在使用重新加载模式(例如 gradio 命令)时,launch 中的参数将不被遵守,由 @freddyaboultonPR 3089 中实现
  • 添加了一个演示,展示如何在 Gradio 中设置可变数量的输出,由 @abidlabsPR 3127 中实现
  • 更新了文档,以反映 equal_height 参数应传递给 gr.Row().style() 方法,由 @freddyaboultonPR 3125 中实现

完整更新日志

3.17.1

新功能

iOS 图像旋转问题已修复 🔄

以前通过 iOS 上传的照片在处理后会旋转。此问题已由 @freddyaboultonPR 3089 中修复

######### 之前

image

######### 之后

image

在 Kaggle Kernels 上运行 🧪

在 Kaggle Kernels (notebooks) 上运行时,将自动创建共享链接,以便正确显示前端界面。

image

@freddyaboultonPR 3101 中实现

Bug修复

  • 修复了使用 Blocks API 创建的演示在有多个输入组件时示例未正确渲染的错误,由 @freddyaboultonPR 3090 中修复
  • 修复 JSON、HighlightedText、Chatbot 的更改事件监听器,由 @aliabid94PR 3095 中修复
  • 修复视频和文件更改事件不工作的错误 @tomchang25PR 3098 中修复
  • 修复 static_video 播放和暂停事件不工作的错误 @tomchang25PR 3098 中修复
  • 修复了 Gallery.style(grid=...),由 @aliabdPR 3107 中修复

文档变更

  • 更新聊天机器人指南,以包含 blocks 演示和 Markdown 支持部分,由 @dawoodkhan82PR 3023 中实现
  • 修复快速入门指南中的一个断开链接,由 @cakikiPR 3109 中修复
  • 改进了移动设备上的文档导航,由 @aliabdPR 3112 中实现
  • 添加了关于使用 Gradio 与 Comet 的指南,由 @DN6PR 3058 中实现

完整更新日志

  • markdown-it-py 的最低版本设置为 2.0.0,以便 dollar math 插件兼容,由 @freddyaboultonPR 3102 中实现

3.17.0

新功能

扩展了 Interface.load 的支持!🏗️

您现在可以从 hub 加载 image-to-textconversational 管道!

图片转文字演示
io = gr.Interface.load("models/nlpconnect/vit-gpt2-image-captioning",
                       api_key="<optional-api-key>")
io.launch()
image
对话式演示
chatbot = gr.Interface.load("models/microsoft/DialoGPT-medium",
                           api_key="<optional-api-key>")
chatbot.launch()

chatbot_load

@freddyaboultonPR 3011 中实现

Model3D 输出组件新增下载按钮 📥

现在无需额外的文件输出组件即可启用 model3d 文件下载。我们已在 model3d 组件本身添加了下载按钮。

Screenshot 2023-01-18 at 3 52 45 PM

@dawoodkhan82PR 3014 中实现

修复 Spaces 上的认证问题 🔑

现在 Spaces 上的认证工作正常了!您的浏览器必须启用第三方 cookie 才能登录。有些浏览器默认禁用第三方 cookie(Safari、Chrome 无痕模式)。

auth_spaces

Bug修复

  • 修复了解释事件配置不正确的错误,由 @freddyaboultonPR 2993 中修复
  • 修复重新加载模式下的相对导入错误,由 @freddyaboultonPR 2992 中修复
  • 修复上传图片时无法识别 png 文件的错误,由 @abidlabsPR 3002 中修复
  • 修复了外部 Spaces 在返回文件时无法加载和用作函数的错误,由 @abidlabsPR 3004 中修复
  • 修复文件序列化输出不是 JSON 可序列化的错误,由 @freddyaboultonPR 2999 中修复
  • 修复上传图片时无法识别 png 文件的错误,由 @abidlabsPR 3002 中修复
  • 修复了上传的临时文件未添加到临时集合的错误,由 @abidlabsPR 3005 中修复
  • 修复聊天机器人中 Markdown 支持破坏旧演示的问题 @dawoodkhan82PR 3006 中修复
  • 修复了最近更改中损坏的 /file/ 路由,在 PR 3010 中修复
  • 修复图像组件无法序列化图像 URL 的错误,由 @freddyaboultonPR 2957 中修复
  • 修复 SEO 重命名后指南的转发问题,由 @aliabdPR 3017 中修复
  • 将网站上所有页面切换为使用最新的稳定 Gradio 版本,由 @aliabdPR 3016 中实现
  • 修复了 huggingface_hub 中弃用参数相关的错误,针对 HuggingFaceDatasetSaver,在 PR 3025 中修复
  • 改进了绝对路径解析中对符号链接的支持,由 @abidlabsPR 3037 中实现
  • 修复了几个次要的前端错误(加载动画,作为画廊的示例),由 @aliabid94PR 2961 中修复。
  • 修复了聊天机器人示例代码不适用于某些输入值的错误,由 @petrov826PR 3039 中修复。
  • 修复表单元素的阴影,并确保焦点样式在暗色模式下更明显 @pngwnPR 3042 中修复。
  • 修复了 Checkbox 和 Dropdown 更改事件不响应其他组件更改的错误,由 @freddyaboultonPR 3045 中修复
  • 修复了在启动 closed 应用后队列未能正确重启的错误,由 @freddyaboultonPR 3022 中修复
  • 在文档中添加了缺失的嵌入式组件,由 @aliabdPR 3027 中实现
  • 修复了如果 gr.Filegr.UploadButtonfile_types 参数不是列表,应用程序会崩溃的错误,由 @freddyaboultonPR 3048 中修复
  • 确保 CSS 正确加载,无论页面上有多少 Gradio 实例 @pngwnPR 3059 中实现。
  • 修复了 UploadButton 的输入组件在前端未隐藏的错误,由 @freddyaboultonPR 3053 中修复
  • 修复了点击提交或撤销后,草图输出不会清除的问题。 @dawoodkhan82PR 3047 中修复
  • 确保通过 Web 组件嵌入的 Spaces 始终使用正确的 URL 进行服务器请求,并更改测试端口以避免用户在本地使用嵌入式应用程序时出现奇怪的冲突,由 @pngwnPR 3065 中实现
  • 通过更新保留画廊中选定的图像,由 @freddyaboultonPR 3061 中实现
  • 修复 HF spaces 上认证不生效的错误,由 @freddyaboulton@aliabid94PR 3049 中修复
  • 修复手动更改标签页时,标签页的 selected 属性不生效的错误,由 @tomchang253055 中修复
  • 更改聊天机器人以在进度中显示点,并修复聊天机器人在有图像时不会粘在底部的错误,由 @aliabid94PR 3067 中修复

文档变更

  • 指南的 SEO 改进,由@aliabdPR 2915 中实现
  • blocks_kinematics 演示使用 gr.LinePlot 组件,由 @freddyaboultonPR 2998 中实现
  • 更新了 interface_series_load 以包含一些内联 markdown 代码,由 @abidlabsPR 3051 中实现

测试和基础设施变更

  • 添加了一个 GitHub action 来测试是否存在任何大文件(> 5MB),由 @abidlabsPR 3013 中实现

完整更新日志

  • 使用 CSS 变量重写前端主题,由 @pngwnPR 2840 中实现
  • 将遥测请求移至后台线程运行,由 @abidlabsPR 3054 中实现

3.16.2

Bug修复

  • 修复文件上传失败,针对零大小文件,由 @dawoodkhan82PR 2923 中修复
  • 修复了如果 gradio 应用中启用了队列,mount_gradio_app 将无法启动的错误,由 @freddyaboultonPR 2939 中修复
  • 修复 Blocks 中自定义长 CSS 处理问题,由 @anton-lPR 2953 中修复
  • 恢复下拉菜单的更改事件,由 @abidlabsPR 2954 中修复。
  • 修复音频文件输出,由 @aliabid94PR 2961 中修复。
  • 修复了下载后,超长文件的文件扩展名未保留的错误,由 @freddyaboultonPR 2929 中修复
  • 修复了后端未返回示例输出的错误,由 @freddyaboultonPR 2955 中修复
  • 修复 blocks_plug 演示中的错误,该错误阻止了用 python 进行编程切换标签 @TashaSkyUpPR 2971 中修复。

3.16.1

Bug修复

3.16.0

新功能

通过在任何函数输入参数后添加 gr.Progress 参数来发送自定义进度更新。示例
def reverse(word, progress=gr.Progress()):
    progress(0, desc="Starting")
    time.sleep(1)
    new_string = ""
    for letter in progress.tqdm(word, desc="Reversing"):
        time.sleep(0.25)
        new_string = letter + new_string
    return new_string

demo = gr.Interface(reverse, gr.Text(), gr.Text())

进度指示条,由 @aliabid94PR 2750 中实现。

  • TabbedInterface 添加了 title 参数,由 @MohamedAliRashad 在 #2888 中实现
  • 添加了对 gr.Filegr.UploadButton 指定文件扩展名的支持,使用 file_types 参数(例如 gr.File(file_count="multiple", file_types=["text", ".json", ".csv"])),由 @dawoodkhan82 在 #2901 中实现
  • Dropdown 添加了 multiselect 选项,由 @dawoodkhan82 在 #2871 中实现
multiselect 设置为 true 时,用户现在可以从 gr.Dropdown 组件中选择多个选项。
gr.Dropdown(["angola", "pakistan", "canada"], multiselect=True, value=["angola"])
Screenshot 2023-01-03 at 4 14 36 PM

Bug修复

  • 修复了打开音频文件错误导致崩溃的错误,由 @FelixDombekPR 2898 中修复
  • 修复了设置 default_enabled=False 导致整个队列无法启动的错误,由 @freddyaboultonPR 2876 中修复
  • 修复了 DataFrame 示例的 CSV 预览会显示文件名而不是文件内容的错误,由 @freddyaboultonPR 2877 中修复
  • 修复了迭代输出后引发的错误未在浏览器中显示的错误,由 @JaySmithWpgPR 2889 中修复
  • 修复了阻止 blocks_style 演示启动的错误,由 @freddyaboultonPR 2890 中修复
  • 修复了无法下载文件的错误,由 @freddyaboultonPR 2926 中修复
  • 修复了缓存示例未正确显示的问题,由 @a-rogalskaPR 2974 中修复

文档变更

  • 添加了关于使用 Google Sheets 通过 Gradio 的 DataFrameLinePlot 组件创建实时仪表板的指南,由 @abidlabsPR 2816 中实现
  • 在文档中添加了组件-事件矩阵,由 @aliabdPR 2921 中实现

测试和基础设施变更

完整更新日志

贡献者致敬

  • @JaySmithWpg 首次为 Gradio 做出贡献!
  • @MohamedAliRashad 首次为 Gradio 做出贡献!

3.15.0

新功能

Gradio 最新绘图组件 gr.LinePlot!📈

使用此组件,您可以轻松创建具有可自定义外观的时间序列可视化图表,用于您的演示和仪表板……所有这些都无需了解外部绘图库。

API 示例请参阅下方

gr.LinePlot(stocks,
            x="date",
            y="price",
            color="symbol",
            color_legend_position="bottom",
            width=600, height=400, title="Stock Prices")

image

@freddyaboultonPR 2807 中实现

Bug修复

  • 修复了 Examples 组件的 examples_per_page 参数未传递给内部 Dataset 组件的错误,由 @freddyaboultonPR 2861 中修复
  • 修复了加载具有默认值的 Spaces 的问题,由 @abidlabsPR 2855 中修复
  • 修复了 gr.Interface()allow_flagging="auto" 时的标记问题,由 @abidlabsPR 2695 中修复
  • 修复了向 gr.CheckboxGroup 传递非列表值会导致整个应用崩溃的错误,由 @freddyaboultonPR 2866 中修复

文档变更

  • 添加了关于使用 BigQuery 与 Gradio 的 DataFrameScatterPlot 组件的指南,由 @abidlabsPR 2794 中实现

完整更新日志

  • 修复了导入 gradio 可能导致 PIL.Image.registered_extensions() 损坏的问题,由 [@aliencaocao](https://github.com/aliencaocao)[PR 2846](https://github.com/gradio-app/gradio/pull/2846) 中修复
  • 修复文档中的 CSS 小故障和导航问题,由 @aliabdPR 2856 中修复
  • 添加了为 gr.ScatterPlot 设置 x_limy_lim 和图例位置的功能,由 @freddyaboultonPR 2807 中实现
  • 以正确的方式删除页脚并设置最小高度,由 @aliabdPR 2860 中实现

3.14.0

新功能

音频组件添加波形视觉支持

添加了 gr.make_waveform() 函数,通过结合音频和可选背景图像创建波形视频,由 @dawoodkhan82@aliabid94 在 [PR 2706](https://github.com/gradio-app/gradio/pull/2706 中实现。有助于使音频输出更易于分享。

waveform screenrecording

允许每个组件接受 every 参数

当组件的初始值为函数时,every 参数会每 every 秒重新运行该函数。由 @abidlabsPR 2806 中实现。这是一个代码示例

import gradio as gr

with gr.Blocks() as demo:
    df = gr.DataFrame(run_query, every=60*60)

demo.queue().launch()

Bug修复

  • 修复了创建过多临时文件的问题,所有文件都具有随机生成的文件路径。现在创建的临时文件更少,并根据文件内容分配一个基于哈希的路径,由 @abidlabsPR 2758 中修复

3.13.2

Bug修复

*无突出显示更改。

文档变更

  • 改进了几个与队列相关的参数的文档,由 @abidlabsPR 2825 中实现

测试和基础设施变更

3.13.1

新功能

新的共享链接

将基于 SSH 端口转发的隧道逻辑替换为基于 frp 的隧道逻辑,由 XciDWauplinPR 2509 中实现

您无需做任何更改,但当您在 launch() 中设置 share=True 时,您将收到如下消息和公共链接,看起来有点不同

Setting up a public link... we have recently upgraded the way public links are generated. If you encounter any problems, please downgrade to gradio version 3.13.0
.
Running on public URL: https://bec81a83-5b5c-471e.gradio.live

这些链接是创建可共享演示更安全、更可扩展的方式!

Bug修复

  • 允许 gr.Dataframe() 接受包含 numpy 数组和其他类型的 pandas.DataFrame 作为其初始值,由 @abidlabsPR 2804 中实现
  • altair 添加到 requirements.txt,由 @freddyaboultonPR 2811 中实现
  • 为内置 UI 组件的图标按钮添加了 aria-labels,由 @emilyuhdePR 2791 中实现

文档变更

  • 修复了“用于地图的绘图组件”指南中的一些拼写错误,由 @freddyaboultonPR 2811 中修复

测试和基础设施变更

完整更新日志

  • 修复了 templates.py 中类参数 visible 的拼写错误,由 @abidlabsPR 2805 中修复
  • 将获取 IP 地址的外部服务从 https://api.ipify.org 切换到 https://checkip.amazonaws.com/,由 @abidlabsPR 2810 中实现

  • 修复了 templates.py 中类参数 visible 的拼写错误,由 @abidlabsPR 2805 中修复
  • 将获取 IP 地址的外部服务从 https://api.ipify.org 切换到 https://checkip.amazonaws.com/,由 @abidlabsPR 2810 中实现

3.13.0

新功能

散点图组件

现在可以直接在 Gradio 中创建散点图了!

gr.ScatterPlot 组件接受一个 pandas dataframe 和一些可选的配置参数,并会自动为您创建图表!

这是 Gradio 中众多原生绘图组件中的第一个!

有关如何使用 gr.ScatterPlot 的示例请参见下方

import gradio as gr
from vega_datasets import data

cars = data.cars()

with gr.Blocks() as demo:
    gr.ScatterPlot(show_label=False,
                   value=cars,
                   x="Horsepower",
                   y="Miles_per_Gallon",
                   color="Origin",
                   tooltip="Name",
                   title="Car Data",
                   y_title="Miles per Gallon",
                   color_legend_title="Origin of Car").style(container=False)

demo.launch()
image

@freddyaboultonPR 2764 中实现

支持 Altair 图

Plot 组件现在可以接受 Altair 图作为值!只需从事件监听器返回一个 Altair 图,Gradio 就会在前端显示它。请参阅下面的示例

import gradio as gr
import altair as alt
from vega_datasets import data

cars = data.cars()
chart = (
    alt.Chart(cars)
    .mark_point()
    .encode(
        x="Horsepower",
        y="Miles_per_Gallon",
        color="Origin",
    )
)

with gr.Blocks() as demo:
    gr.Plot(value=chart)
demo.launch()
image

@freddyaboultonPR 2741 中实现

设置 Label 组件的背景颜色

Label 组件现在接受一个 color 参数,由 @freddyaboultonPR 2736 中实现。color 参数应该是一个有效的 css 颜色名称或十六进制字符串。您可以使用 gr.Label.update 更新颜色!

这允许您使用 Label 组件创建警报和警告框。见下文

import gradio as gr
import random

def update_color(value):
    if value < 0:
        # This is bad so use red
        return "#FF0000"
    elif 0 <= value <= 20:
        # Ok but pay attention (use orange)
        return "#ff9966"
    else:
        # Nothing to worry about
        return None

def update_value():
    choice = random.choice(['good', 'bad', 'so-so'])
    color = update_color(choice)
    return gr.Label.update(value=choice, color=color)


with gr.Blocks() as demo:
    label = gr.Label(value=-10)
    demo.load(lambda: update_value(), inputs=None, outputs=[label], every=1)
demo.queue().launch()

label_bg_color_update

添加巴西葡萄牙语翻译

添加巴西葡萄牙语翻译 (pt-BR.json),由 @pstwhPR 2753 中实现

image

Bug修复

  • 修复了在提供了示例目录时图像缩略图不显示的问题,由 @abidlabsPR 2745 中修复
  • 修复了从 hub 加载音频输入模型时的错误,由 @freddyaboultonPR 2779 中修复。
  • 修复了从字典输入生成高亮文本时实体未合并的问题 @payotoPR 2767 中修复
  • 修复了即使 websocket 连接已关闭,生成事件也未完成运行的错误,由 @freddyaboultonPR 2783 中修复。

完整更新日志

  • 聊天机器人组件中的图像现在会在超过最大宽度时进行调整大小,由 @abidlabsPR 2748 中实现
  • 已将缺失的参数添加到 gr.Blocks().load() 中,由 @abidlabsPR 2755 中实现
  • 将共享 URL 从搜索中取消索引,由 @aliabdPR 2772 中实现
  • 重定向旧链接并修复损坏的链接,由 @aliabdPR 2774 中实现

3.12.0

新功能

Chatbot 组件现在支持 Markdown 的子集(包括粗体、斜体、代码、图像)

您现在可以将一些 Markdown 传递给 Chatbot 组件,它将显示出来,这意味着您也可以传递图像!由 @abidlabsPR 2731 中实现

这是一个引用与 Python 脚本在同一文件夹中的本地图片 lion.jpg 的简单示例

import gradio as gr

with gr.Blocks() as demo:
    gr.Chatbot([("hi", "hello **abubakar**"), ("![](/file=lion.jpg)", "cool pic")])

demo.launch()

Alt text

要查看更真实的示例,请参阅新演示 /demo/chatbot_multimodal/run.py

Latex 支持

为 gr.Markdown 添加了 Mathtext(Latex 的一个子集)支持。由 @kashif@aliabid94PR 2696 中添加。

使用示例

gr.Markdown(
    r"""
    # Hello World! $\frac{\sqrt{x + y}}{4}$ is today's lesson.
    """)
从后端更新 Accordion 属性

您现在可以使用 gr.Accordion.update 更新 Accordion 的 labelopen 状态,由 @freddyaboultonPR 2690 中实现

import gradio as gr

with gr.Blocks() as demo:
    with gr.Accordion(label="Open for greeting", open=False) as accordion:
        gr.Textbox("Hello!")
    open_btn = gr.Button(value="Open Accordion")
    close_btn = gr.Button(value="Close Accordion")
    open_btn.click(
        lambda: gr.Accordion.update(open=True, label="Open Accordion"),
        inputs=None,
        outputs=[accordion],
    )
    close_btn.click(
        lambda: gr.Accordion.update(open=False, label="Closed Accordion"),
        inputs=None,
        outputs=[accordion],
    )
demo.launch()

update_accordion

Bug修复

  • 修复了 utils.version_check() 中缺少请求超时的问题,由 @yujiehecsPR 2729 中修复
  • 修复了 File 组件无法正确将文件预处理为“二进制”字节字符串格式的错误,由 CoffeeVampir3PR 2727 中修复
  • 修复了确保即使是非英语语言,文件名也少于 200 个字符的错误,由 @SkyTNTPR 2685 中修复

文档变更

  • 改进了移动设备上文档的性能,由 @aliabdPR 2730 中实现

完整更新日志

  • 使尝试示例按钮更显眼,由 @aliabdPR 2705 中实现
  • 修复文档中的 ID 冲突,由 @aliabdPR 2713 中修复
  • 修复指南文档中的拼写错误,由 @andridnsPR 2722 中修复
  • 为视频组件添加了 include_audio 选项。当 True 时,对于 source="webcam",这将录制音频和视频;对于 source="upload",这将保留上传视频中的音频,由 @mandargogatePR 2721 中实现

贡献者致敬

3.11.0

新功能

上传按钮

现在有一个名为 UploadButton 的新组件,它是一个文件上传组件,但以按钮形式呈现!您还可以以列表形式指定它应该接受的文件类型(例如:imagevideoaudiotext 或通用 file)。由 @dawoodkhan82PR 2591 中添加。

使用示例

import gradio as gr

def upload_file(files):
    file_paths = [file.name for file in files]
    return file_paths

with gr.Blocks() as demo:
    file_output = gr.File()
    upload_button = gr.UploadButton("Click to Upload a File", file_types=["image", "video"], file_count="multiple")
    upload_button.upload(upload_file, upload_button, file_output)

demo.launch()
API 文档页面更新

新的 API 文档页面,包含浏览器内 Playground 和更新的美学设计。 @gary149PR 2652 中实现

登录页面更新

以前我们的登录页面有自己的 CSS,没有暗色模式,并且在凭据错误时显示一个丑陋的 json 消息。现在页面更具美观性,添加了暗色模式支持,并提供了更友好的错误消息。 @aliabid94PR 2684 中实现

直接访问请求对象

您现在可以直接在 Python 函数中访问 Request 对象,由 @abidlabsPR 2641 中实现。这意味着您可以访问请求头、客户端 IP 地址等。要使用它,请为您的函数添加一个参数,并将其类型提示设置为 gr.Request。这是一个简单的示例

import gradio as gr

def echo(name, request: gr.Request):
    if request:
        print("Request headers dictionary:", request.headers)
        print("IP address:", request.client.host)
    return name

io = gr.Interface(echo, "textbox", "textbox").launch()

Bug修复

  • 修复了限制文件通过 Websocket 发送至 16MB 的错误。新限制现为 1GB,由 @abidlabsPR 2709 中修复

文档变更

  • 更新了关于将 Gradio 演示作为 Web 组件嵌入到 Spaces 中的文档,由 @julien-cPR 2698 中实现
  • 更新了指南中的 IFrames,使其使用主机 URL 而非 Space 名称,以与嵌入 Spaces 的新方法保持一致,由 @julien-cPR 2692 中实现
  • 网站上每个演示都带有 Colab 按钮!只需点击在 Colab 中打开,即可在那里运行演示。

https://user-images.githubusercontent.com/9021060/202878400-cb16ed47-f4dd-4cb0-b2f0-102a9ff64135.mov

完整更新日志

  • gr.Interface.load() 提供更好的警告和错误消息,由 @abidlabsPR 2694 中实现
  • 在 docs 和 /demos 中添加在 colab 中打开演示按钮,由 @aliabdPR 2608 中实现
  • 对组件文档字符串中的类型应用不同的格式,由 @aliabdPR 2707 中实现

3.10.1

Bug修复

  • 将 kwargs 传递给 gr.Interface.load(),由 @abidlabsPR 2669 中实现

完整更新日志

  • 清理嵌入式 Colab 模式下打印的语句,由 @aliabid94PR 2612 中实现

3.10.0

  • 增加了对 Textbox 组件 'password''email' 类型的支持。 @pngwnPR 2653 中实现
  • 如果 Textbox 组件的 type 不是“text”、“email”或“password”,则 gr.Textbox 组件现在会抛出异常 @pngwnPR 2653 中实现。这将导致使用已弃用的 gr.Textbox(type="number") 的演示抛出异常。

Bug修复

  • 更新了测试中使用的 FastApi 最低版本至 0.87,由 @freddyaboultonPR 2647 中实现
  • 修复了带示例的接口无法通过 gr.Interface.load 加载的错误,由 @freddyaboulton PR 2640 中修复
  • 修复了组件的 interactive 属性无法更新的错误,由 @freddyaboultonPR 2639 中修复
  • 修复了某些 URL 未被识别为有效 URL,从而导致在各种组件中无法正确加载的错误,由 @abidlabsPR 2659 中修复

文档变更

  • 修复了“05_using_blocks_like_functions.md”中嵌入式演示名称的一些拼写错误,由 @freddyaboultonPR 2656 中修复

完整更新日志

  • 增加了对 Textbox 组件 'password''email' 类型的支持。 @pngwnPR 2653 中实现

3.9.1

Bug修复

  • 仅在加载时对 md 和 html 设置最小高度,由 @pngwnPR 2623 中实现

文档变更

  • 查看文档以获取最新的 gradio main 提交以及最新的 pip 发布版本

main-vs-pip

  • 修改了“连接到数据库指南”,使用 pd.read_sql 而不是低级 postgres 连接器,由 @freddyaboultonPR 2604 中实现

完整更新日志

  • 用于查看最新或主分支文档的下拉菜单,由 @aliabdPR 2544 中实现
  • 允许 gr.Templates 接受参数以覆盖默认值,由 @abidlabsPR 2600 中实现
  • 如果组件在构造时使用 typesource 参数(对于接受这些参数的组件)的无效参数,则会抛出 ValueError(),在 PR 2610 中实现
  • 允许在使用队列时进行认证,由 @GLGDLYPR 2611 中实现

3.9

新功能

  • Gradio 现在直接嵌入到 Colab 中,无需共享链接,由 @aliabid94PR 2455 中实现
通过 api_name 调用加载的应用中的函数

当您使用 gr.Blocks.load 加载上游应用时,您现在可以使用 api_name 参数指定要调用的函数。

import gradio as gr
english_translator = gr.Blocks.load(name="spaces/gradio/english-translator")
german = english_translator("My name is Freddy", api_name='translate-to-german')

api_name 参数将优先于 fn_index 参数。

Bug修复

  • 修复了 File, Model3D 和 Audio 示例不能使用 None 值的错误,由 @freddyaboultonPR 2588 中修复
  • 修复了 Plotly 地图指南和演示中的链接,由 @dawoodkhan82PR 2578 中修复
  • gr.Blocks.load() 现在可以正确加载 Spaces 中的示例文件 @abidlabsPR 2594 中实现
  • 修复了图像清除后开始上传对话框的错误 @mezotakenPR 2577 中修复

文档变更

  • 添加了关于如何配置队列以获得最大性能的指南,由 @abidlabsPR 2558 中实现

完整更新日志

3.8.2

Bug修复

  • 确保通过 Spaces 嵌入的 gradio 应用为预测使用正确的端点。 @pngwnPR 2567 中实现
  • 确保通过 Spaces 嵌入的 Gradio 应用使用正确的 websocket 协议。 @pngwnPR 2571 中实现

新功能

持续运行事件

Gradio 现在支持在固定时间表上持续运行事件的功能。要使用此功能,请将 every=# 秒 传递给事件定义。这将每给定秒数运行一次事件!

这可以用于

  • 创建显示最新数据的实时可视化
  • 根据后端的变化自动刷新前端状态

这是一个每半秒刷新一次的实时图表示例

import math
import gradio as gr
import plotly.express as px
import numpy as np


plot_end = 2 * math.pi


def get_plot(period=1):
    global plot_end
    x = np.arange(plot_end - 2 * math.pi, plot_end, 0.02)
    y = np.sin(2*math.pi*period * x)
    fig = px.line(x=x, y=y)
    plot_end += 2 * math.pi
    return fig


with gr.Blocks() as demo:
    with gr.Row():
        with gr.Column():
            gr.Markdown("Change the value of the slider to automatically update the plot")
            period = gr.Slider(label="Period of plot", value=1, minimum=0, maximum=10, step=1)
            plot = gr.Plot(label="Plot (updates every half second)")

    dep = demo.load(get_plot, None, plot, every=0.5)
    period.change(get_plot, period, plot, every=0.5, cancels=[dep])

demo.queue().launch()

live_demo

文档变更

  • 解释了在使用重新加载模式时如何设置 queueauth,由 @freddyaboultonPR 3089 中实现

完整更新日志

  • 允许通过将 api_key 传递给 gr.Interface.load() 来加载私有 Spaces,由 @abidlabsPR 2568 中实现

3.8

新功能

  • 允许事件监听器接受单个字典作为其参数,其中键是组件,值是组件值。这是通过将事件监听器中的输入组件作为集合而不是列表传递来设置的。 @aliabid94PR 2550 中实现

Bug修复

完整更新日志

  • 为事件监听器添加了 every 关键字,该关键字以固定时间表运行事件,由 @freddyaboultonPR 2512 中实现
  • 修复使用 plotly 时的空白问题。 @dawoodkhan82PR 2548 中修复
  • 为所有画廊图像应用适当的替代文本。 @camenduruPR 2358 中实现

3.7

新功能

批量处理函数

Gradio 现在支持传递批量处理函数的能力。批量处理函数是接受输入列表并返回预测列表的函数。

例如,这是一个批量处理函数,它接受两个输入列表(单词列表和整数列表),并返回修剪后的单词列表作为输出

import time

def trim_words(words, lens):
    trimmed_words = []
    time.sleep(5)
    for w, l in zip(words, lens):
        trimmed_words.append(w[:l])
    return [trimmed_words]

使用批量处理函数的优点是,如果启用排队,Gradio 服务器可以自动批量处理传入请求并并行处理它们,从而可能加快您的演示速度。Gradio 代码如下所示(请注意 batch=Truemax_batch_size=16 — 这两个参数都可以传递给事件触发器或 Interface 类)

import gradio as gr

with gr.Blocks() as demo:
    with gr.Row():
        word = gr.Textbox(label="word", value="abc")
        leng = gr.Number(label="leng", precision=0, value=1)
        output = gr.Textbox(label="Output")
    with gr.Row():
        run = gr.Button()

    event = run.click(trim_words, [word, leng], output, batch=True, max_batch_size=16)

demo.queue()
demo.launch()

在上面的示例中,可以并行处理 16 个请求(总推理时间为 5 秒),而不是每个请求单独处理(总推理时间为 80 秒)。

上传事件

VideoAudioImageFile 组件现在支持 upload() 事件,当用户将文件上传到这些组件中的任何一个时触发。

示例用法

import gradio as gr

with gr.Blocks() as demo:
    with gr.Row():
        input_video = gr.Video()
        output_video = gr.Video()

     # Clears the output video when an input video is uploaded
    input_video.upload(lambda : None, None, output_video)

Bug修复

  • 修复了 Plotly 动画、交互性、标题、图例等不正常工作的问题。 @dawoodkhan82PR 2486 中修复
  • 防止对 /api 端点的请求在事件启用队列时跳过队列,由 @freddyaboultonPR 2493 中实现
  • 修复了事件触发器中 cancels 的错误,使其在渲染多个 Blocks 时正常工作,由 @abidlabsPR 2530 中修复
  • 防止事件的无效目标导致整个应用程序崩溃。 @pngwnPR 2534 中实现
  • 在渲染多个应用时,正确地将已取消的事件出队,由 @freddyaboultonPR 2540 中实现
  • 修复了由于 height/width 参数未被使用而导致视频被裁剪的问题 @hannahblairPR 4946 中修复

文档变更

  • 在演示页面的“表格与图表”部分添加了一个交互式仪表板示例,由 @freddyaboultonPR 2508 中实现

完整更新日志

  • 修复了用户在本地构建 Gradio 并尝试使用 share=True 时的错误消息,由 @abidlabsPR 2502 中修复
  • 允许 render() 函数返回自身,由 @Raul9595PR 2514 中实现
  • 修复了 Plotly 动画、交互性、标题、图例等不正常工作的问题。 @dawoodkhan82PR 2486 中修复
  • Gradio 现在支持批量处理函数,由 @abidlabsPR 2218 中实现
  • VideoAudioImageFile 组件添加 upload 事件 @dawoodkhan82PR 2448 中实现
  • 更改 Spaces 的 websocket 路径,因为在 Spaces 上不再需要为 websocket 连接提供不同的 URL,由 @abidlabsPR 2528 中实现
  • 当事件在 Blocks 范围之外定义时,显示更清晰的错误消息;当尝试将 SeriesParallelBlocks 一起使用时,显示警告,由 @abidlabsPR 2543 中实现
  • 增加了对 float64float16uint16 格式的音频样本的支持,由 @abidlabsPR 2545 中实现

3.6

新功能

取消正在运行的事件

当其他事件被触发时,正在运行的事件可以被取消!要测试此功能,请将 cancels 参数传递给事件监听器。要使此功能生效,必须启用队列。

cancel_on_change_rl

代码

import time
import gradio as gr

def fake_diffusion(steps):
    for i in range(steps):
        time.sleep(1)
        yield str(i)

def long_prediction(*args, **kwargs):
    time.sleep(10)
    return 42


with gr.Blocks() as demo:
    with gr.Row():
        with gr.Column():
            n = gr.Slider(1, 10, value=9, step=1, label="Number Steps")
            run = gr.Button()
            output = gr.Textbox(label="Iterative Output")
            stop = gr.Button(value="Stop Iterating")
        with gr.Column():
            prediction = gr.Number(label="Expensive Calculation")
            run_pred = gr.Button(value="Run Expensive Calculation")
        with gr.Column():
            cancel_on_change = gr.Textbox(label="Cancel Iteration and Expensive Calculation on Change")

    click_event = run.click(fake_diffusion, n, output)
    stop.click(fn=None, inputs=None, outputs=None, cancels=[click_event])
    pred_event = run_pred.click(fn=long_prediction, inputs=None, outputs=prediction)

    cancel_on_change.change(None, None, None, cancels=[click_event, pred_event])


demo.queue(concurrency_count=1, max_size=20).launch()

对于接口,如果函数使用了 yield 语句,将自动添加一个停止按钮。

import gradio as gr
import time

def iteration(steps):
    for i in range(steps):
       time.sleep(0.5)
       yield i

gr.Interface(iteration,
             inputs=gr.Slider(minimum=1, maximum=10, step=1, value=5),
             outputs=gr.Number()).queue().launch()

stop_interface_rl

Bug修复

  • 为 HTML 和 Markdown 组件添加加载状态跟踪器 UI。 @pngwnPR 2474 中实现
  • 修复了如果来源不是网络摄像头,前端视频会被镜像的错误,由 @freddyaboultonPR 2475 中修复
  • 为时间序列组件添加清除按钮 @dawoodkhan82PR 2487 中实现
  • 从临时文件名中移除特殊字符,以便组件可以提供文件 @abidlabsPR 2480 中实现
  • 修复了将 gradio 作为子应用程序挂载时无限重新加载循环的错误,由 @freddyaboultonPR 2477 中修复

文档变更

  • 添加了一个演示,展示了如何在预测完成时播放声音警报,由 @abidlabsPR 2478 中实现

完整更新日志

3.5

Bug修复

  • 确保通过 web 组件嵌入 Gradio 应用时,Gradio 不会控制 HTML 页面标题,此行为通过将 control_page_title="true" 添加到 web 组件中进行翻转。 @pngwnPR 2400 中实现

  • 通过异步迭代减少了迭代输出演示中的延迟 @freddyaboultonPR 2409 中实现

  • 修复了在极高负载下队列卡住的错误,由 @freddyaboultonPR 2374 中修复

  • 在以下条件为真时,确保组件始终表现得如同设置了 interactive=True

    • 未提供默认值,
    • 它们未被设置为事件的输入或输出,
    • 未设置 interactive 关键字参数。

    @pngwnPR 2459 中实现。

新功能

  • Image 组件设置为 source="upload" 时,现在可以通过拖放图像来替换先前上传的图像,由 @pngwnPR 1711 中实现。
  • gr.Dataset 组件现在接受 HTMLMarkdown 组件,由 @abidlabsPR 2437 中实现。

文档变更

重大更改

  • Carousel 组件已正式弃用。自 Gradio 3.0 起,包含 Carousel 组件的代码会抛出警告。从下个版本开始,Carousel 组件将引发异常。

完整更新日志

  • 通过在前端使用临时文件而非 base64 表示形式,加快了 Gallery 组件的速度,由 @proxyphi@pngwn@abidlabsPR 2265 中实现。
  • 通过在某些指南中不加载 Gradio Web 组件,修复了指南中一些嵌入式演示的问题,由 @freddyaboultonPR 2403 中实现。
  • Image 组件设置为 source="upload" 时,现在可以通过拖放图像来替换先前上传的图像,由 @pngwnPR 2400 中实现。
  • 改进了 Blocks.load() 事件的文档,由 @abidlabsPR 2413 中实现。
  • 通过异步迭代减少了迭代输出演示中的延迟 @freddyaboultonPR 2409 中实现
  • 更新了共享链接消息以引用新的 Spaces 硬件,由 @abidlabsPR 2423 中实现。
  • 如果 Spaces 服务宕机,自动重启,由 @aliabdPR 2405 中实现。
  • Carousel 组件现已弃用,由 @abidlabsPR 2434 中实现。
  • 在 UI 测试中从源代码构建 Gradio,由 @freddyaboultonPR 2440 中实现。
  • 将 “return ValueError” 更改为 “raise ValueError”,由 @vzakharovPR 2445 中实现。
  • 添加了使用 gr.Plot() 组件创建地图演示的指南,由 @dawoodkhan82PR 2402 中实现。
  • TextboxNumber 组件添加了 blur 事件,由 @dawoodkhan82PR 2448 中实现。
  • 阻止 Gradio 启动即使被终止后仍占用端口的问题,由 @aliabid94PR 2453 中实现。
  • 修复了触摸屏设备上嵌入式接口的问题,由 @aliabdPR 2457 中实现。
  • 将所有演示上传到 Spaces,由 @aliabdPR 2281 中实现。

3.4.1

新功能

1. 在发布历史中查看过去和即将发生的变化 👀

您现在可以直接在网站上查看 Gradio 的发布历史,并跟踪即将发生的变化。只需前往 此处

release-history

Bug修复

  1. 修复指南图像路径中的拼写错误,由 @freddyaboultonPR 2357 中实现。
  2. 如果 Blocks 中存在具有相同 ID 的重复组件,则抛出错误,由 @abidlabsPR 2359 中实现。
  3. 捕获音频组件上的权限异常,由 @Ian-GLPR 2330 中实现。
  4. 修复 image_classifier_interface_load 演示,由 @freddyaboultonPR 2365 中实现。
  5. 通过引入 gr.Row(variant="compact") 修复了相邻组件合并无间隙的问题,由 @aliabid94PR 2291 中实现。这同时弃用了 Component.style 的以下参数:roundmarginborder
  6. 修复音频流传输,之前在 PR 2351 中出现卡顿。非常感谢 @yannickfunk 提出的解决方案。
  7. 修复了新的可输入滑块不遵守最小值和最大值的错误,由 @dawoodkhan82PR 2380 中实现。

文档变更

  1. 新指南:连接到数据库 🗄️

    @freddyaboulton 撰写的新指南,解释了如何使用 Gradio 将您的应用程序连接到数据库。阅读更多内容请点击 此处

  2. 新指南:运行后台任务 🥷

    @freddyaboulton 撰写的新指南,解释了如何从 Gradio 应用程序运行后台任务。阅读更多内容请点击 此处

  3. Image 组件文档的小修复,由 @abidlabsPR 2372 中实现。

完整更新日志

  • 创建关于如何将应用程序连接到云端托管数据库的指南,由 @freddyaboultonPR 2341 中实现。
  • 删除了 analytics 依赖项,由 @abidlabsPR 2347 中实现。
  • 添加了从您的应用程序启动后台任务的指南,由 @freddyaboultonPR 2350 中实现。
  • 修复指南图像路径中的拼写错误,由 @freddyaboultonPR 2357 中实现。
  • 如果 Blocks 中存在具有相同 ID 的重复组件,则抛出错误,由 @abidlabsPR 2359 中实现。
  • 热修复:将版本修复回 3.4,由 @abidlabsPR 2361 中实现。
  • 将 version.txt 更改为 3.4 而不是 3.4.0,由 @aliabdPR 2363 中实现。
  • 捕获音频组件上的权限异常,由 @Ian-GLPR 2330 中实现。
  • 修复 image_classifier_interface_load 演示,由 @freddyaboultonPR 2365 中实现。
  • Image 组件文档的小修复,由 @abidlabsPR 2372 中实现。
  • 自动化发布说明,由 @freddyaboultonPR 2306 中实现。
  • 修复了文档中的小拼写错误,由 @julien-cPR 2373 中实现。
  • 增加了禁用示例预处理/后处理的功能,由 @abidlabsPR 2383 中实现。
  • 在网站 docker 中复制 changelog 文件,由 @aliabdPR 2384 中实现。
  • 允许用户提供 gr.update() 字典,即使后处理已禁用,由 @abidlabsPR 2385 中实现。
  • 修复了在重新加载模式下运行的应用程序因错误而永久挂起的问题,由 @freddyaboultonPR 2394 中实现。
  • 修复了新的可输入滑块不遵守最小值和最大值的错误,由 @dawoodkhan82PR 2380 中实现。

3.4

新功能

1. 画廊标题 🖼️

您现在可以为 Gallery 组件中的图像添加标题。为此,您需要传入 (图像, {字符串} 标题) 元组的 {列表}。这是可选的,组件也接受仅包含图像的列表。

这是一个示例:

import gradio as gr

images_with_captions = [
    ("https://images.unsplash.com/photo-1551969014-7d2c4cddf0b6", "Cheetah by David Groves"),
    ("https://images.unsplash.com/photo-1546182990-dffeafbe841d", "Lion by Francesco"),
    ("https://images.unsplash.com/photo-1561731216-c3a4d99437d5", "Tiger by Mike Marrah")
    ]

with gr.Blocks() as demo:
    gr.Gallery(value=images_with_captions)

demo.launch()
gallery_captions
2. 在滑块中输入值 🔢

您现在可以直接在 Slider 组件中输入值!看起来是这样的:

type-slider

3. 更好的草图和图像修复 🎨

我们对 Image 组件进行了大量更改,以支持更好的草图和图像修复。

现在支持:

  • 独立的黑白草图
import gradio as gr
demo = gr.Interface(lambda x: x, gr.Sketchpad(), gr.Image())
demo.launch()

bw

  • 独立的彩色草图
import gradio as gr
demo = gr.Interface(lambda x: x, gr.Paint(), gr.Image())
demo.launch()

color-sketch

  • 带有黑白或彩色草图的可上传图像
import gradio as gr
demo = gr.Interface(lambda x: x, gr.Image(source='upload', tool='color-sketch'), gr.Image()) # for black and white, tool = 'sketch'
demo.launch()

sketch-new

  • 带有黑白或彩色草图的网络摄像头
import gradio as gr
demo = gr.Interface(lambda x: x, gr.Image(source='webcam', tool='color-sketch'), gr.Image()) # for black and white, tool = 'sketch'
demo.launch()

webcam-sketch

以及其他修复:

Bug修复

  1. 修复了队列中不遵守最大并发计数的问题,由 @freddyaboultonPR 2286 中实现。
  2. 修复:队列可能被阻塞,由 @SkyTNTPR 2288 中实现。
  3. 支持在示例缓存中使用 gr.update(),由 @abidlabsPR 2309 中实现。
  4. iframes 的剪贴板修复,由 @abidlabsPR 2321 中实现。
  5. 修复:添加新列时,Dataframe 列标题会被重置的问题,由 @dawoodkhan82PR 2318 中实现。
  6. 添加了对 Video、Audio 和 Image 组件中 URL 的支持,由 @abidlabsPR 2256 中实现。
  7. 添加了关于如何创建和使用 Gradio FastAPI 应用程序的文档,由 @abidlabsPR 2263 中实现。

文档变更

  1. 在网站中添加了 Playground 标签页,由 @aliabdPR 1860 中实现。
  2. Gradio 用于表格数据科学工作流程指南,由 @merveenoyanPR 2199 中实现。
  3. postprocesspreprocess 提升为有文档的参数,由 @abidlabsPR 2293 中实现。
  4. 更新 2)key_features.md,由 @voidxdPR 2326 中实现。
  5. 将文档添加到 Blocks 上下文后处理函数,由 @Ian-GLPR 2332 中实现。

测试和基础设施变更

  1. 网站修复和重构,由 @aliabdPR 2280 中实现。
  2. 发布时不再部署到 Spaces,由 @freddyaboultonPR 2313 中实现。

完整更新日志

贡献者致敬

3.3

新功能

1. 迭代输出 ⏳

您现在只需让函数返回一个生成器即可创建迭代输出!

这是用于生成以下接口的示例(部分代码)。查看完整代码

def predict(steps, seed):
    generator = torch.manual_seed(seed)
    for i in range(1,steps):
        yield pipeline(generator=generator, num_inference_steps=i)["sample"][0]

example

2. 手风琴布局 🆕

此版本的 Gradio 引入了 Blocks 的新布局组件:Accordion。将您的元素包装在整洁、可扩展的布局中,允许用户根据需要切换它们。

用法:(阅读文档

with gr.Accordion("open up"):
# components here

accordion

3. Skops 集成 📈

我们与 skops 的新集成允许您直接从 hub 加载表格分类和回归模型。

这是一个分类示例,展示了为 模型 设置接口有多快。

import gradio as gr
gr.Interface.load("models/scikit-learn/tabular-playground").launch()

187936493-5c90c01d-a6dd-400f-aa42-833a096156a1

完整更新日志

贡献者致敬

3.2

新功能

1. 队列改进 🥇

我们实现了一个全新的队列系统,它基于 Web 套接字而非 HTTP 长轮询。除了其他方面,这使我们能够更好地管理 Hugging Face Spaces 上的队列大小。此外,您还可以添加额外的队列相关参数:

  • 现在支持并发工作者(并行化)
demo = gr.Interface(...)
demo.queue(concurrency_count=3)
demo.launch()
  • 配置最大队列大小
demo = gr.Interface(...)
demo.queue(max_size=100)
demo.launch()
  • 如果用户关闭他们的标签页/浏览器,他们将离开队列,这意味着演示将对其他人运行得更快
2. 示例修复
  • Dataframe 示例将正确渲染,并在 UI 中看起来更清晰:(感谢 PR #2125)

Screen Shot 2022-08-30 at 8 29 58 PM

  • 图像和视频缩略图被裁剪,看起来更整洁和统一:(感谢 PR #2109)

Screen Shot 2022-08-30 at 8 32 15 PM

  • PR #2131 和 #2064 中的其他修复使得设计和使用示例变得更容易
3. 组件修复 🧱
  • 在其样式标签中指定图像的宽度和高度(感谢 PR #2133)
components.Image().style(height=260, width=300)
  • 视频自动转换以使其在浏览器中可播放(感谢 PR #2003)。Gradio 将检查视频格式是否可在浏览器中播放,如果不可播放,将自动将其转换为可播放的格式(mp4)。
  • 将 json 文件路径传递给 Label 组件(感谢 PR #2083)
  • 随机化 Slider 的默认值(感谢 PR #1935)

slider-random

  • PR #2100 中对 State 的改进
4. 随机化输入滑块并在页面加载时重新加载数据的功能
  • 在某些情况下,您希望在每个用户加载页面应用程序时向他们显示一组不同的输入数据。例如,您可能希望随机化“种子”Slider 输入的值。或者您可能希望显示一个带有当前日期的 Textbox。我们现在支持将函数作为输入组件的默认值传入。当您传入一个函数时,每次有人加载演示时它都会被重新评估,允许您为不同的用户重新加载/更改数据。

这是一个将当前日期时间加载到输入 Textbox 中的示例:

import gradio as gr
import datetime

with gr.Blocks() as demo:
    gr.Textbox(datetime.datetime.now)

demo.launch()

请注意,我们不评估函数 — datetime.datetime.now() — 我们传入函数本身以获得此行为 — datetime.datetime.now

由于随机化 Slider 的初始值是常见的用例,我们添加了一个 randomize 关键字参数,您可以使用它来随机化其初始值

import gradio as gr
demo = gr.Interface(lambda x:x, gr.Slider(0, 10, randomize=True), "number")
demo.launch()
5. 新指南 🖊️

完整更新日志

贡献者致敬

3.1

新功能

1. 在任何网站上嵌入演示 💻

通过 PR #1444,Gradio 现在作为 Web 组件发布。这意味着演示可以原生嵌入到网站中。您只需添加两行代码:一行用于加载 gradio javascript,另一行用于链接到演示后端。

这是一个从 Hugging Face space 嵌入演示的简单示例:

<script
	type="module"
	src="https://#/3.0.18/gradio.js"
></script>
<gradio-app space="abidlabs/pytorch-image-classifier"></gradio-app>

但您也可以嵌入在任何地方运行的演示,只需将演示链接到 src 而不是 space。事实上,gradio 网站上的所有演示都是这样嵌入的。

Screen Shot 2022-07-14 at 2 41 44 PM

嵌入 Gradio 演示 指南中阅读更多内容。

2. 重新加载模式 👨‍💻

重新加载模式通过在代码更改时自动重新加载演示,帮助开发者更快地创建 Gradio 演示。它支持在 Python IDE(VS Code、PyCharm 等)、终端以及 Jupyter Notebook 中进行开发。

如果您的演示代码在一个名为 app.py 的脚本中,您现在可以运行 gradio app.py 而不是 python app.py,这将以重新加载模式启动演示。

Launching in reload mode on: http://127.0.0.1:7860 (Press CTRL+C to quit)
Watching...
WARNING: The --reload flag should not be used in production on Windows.

如果您正在使用 Jupyter 或 Colab Notebook,请改用这些魔术命令:导入 gradio 时使用 %load_ext gradio,在包含演示代码的单元格顶部使用 %%blocks。这是一个示例,展示了开发速度如何加快:

Blocks

3. gr.Image() 上的图像修复支持 🎨

我们更新了 Image 组件,以增加对图像修复演示的支持。它通过添加 tool="sketch" 作为参数来实现,该参数将图像和可绘制的蒙版都传递给您的预测函数。

这是来自 LAMA space 的一个示例:

FXApVlFVsAALSD-

4. Dataframes 中的 Markdown 和 HTML 支持 🔢

我们在 PR #1684 中升级了 Dataframe 组件,以支持在单元格中渲染 Markdown 和 HTML。

这意味着您可以构建如下所示的 Dataframes:

image (8)

5. 用于 Blocks 的 gr.Examples() 🧱

我们添加了 gr.Examples 组件助手,允许您向任何 Blocks 演示添加示例。这个类是 gr.Dataset 组件的包装器。

Screen Shot 2022-07-14 at 2 23 50 PM

gr.Examples 接受两个必需参数:

  • examples 接受嵌套列表
  • inputs 接受组件或组件列表

您可以在 Examples 文档向您的演示添加示例指南 中阅读更多内容。

6. 音频流修复

通过 PR 1828,我们现在隐藏了状态加载动画,并消除了流媒体中的回声。查看 stream_audio 演示或阅读我们的 实时语音识别 指南以获取更多信息。

Screen Shot 2022-07-19 at 6 02 35 PM

完整更新日志

贡献者致敬

3.0

🔥 Gradio 3.0 是该库有史以来最大的更新。

新功能

1. Blocks 🧱

Blocks 是一个全新的、低级别的 API,允许您完全控制应用程序的数据流和布局。它允许您构建非常复杂的、多步的应用程序。例如,您可能希望:

  • 将相关演示作为多个选项卡分组到一个 Web 应用程序中
  • 更改演示的布局,而不是仅仅将所有输入放在左侧,输出放在右侧
  • 拥有多步界面,其中一个模型的输出成为下一个模型的输入,或具有更灵活的数据流
  • 根据用户输入更改组件的属性(例如,下拉菜单中的选项)或其可见性

这是一个创建以下演示的简单示例:

import gradio as gr

def update(name):
    return f"Welcome to Gradio, {name}!"

demo = gr.Blocks()

with demo:
    gr.Markdown(
    """
    # Hello World!
    Start typing below to see the output.
    """)
    inp = gr.Textbox(placeholder="What is your name?")
    out = gr.Textbox()

    inp.change(fn=update,
               inputs=inp,
               outputs=out)

demo.launch()

hello-blocks

阅读我们的 Blocks 简介 指南了解更多信息,并加入 🎈 Gradio Blocks Party

2. 我们经过改造的设计 🎨

我们已将整个库的设计进行了升级:从组件和布局到暗模式。

kitchen_sink

3. 全新的网站 💻

我们升级了 gradio.app,使其更简洁、更快速、更易于使用。我们的文档现在直接在页面中嵌入了组件和演示。因此,您可以快速找到所需内容。

website

4. 新组件:Model3D、Dataset 等。

我们在 3.0 中引入了许多新组件,包括 Model3DDatasetMarkdownButtonGallery。您可以在 此处 找到所有组件并进行试用。

Model3d

完整更新日志

贡献者致敬