Gradio 月活用户突破百万!

阅读更多
Gradio logo

更新日志

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 - Babylon 更新,用于 model3D。感谢 @CedricGuillemet!
  • #10890 01b88c7 - 改进 JS Client 中的 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 - 修复当 interactive=FalseMultimodalTextbox 中按钮禁用问题。感谢 @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 Sketch:移除 HF Inference 健康检查。感谢 @aliabid94!
  • #10834 c05610c - 添加深度链接。感谢 @freddyaboulton!
  • #10838 a06c7e4 - 允许在 Gradio Sketch 中进行迭代编码。感谢 @aliabid94!
  • #10862 243942e - 修复 gr.on 事件监听器的类型。感谢 @JackismyShephard!
  • #10859 a1862f5 - 修复加载事件监听器的类型。感谢 @JackismyShephard!
  • #10854 1649b00 - 在 Markdown 组件(以及使用 Markdown 的组件,如 gr.Chatbot)中添加对 mermaid.js 的支持。感谢 @abidlabs!
  • #10812 6384bcc - 基于 Jedi 的 Python 代码补全,用于 gr.Code。感谢 @whitphx!
  • #10870 f40e008 - 更改 gr.DeepLinkButton 的默认变体为 secondary。感谢 @abidlabs!

修复

  • #10841 8ff0a5e - 修复 bash API 返回文件的路径生成问题。感谢 @cansik!
  • #10860 fb4c3da - 错误修复:如果启动时存在 root_path,则注销。感谢 @azharizz!

5.22.0

特性

  • #10824 4d78710 - Sketch 代码生成器。感谢 @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 - 修复数据框中的过度滚动错误。感谢 @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 Sketch 中的事件监听器。感谢 @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 chatinterface 行为为流式传输。感谢 @abidlabs!
  • #10500 16d419b - 允许仅更新组件属性的函数通过设置 js=True 在前端运行。感谢 @abidlabs!

5.19.0

特性

  • #10647 b43200d - 数据框的自定义样式。感谢 @abidlabs!
  • #10577 374b762 - 支持 gr.LoginButton 用于 gr.load()。感谢 @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 版本 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 - 修复了移动端 Sidebar 的问题。 感谢 @dawoodkhan82!
  • #10582 1299267 - 更改了 sidebar 位置。 感谢 @dawoodkhan82!
  • #10511 c4aa886 - 在 playground 中实现了语义搜索。 感谢 @aliabd!

修复

  • #10607 c354f5f - 添加了空 dataframe 功能。 感谢 @hannahblair!
  • #10596 a8bde76 - 修复了当未提供 header 时,gr.Dataframe 上方的 margin 问题。 感谢 @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 - 在 dataframe 中选择整行或整列。 感谢 @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 - 修复了 Auth 问题。 感谢 @freddyaboulton!
  • #10466 8e2cf2f - 修复了 micropip.install 的包装器函数,使其抛出原始错误,以获得更好的调试体验。 感谢 @whitphx!
  • #10548 bcbb7b6 - 修复了元组的 DF Postprocess。 感谢 @freddyaboulton!
  • #10546 27155cf - Native Plot 尊重 height 参数。 感谢 @freddyaboulton!
  • #10534 855d870 - Footer 对齐修复。 感谢 @aliabid94!
  • #10535 d909868 - 确保 max_height 应用于 gr.Dataframe。 感谢 @hannahblair!
  • #10547 083d68b - quick_fix_client。 感谢 @aliabid94!
  • #10521 79937fd - 更改了 dataframe headers 中的 word-break 属性。 感谢 @hannahblair!
  • #10520 2a1fc2a - 确保链接在 dataframe 中按预期工作。 感谢 @hannahblair!
  • #10524 ccf590c - 默认情况下展开行中的选项卡。 感谢 @aliabid94!
  • #10531 a18ac9c - 修复了当提供初始值时,plots 无法加载的错误。 感谢 @freddyaboulton!

5.15.0

特性

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

修复

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

5.14.0

特性

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

修复

  • #10459 fa220a3 - 补丁 plotly 需求,强制安装 v5 以及 altair。 感谢 @whitphx!

5.13.2

特性

  • #10452 dd178f3 - 对示例 dataframes 进行了微小的调整。 感谢 @hannahblair!
  • #10426 2167f58 - 更新了 Pyodide 到 0.27.2。 感谢 @whitphx!
  • #10448 337b522 - 对 gr.ChatMessage 和 chatbot 消息之间的间距进行了小的调整。 感谢 @abidlabs!

5.13.1

特性

  • #10370 71c8b8a - 使用 None 清除 Image Editor Value。 感谢 @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 中修改 chatbot 值。 感谢 @abidlabs!
  • #10367 5881296 - 改进了组件文档字符串和杂项文档。 感谢 @abidlabs!
  • #10377 feb1e81 - 向 gr.Dataframe 添加了带有全屏按钮的工具栏。 感谢 @hannahblair!
  • #10341 b0cf92f - PWA 图标自定义。 感谢 @whitphx!
  • #10392 4d47e4b - 向 Chatbot 元数据添加了一个 log 参数,允许在思想标题旁边显示 str 内容。 感谢 @abidlabs!
  • #10352 6a7cfc4 - Client 和 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 - 修复了当手动更改输入值时,dataframe value 属性未更新的错误。 感谢 @abidlabs!

修复

  • #10369 eb85edf - 快速修复:0 被 Slider/Number 问题忽略。 感谢 @dawoodkhan82!
  • #10357 43e7cce - 修复了 ImageEditor Size Issues。 感谢 @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 - 允许通过 Rows 和 Tabs 传播 fill_height,通过 scale。 感谢 @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 - 修复了 webcam。 感谢 @Col0ring!
  • #10308 3543418 - ImageEditor:即使未定义 change 事件,也触发 input 事件。 感谢 @freddyaboulton!
  • #10322 d2691e7 - 快速修复:多模态麦克风音频未清除。 感谢 @dawoodkhan82!
  • #10331 decb594 - 更新了 gr.load_chat 的指南并允许 **kwargs。 感谢 @abidlabs!
  • #10332 e742dcc - 允许用户添加自定义 API 路由。 感谢 @aliabid94!
  • #10324 343503d - 支持 gr.load()-ing 带有 Blocks.load() 事件的 Gradio 应用。 感谢 @abidlabs!

5.11.0

特性

  • #10304 6b63fde - Blocked Paths 修复。 感谢 @freddyaboulton!
  • #10303 f19ca89 - 向 Gallery 添加了 preview_open 和 preview_close 事件。 感谢 @freddyaboulton!
  • #10314 84e72e4 - 恢复了 chat interface 的全高度。 感谢 @aliabid94!

修复

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

5.10.0

特性

  • #10203 c3a9e64 - 允许编辑 chatbot 消息。 感谢 @aliabid94!
  • #10272 a1f2649 - Chat Interface 标记和 chatbot 反馈。 感谢 @aliabid94!
  • #10225 f0cf3b7 - Chatbot 中的 Dataframe 支持。 感谢 @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 contributing。 感谢 @not-lain!
  • #10254 da07707 - 在页脚添加了带有 i18n 选项和 pwa 说明的 settings 链接。 感谢 @abidlabs!
  • #9984 45df1b1 - Lite:从主线程捕获 stdout 和 stderr。 感谢 @whitphx!
  • #10210 13a83e5 - 允许在 gr.File 中重新排序文件。 感谢 @hannahblair!
  • #10221 506bd28 - 更新了与将 Gradio chatbots 部署到 Discord、Slack 和网站 widgets 相关的指南。 感谢 @abidlabs!
  • #10229 1be31c1 - 允许可编辑的 ChatInterface。 感谢 @aliabid94!
  • #10245 3e4e0de - 添加了 gr.BrowserState change 事件。 感谢 @abidlabs!
  • #10222 9c6d83d - gr.load_chat: 允许立即将任何 openai 兼容服务器加载为 ChatInterface。 感谢 @aliabid94!

修复

  • #10214 501adef - 一些 agent 容易解决的问题。 感谢 @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 - fix: 确保 comp.instance 存在。 感谢 @Col0ring!
  • #10238 3f19210 - 在 **all** 中声明导出以进行类型检查。 感谢 @dustalov!

5.9.1

修复

  • #10212 3d8fc42 - 修复了 render trigger。 感谢 @aliabid94!

5.9.0

特性

  • #10196 c9ba9a4 - 在 API 类型信息中使用现代小写 Python 类型。 感谢 @abidlabs!
  • #10149 9cd291b - 可调整大小的 chatbot。 感谢 @aliabid94!
  • #10109 48e4aa9 - 向 gr.ChatInterface 添加了 run_examples_on_click 参数,镜像了 gr.Examples 中的 run_on_click 参数。 感谢 @abidlabs!
  • #10135 3e93740 - 改进了 Multimodaltextbox 中粘贴文本的行为。 感谢 @hannahblair!
  • #10098 9a6ce6f - 重构了全屏逻辑以实现可重用。 感谢 @hannahblair!
  • #10111 3665e81 - 允许 Chatbot 示例显示多个图像。 感谢 @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 - Client 中的 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 - 快速修复:修复了聊天机器人中音频/视频的自动播放参数。感谢 @dawoodkhan82!
  • #10190 b4004e3 - 在 gr.render 触发器中支持 event + request 数据。感谢 @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 - 修复了聊天机器人/chatinterface 类型不匹配的问题。感谢 @abidlabs!
  • #10071 01b919f - 在 gr.ChatInterface 中支持 additional_outputs。感谢 @abidlabs!
  • #10081 b94f010 - 为 gr.ChatInterface 应用零 GPU。感谢 @abidlabs!
  • #10099 8530b6e - 重新设计聊天机器人中的待定气泡。感谢 @hannahblair!
  • #10032 e450674 - 添加 webcam_heightwebcam_width 以指定网络摄像头的分辨率。感谢 @yinsumirage!

修复

  • #10123 36e9597 - 修复了流式聊天机器人案例中的选项。感谢 @abidlabs!
  • #10095 97d647e - 修复了 gr.render 中的状态更改。感谢 @aliabid94!
  • #10094 98dd668 - 将 http 代码 303 和 307 添加到 url_ok。感谢 @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 - 允许日期时间值为 null。感谢 @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 负载的预处理期间存在 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 - 修复了行中的选项卡。感谢 @aliabid94!
  • #9769 3b9ed29 - 修复了聊天机器人中的头像图像放置问题。感谢 @hannahblair!
  • #9757 f971ca6 - 添加了 audioop-lts 模块以支持 python3.13+ 的 pydub。感谢 @samy-FERGUI!
  • #9651 1163a37 - 修复了组件信息字体大小。感谢 @dawoodkhan82!
  • #9814 6505d42 - 支持在子路径上提供的 spaces 上的 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 - 聊天机器人组件中的流式 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 图标无法在按钮/聊天机器人中使用的问题。感谢 @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 - 修复了聊天机器人中的音频错误。感谢 @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 中的 retryundo 响应性。感谢 @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 e2e + 修复。 感谢 @pngwn!
  • #9591 139152f - 默认情况下,行高相等 (equal height in row) 设置为 false。 感谢 @aliabid94!
  • #9589 477f45c - 仅将具有 meta 键的文件移动到缓存。 感谢 @freddyaboulton!
  • #9584 6f8fa54 - 聊天界面多模态修复 & 回退到 gr.Examples()。 感谢 @dawoodkhan82!
  • #9482 bd6c5f2 - 修复 main/5.0 上的自定义组件 CLI。 感谢 @freddyaboulton!
  • #9601 c078892 - 调整 gr.Dataframe 菜单 UX。 感谢 @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 UI。 感谢 @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 - 更改缓存发生的时间,不是在创建 gr.Examples() 时,而是在实际启动 Blocks 时。 感谢 @aliabid94!
  • #9524 cf39640 - 添加 css_pathshead_paths 参数。 感谢 @abidlabs!

5.0.0-beta.7

特性

  • #9546 b82aa6f - 暂时禁用 sagemaker_check()。 感谢 @vmatt!
  • #9545 098a009 - 将 Jinja2 语言添加到 Code 组件。 感谢 @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 - 修复:自定义聊天机器人的聊天机器人示例 + 重命名 suggestions -> examples。 感谢 @dawoodkhan82!
  • #9506 861f5e9 - 修复节点进程以正确的服务器名称运行。 感谢 @abidlabs!
  • #9493 c307a0c - 文档和演示的小幅修复。 感谢 @abidlabs!
  • #9519 0ab6ac5 - 修复下拉菜单和单选按钮的 change 触发器。 感谢 @dawoodkhan82!

修复

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

5.0.0-beta.5

特性

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

5.0.0-beta.4

特性

  • #9419 018c140 - 从后端启动/停止录音。 添加关于对话式聊天机器人的指南。 感谢 @freddyaboulton!
  • #9453 56dbf77 - 聊天机器人错误修复。 感谢 @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 和聊天机器人文档的小幅修复。 感谢 @abidlabs!
  • #9412 c2c2fd9 - 修复 spaces 上的 SSR 应用。 感谢 @pngwn!

修复

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

5.0.0-beta.2

特性

  • #9359 50c3a7f - 小幅调整 gr.Chatbot 中显示想法的方式。 感谢 @abidlabs!
  • #9323 06babda - 默认禁用聊天机器人中用户消息的点赞功能,但使其可配置。 感谢 @freddyaboulton!
  • #8966 8e52b6a - 聊天机器人示例。 感谢 @dawoodkhan82!
  • #9261 73647a0 - 将图标移动到 IconButtonWrapper 中。 感谢 @hannahblair!
  • #9316 4338f29 - 9227 chatinterface 重试错误。 感谢 @freddyaboulton!
  • #9313 1fef9d9 - 标准化组件之间的 height,并在适当的位置添加 max_heightmin_height 参数。 感谢 @abidlabs!
  • #9339 4c8c6f2 - Ssr 第 2 部分。 感谢 @pngwn!
  • #9250 350b0a5 - 改进图标按钮一致性。 感谢 @hannahblair!
  • #9269 e05f568 - 修复 5.0 dev 中的重新加载模式和流媒体。 感谢 @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 - 来自 Webcam 流的对象检测指南。 感谢 @freddyaboulton!
  • #9300 6309a48 - 抛出 ChecksumMismatchError。 感谢 @abidlabs!
  • #9373 6443062 - 修复流媒体介质的缓存示例。 感谢 @freddyaboulton!
  • #9367 1c94328 - 添加本地字体并更新主题。 感谢 @hannahblair!
  • #9335 b543465 - 从 Git 管理的文件树中删除 lite/theme.css。 感谢 @whitphx!
  • #9358 16c0485 - 小幅调整以改善 gr.Chatbot 中“tuples”/“messages”参数的 DX。 感谢 @abidlabs!
  • #9303 34f46b0 - 不要在聊天机器人后处理中自动将文件移动到缓存。 感谢 @freddyaboulton!
  • #9363 3ad28c7 - 防止 HTML 和 Markdown 在状态隐藏时高度发生变化。 感谢 @hannahblair!
  • #9260 d47dd1f - 修复聊天机器人中溢出的 markdown。 感谢 @hannahblair!
  • #9320 98cbcae - chore: 修复文档样式。 感谢 @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 - 将按钮从 chat_interface 移动到 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 上的 flagging.CSVLogger 中使用 multiprocessing。 感谢 @whitphx!
  • #9216 e137b30 - 减小组件半径并删除输入阴影。 感谢 @hannahblair!
  • #9200 2e179d3 - 前缀 api 路由。 感谢 @pngwn!

5.0.0-beta.0

特性

  • #9069 f9f84bf - 默认情况下,gr.load() 中不传递令牌。感谢 @abidlabs!
  • #9160 8f5a895 - 修复原生 plot lite 演示。感谢 @aliabd!
  • #9197 6773c4d - 重新设计 gr.Slider()。感谢 @hannahblair!
  • #9140 c054ec8 - 放弃 python 3.8 和 3.9。感谢 @abidlabs!
  • #8978 fe9d1cb - 改进文件对象的 url 下载。感谢 @aliabid94!
  • #8810 4cf8af9 - 阻止将无效值提交到 dropdown 等。感谢 @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 - chore: 修复文档样式。 感谢 @imba-tjd!

4.44.0

特性

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

修复

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

4.43.0

特性

  • #9160 8f5a895 - 修复原生 plot 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 Issue 的问题。感谢 @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 添加 height 参数。感谢 @hannahblair!
  • #9013 5350f1f - 向 chatbot 添加复制所有消息按钮。感谢 @hannahblair!
  • #9118 e1c404d - 设置所有软件包的 npm-previews。感谢 @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 - 改进 plot 指南,为 plot 添加双击功能。感谢 @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 - 恢复 plot 标签角度。感谢 @aliabid94!
  • #8948 f7fbd2c - 为 gradio-client 增加 websockets 版本上限。感谢 @evanscho!
  • #8907 9b42ba8 - 更新指南,特别是 plots。感谢 @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 - 添加 space header。感谢 @pngwn!
  • #8804 1d09925 - 修复 Lite 的. 感谢 @whitphx!
  • #8807 a238af4 - 重构 plots 以删除 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 - 允许在 alert 模态框中使用 HTML。感谢 @abidlabs!
  • #8803 e1a4040 - 确保所有上传组件都具有一致的上传区域。感谢 @pngwn!
  • #8821 cea3bf9 - 修复 statustracker 和 markdown 的依赖循环。感谢 @aliabd!
  • #8774 2d179f6 - 将 gr.Plot 的默认格式设置为 Wasm 模式下的 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 - 修复助手 chatbot 气泡的宽度。感谢 @pngwn!

4.38.0

亮点

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

gr.Chatbotgr.ChatInterface 现在支持 Messages API,它与 LLM API 提供商(例如 Hugging Face Text Generation Inference、OpenAI 的 chat completions API 和 Llama.cpp 服务器)完全兼容。

围绕这些 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 聊天机器人现在可以原生显示工具使用情况以及 Agent 和 chain-of-thought 工作流程中常见的中间想法!

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

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 - 警告 Falsy 凭据。感谢 @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 - 为 msg 格式和 llm agents 添加指南。感谢 @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 - 恢复 chatbot 样式。感谢 @pngwn!
  • #8658 0482453 - Chatbot LaTeX 崩溃修复。感谢 @dawoodkhan82!
  • #8716 e834d30 - 确保 @gradio/client 始终返回正确的数据。感谢 @pngwn!
  • #8737 31a876d - 修复图像的 Share to community 按钮。感谢 @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 - 确保在适当的时候显示 chatbot 上的复制按钮。感谢 @pngwn!
  • #8645 9933e53 - 为 height 的字符串类型更新 file_explorer.py。感谢 @magical-l!
  • #8608 c12f82a - Bugfix:向 gr.MultimodalTextbox 添加 file_count 参数。可以通过设置 file_count="multiple" 上传多个文件。默认值为 "single" 以保持之前的行为。感谢 @freddyaboulton!
  • #8631 9b8840a - 确保屏幕阅读器可以访问 chatbot 消息。感谢 @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 - 确保 chatbot 背景与其他组件保持一致。感谢 @pngwn!
  • #8555 7fc7455 - 支持 chatbot 中的 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 - 为在 chatbot 中使用组件添加更多文档。感谢 @abidlabs!
  • #8609 36b2af9 - 将 gradio 版本检查从打印语句更改为警告。感谢 @gdevakumar!
  • #8600 7289c4b - 添加 credentials: include 和 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 - 向文档添加 helper 类。感谢 @aliabd!
  • #8522 bdaa678 - 添加 handle_file 文档。感谢 @pngwn!

修复

  • #8599 ca125b7 - 修复 jupyter notebook 和有状态演示的重新加载模式。感谢 @freddyaboulton!
  • #8521 900cf25 - 确保前端函数在不返回值时也能正常工作。感谢 @pngwn!
  • #8594 530f8a0 - chatbot 组件调整。感谢 @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 参数的预期行为。还向 gr.Interfacegr.ChatInterface 添加了 show_progress。感谢 @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 错误,其中仅触发第一个界面的事件。感谢 @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 - 修复 render 和 on 的类型提示。感谢 @freddyaboulton!
  • #8377 341844f - 点击 chatbot 中的图像以预览。感谢 @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 - 修复 spaces 上的滚动问题。感谢 @pngwn!

4.32.1

特性

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

4.32.0

特性

  • #8401 d078621 - 向 JS 文档添加 CDN 安装。感谢 @hannahblair!
  • #8243 55f664f - 向渲染块添加事件监听器支持。感谢 @aliabid94!
  • #8398 945ac83 - 改进渲染。感谢 @aliabid94!
  • #8299 ab65360 - 允许 JS 客户端与经过身份验证的 spaces 🍪 一起使用。感谢 @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 - 如果状态在渲染中创建,则连接心跳。同时修复配置清理错误 #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 - 修复重新加载模式等式检查中的错误。更好的状态变量等式转换。感谢 @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 - fix:防止在删除时触发 gr.File.select。感谢 @gtm-nayan!
  • #8341 82ba397 - 添加丢失的 orig_name(跟进 #8334)。感谢 @gtm-nayan!
  • #8322 47012a0 - 确保客户端正确处理所有二进制数据。感谢 @Saghen!

4.31.4

特性

  • #8318 9e31697 - 添加了 image-to-image diffusers pipeline。感谢 @cswamy!

修复

4.31.3

特性

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

修复

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

4.31.2

修复

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

4.31.1

特性

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

修复

  • #8276 0bf3d1a - 修复客户端无法连接到具有自签名证书的应用程序的错误。感谢 @freddyaboulton!
  • #8260 7e976fd - 在作业取消时发送 ProcessCompleted 消息。感谢 @freddyaboulton!
  • #8261 719d596 - 修复状态跟踪器是指针事件目标的问题。感谢 @freddyaboulton!
  • #8272 fbf4edd - 确保客户端适用于私有 spaces。感谢 @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() 的 Spaces 被 gr.load 加载。感谢 @abidlabs!
  • #8252 22df61a - 客户端节点修复。感谢 @pngwn!
  • #8227 9ece050 - 修复重新加载模式下更新组件值不会在 UI 中显示的问题。感谢 @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 pipelines。感谢 @whitphx!
  • #8189 68dcae5 - 对 _website 中的代码使用 workspace 版本。感谢 @aliabd!

修复

  • #8179 6a218b4 - 重做上传为类方法 + 将客户端传递到每个组件中。感谢 @pngwn!
  • #8181 cf52ca6 - 确保使用 SSE 协议连接到私有 HF spaces。感谢 @hannahblair!
  • #8169 3a6f1a5 - 仅在需要时连接到心跳。感谢 @freddyaboulton!
  • #8118 7aca673 - 为 Node.js 和浏览器环境添加 eventsource polyfill。感谢 @hannahblair!
  • #8158 5671ff1 - fix:在 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 版本,以避免 ujson 安装,这在 Pyodide 上尚不可用。感谢 @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)

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

以下代码片段设置了 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 样式和 a11y 标记。感谢 @whitphx!
  • #8105 006fa3c - 改进了 BlocksInterfaceChatInterfacejs 参数的文档。感谢 @abidlabs!
  • #8054 176a8a4 - 修复 Label 组件的值更改检测,以避免无限循环分发 change 事件。感谢 @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 dev tools 成为本地依赖项,而不是捆绑。感谢 @pngwn!

4.27.0

亮点

刷新了 ImageEditor

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

此版本包含对 ImageEditor 组件的大量改进,对于那些构建实时图像编辑应用程序或复杂图像处理管道的人员来说,将特别感兴趣。

  • 更简洁和紧凑的界面。
  • 隐藏图层控件以获得更简约 UI 的新选项。
  • 以编程方式更新源时,提高了稳定性。
  • 改进了对 inputuploadchangeapply 事件的支持。
  • 支持通过 change 事件进行实时绘图。
  • 许多错误修复!

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_button 在 show_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 - 恢复 Chatbots, MarkdownCode 的 Markdown 格式。感谢 @aliabid94!
  • #7912 a4782f7 - 如果值是元组,则允许按文件名显示 gr.Code 示例。感谢 @freddyaboulton!
  • #7938 8250a1a - 处理构造根 URL 时出现多个标头的情况。感谢 @abidlabs!
  • #7932 b78129d - 使用 asyncio.Event 在心跳路由中停止流。感谢 @freddyaboulton!
  • #7961 eae97c2 - 修复 python 3.9 中的任务错误。感谢 @freddyaboulton!
  • #7967 1a7851c - 修复主题中单个字体名称的处理。感谢 @sd109!

修复

  • #7963 1eb4c20 - 确保 kwargs 在整个应用程序中始终同步。感谢 @pngwn!
  • #7916 7c9a964 - 修复程序化选项卡选择。感谢 @aliabid94!
  • #7754 057d171 - 正确处理 ImageImageEditor 中的设备选择。感谢 @hannahblair!
  • #7756 b729f10 - Bugfix: 修复主题构建器应用程序中的颜色和大小键。感谢 @shubhamofbce!
  • #7918 be46ab1 - 确保整个下拉菜单都可点击。感谢 @dawoodkhan82!
  • #7966 bad3836 - 为 example 参数添加提示 list[list]。感谢 @WH-Yoshi!
  • #7817 867ff16 - 触发 Image Editor 的 “clear” 事件。感谢 @uebian!
  • #7935 919afff - 添加了关于使用 Docker 部署 Gradio 应用程序的指南。感谢 @abidlabs!
  • #7915 efd9524 - 修复 gr.CheckboxGroup change 事件。感谢 @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 时,禁止打印 “Running on local URL:”。感谢 @dnoliver!
  • #7869 b9dbcf7 - 使 gr.ChatInterface 中的按钮更适合移动设备。感谢 @abidlabs!
  • #7875 e6d051d - 将图像粘贴到多模态文本框中。感谢 @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 中的 minify 设置,该设置在 #6261 中被错误地引入。感谢 @whitphx!
  • #7818 1a7c8d3 - 停止在 Wasm 模式下导入 gradio.ipython_ext。感谢 @whitphx!
  • #7830 75a2bf7 - 添加关于客户端状态的指南,并修复组件的默认值。感谢 @abidlabs!
  • #7823 e0a8b7f - 从 Wasm 环境的需求列表中排除 typer,并修复 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 - Bugfix: .. 在文件名中加载到输出时抛出错误。感谢 @shubhamofbce!
  • #7862 0e125d7 - 即使没有文件,也从 gr.DownloadButton 触发 click 事件。感谢 @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 或 typecheck 失败,则使 CI 失败。感谢 @abidlabs!
  • #7796 aad209f - 减少延迟:不要在线程池中运行预处理和后处理。感谢 @freddyaboulton!
  • #7744 d831040 - 在 Wasm 环境中删除 Ruff 和 Uvicorn。感谢 @whitphx!
  • #7732 2efb05e - 在 python 客户端中添加对 kwargs 和默认参数的支持,并改进了 “view API” 页面中参数信息的显示方式。感谢 @abidlabs!
  • #7661 c62a57e - 将文档演示转换为 Lite。感谢 @aliabd!
  • #7814 f7df92f - 改进非交互式滑块的 UX。感谢 @Pythongor!
  • #7789 ff6bf3e - 从 Wasm worker 中删除 aiohttp mock,因为它已在 https://github.com/gradio-app/gradio/pull/5244 中删除。感谢 @whitphx!

修复

  • #7783 43ae23f - 修复了阻止自定义文本框传递到 chatinterface 的意外错误。感谢 @freddyaboulton!
  • #7762 e78bca4 - 即使 radio 是输出组件,也为 Radio 触发 input 事件。感谢 @freddyaboulton!
  • #7787 781678b - 修复从 x_forwarded_host 标头解析根 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 - 向 Lite 自定义元素添加 Playground。感谢 @aliabd!
  • #7710 0a3870d - 即使 window.__gradio_mode__ === "website" 也调用 handle_darkmode(),但强制执行 light 主题。感谢 @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 - 修复状态更新和 loading_status 更新之间的竞争条件。感谢 @aliabid94!
  • #7709 f67759d - 修复 wasm_proxied_mount_css 以不重用现有的 style 元素。感谢 @whitphx!
  • #7703 598ad7b - 修复开发模式。感谢 @pngwn!
  • #7707 28342a2 - 修复 httpx 超时问题。感谢 @freddyaboulton!

4.21.0

特性

  • #7577 7c66a29 - 修复 Lite 自定义元素以在 connected callback 中初始化应用程序,并在 disconnected callback 中处理应用程序。感谢 @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 - 文件现在应在 Client 中以 file(...) 形式提供,以及对 gr.load() 的一些修复。感谢 @abidlabs!
  • #7624 a22f3e0 - 修复子路径重复两次的根路径问题。感谢 @abidlabs!
  • #7638 b3b0ea3 - 添加 —python-path, —pip-path, —gradio-path 命令行参数,以便自定义组件开发者控制使用的可执行文件。感谢 @freddyaboulton!
  • #7618 0ae1e44 - 使用 gr.set_static_paths 控制哪些文件移动到缓存。感谢 @freddyaboulton!
  • #7641 cb3999e - 使用 x-forwarded-host 标头来确定根 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 参考,包含类型、默认值和描述。
  • 关于组件如何影响用户的 predict 函数输入和输出的解释。
  • 理解 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,这意味着组件不能接受任意(未使用)的参数。以前,会抛出警告。
  • 移除已弃用的参数。例如,对于 gr.Button 类中的 variant 参数,plain 不再是 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 的 Space。但是,您仍然可以使用客户端库(请参阅下面客户端库的更改)。
  • 移除已弃用的参数,例如 launch() 中的 enable_queue
  • launch() 中的许多位置参数现在仅为关键字参数,并且已移除 show_tips
  • 将标记数据的格式更改为 json 而不是媒体和 chatbot 的文件路径
  • 移除 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

由于工作目录现在默认不提供服务,如果您在使用 /file= 路由的 CSS 或 gr.HTML 组件中引用本地文件,您将需要使用 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,您需要像这样在 allowed_paths 中添加 image.png

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 来完成,现在 concurrency_limit每个事件的参数,而不是全局参数。默认情况下,每个事件的并发限制为 1,但是您可以将其设置为更高的值,或者设置为 None(如果您想允许同时执行此事件的任意次数)。事件也可以使用 concurrency_id 参数分组在一起,以便它们共享相同的限制,并且默认情况下,调用同一函数的事件共享相同的 concurrency_id

最后,应该注意的是,可以使用 Blocks.queue() 中的 default_concurrency_limit 参数更改 Blocks 中所有事件的 concurrency_limit 的默认值(通常为 1)。您可以将其设置为更高的整数或 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 来填充资源管理器,但在您的预测函数中仅提供选定的文件。

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

output

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

感谢 @aliabid94!

特性

修复

3.46.1

特性

修复

3.46.0

特性

修复

3.45.2

特性

  • #5722 dba651904 - 修复了在 Spaces 上运行与副本相关的逻辑时出现的深拷贝错误。感谢 @abidlabs!
  • #5721 84e03fe50 - 为网站添加复制按钮,并为 API 文档添加更好的描述。感谢 @aliabd!

修复

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 的使用捕获了错误,并破坏了任何无法实例化的组件的回溯信息(尝试在 main 分支之外运行 blocks_kitchen_sink 以查看示例)。现在,如果出现异常,exit 会立即退出,以便可以清晰地打印原始异常。/n - HighlightedText 的渲染效果很奇怪,已清理。

修复

3.41.1

修复

3.41.0

亮点

提升启动性能和 markdown 支持 (#5279 fe057300)

改进了 markdown 支持

我们现在在 gr.Markdowngr.Dataframe 中更好地支持了 markdown。包括语法高亮和 Github Flavored 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 完成渲染后触发。

<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")

开始使用模板 spaces

为了帮助您入门,我们在 Hugging Face 上创建了一个名为 gradio-discord-bots 的组织,其中包含模板 spaces,您可以使用这些模板 spaces 将由 Gradio 提供支持的最先进的 LLM 变成 discord 机器人。

目前,我们有以下模板 spaces:

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

❗️ 附加说明 ❗️:从技术上讲,任何公开 api 路由的 gradio 应用程序,只要该路由接受单个字符串并输出单个字符串,都可以部署到 discord。但是 gr.ChatInterface 应用程序自然适合 discord 的聊天功能,因此我们建议您从这些应用程序开始。

感谢 @freddyaboulton

特性

修复

3.38

新功能

  • gr.make_waveform() 中提供参数 animate(默认为 False),该参数通过 @dawoodkhan82PR 4918 中动画化叠加的波形
  • 添加 show_download_button 参数以允许隐藏静态图像组件中的下载按钮,由 @hannahblairPR 4959 中完成
  • @aliabid94PR 4978 中为文本框添加了 autofocus 参数
  • gr.ChatInterface UI 现在在流式传输时将“提交”按钮转换为“停止”按钮,该按钮可用于暂停生成。由 @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,该 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

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

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 方法现在支持布局输出组件 @freddyaboulton,在 PR 4871 中完成

  • 添加了对新命令 gradio environment 的支持,以便在如果我们发布一个简单的命令来列出操作系统、gradio 版本以及 gradio/gradio-client 依赖项的版本时,人们可以更轻松地提交错误报告。由 @varshneydevanshPR 4915 中完成。

Bug 修复

  • .change() 事件已在 VideoImage 组件中修复,现在仅触发一次,由 @abidlabsPR 4793 中完成。
  • .change() 事件已在 Audio 组件中修复,现在当组件值通过编程方式更新时触发,由 @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 事件未触发的错误,由 @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.Chatbot 中添加了对 pathlib.Path 的支持,由 sunilkumardash9PR 4581 中完成。

Bug 修复

  • 更新了具有 info 属性的组件,以便在对其调用 update() 时进行更新。由 @jebarpgPR 4715 中完成。
  • 确保 Image 组件的撤消按钮在模式为 maskcolor-sketch 时正常工作,由 @amyorzPR 4692 中完成。
  • 异步加载 iframe resizer 外部资源,由 @akxPR 4336 中完成。
  • 恢复了 gr.components 中缺失的导入,由 @abidlabsPR 4566 中完成。
  • 修复了在 gr.Gallery 中,如果 height 设置为较大值且 allow_preview=False,则 select 事件未触发的错误,由 @freddyaboultonPR 4551 中完成。
  • 修复了在 gr.Group 事件中设置 visible=False 不起作用的错误,由 @abidlabsPR 4567 中完成。
  • 修复了 make_waveform 以使其能够处理包含空格的路径 @akxPR 4570PR 4578 中完成。
  • gr.Audiogr.Video 组件的 stop_recording 事件中发送捕获的数据,由 @freddyaboultonPR 4554 中完成。
  • 修复了 gr.Galleryheightobject_fit 参数被忽略的错误,由 @freddyaboultonPR 4576 中完成。
  • 修复了 DOMPurify 中的 HTML 清理问题,该问题导致 Markdown 中的链接无法在新窗口中打开,由 [@hannahblair] 在 PR 4577 中完成。
  • 修复了 Columns 中 Dropdown 组件的高度渲染问题,由 @aliabid94PR 4584 中完成。
  • 修复了 AnnotatedImage 的 CSS 样式导致注释蒙版无法正确显示的错误,由 @freddyaboultonPR 4628 中完成。
  • 确保当 Gradio 在被占用的端口上运行时不会静默失败,由 @abidlabsPR 4624 中完成。
  • 修复了导致文件上传延迟的双重上传错误,由 @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 且视频源动态更新时,Audio 组件的自动播放功能正常工作 @pngwnPR 4705 中完成。
  • 当在 Spaces 中显示错误模态框时,确保滚动到顶部以便用户可以看到,由 @pngwnPR 4712 中完成。
  • 更新依赖项,由 @pngwnPR 4675 中完成。
  • 修复了 gr.Dropdown 组件底部被截断的问题,由 @abidlabsPR 4691 中完成。
  • 在 Spaces 中点击 “View API” 时滚动到顶部,由 @pngwnPR 4714 中完成。
  • 修复了 show_label 导致 gr.Label 组件整个隐藏的错误,由 @freddyaboultonPR 4713 中完成。
  • 修复了上传的图像包含损坏的 EXIF 数据时崩溃的问题,由 @akxPR 4764 中完成。
  • 将 Toast 消息放置在屏幕顶部,由 @pngwnPR 4796 中完成。
  • 修复了启用身份验证后登录页面的样式回归问题,由 @freddyaboultonPR 4797 中完成。
  • 防止 Spaces 上输出滚动条损坏,由 @aliabid94PR 4822 中完成。

其他更改

  • 添加 .git-blame-ignore-revs,由 @akxPR 4586 中完成。
  • 更新 PR 4601 中的前端依赖项。
  • 在 gradio 库和客户端中尽可能使用 typing.Literal,由 @freddyaboultonPR 4608 中完成。
  • 移除了前端 E2E 测试中不必要的模拟 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 修复

  • 修复了 Chatbot 组件的流式传输问题,由 @aliabid94PR 4537 中完成。
  • 修复了 Chatbot 组件的高度和滚动问题,由 @aliabid94PR 4540 中完成。

3.35.1

Bug 修复

  • 修复了 Chatbot 组件的流式传输问题,由 @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("您的警告消息")gr.Info("您的信息消息") 作为独立行即可。由 @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 中完成。
  • 修复了 Clear 按钮在 Label 组件上不起作用的问题,由 @abidlabsPR 4456 中完成。
  • 恢复了将元组(采样率,音频数组)传递给 gr.Audio() 的能力,由 @abidlabsPR 4525 中完成。
  • 确保代码格式正确,并且复制按钮始终显示在 Chatbot 组件中,由 @pngwnPR 4527 中完成。
  • show_label 将不再在 gr.BarPlot.update 中自动设置为 True,由 @freddyaboultonPR 4531 中完成。
  • gr.BarPlot 的组文本现在支持暗黑模式,由 @freddyaboultonPR 4531 中完成。
  • 修复了组件内部分发的错误 @aliabid94PR 4786 中完成。

其他更改

  • 更改了状态和 Toast 错误组件的样式,由 @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 中完成。Clear 按钮现在将这些组件的值设置为空,而不是开发者设置的原始默认值。这是为了使它们与其余 Gradio 组件保持一致。
  • Python 3.7 的生命周期将于 2023 年 6 月 27 日结束。Gradio 将不再支持 Python 3.7,由 @freddyaboultonPR 4484 中完成。
  • 移除了 $ 作为 Chatbot 的默认 LaTeX 分隔符,由 @dawoodkhan82PR 4516 中完成。可以使用 Chatbot 中的新参数 latex_delimiters 设置特定的 LaTeX 分隔符。

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 参数,并将参数移动到构造函数中。为最初在 style 中的所有参数添加了对 .update() 的支持。为每个组件添加了 scalemin_width 支持。由 @aliabid94PR 4374 中完成。

3.33.1

Bug 修复

  • 允许 every 与生成器一起使用,由 @dkjshkPR 4434 中完成。
  • 修复了状态组件的 z-index,由 @hannahblairPR 4429 中完成。
  • 允许 Gradio 离线工作,由 @aliabid94PR 4398 中完成。
  • 修复了 validate_url 以检查 403 错误,并使用 GET 请求代替 HEAD 请求,由 @alvindaiyanPR 4388 中完成。

其他更改

  • 当共享链接二进制文件被防病毒软件阻止时,提供更明确的错误消息,由 @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 token 发送到其他域,由 @abidlabsPR 4368 中完成。
  • gr.Chatbot() 的默认 markedjs 清理函数替换为 DOMPurify 清理器,由 @dawoodkhan82PR 4360 中完成。
  • 防止在 Chatbot 中创建重复的复制按钮,并确保复制按钮在非安全上下文中也能工作,由 @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

新功能

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

Bug 修复

  • 修复了使用 Optional[Types] 时出现的 “TypeError: issubclass() arg 1 must be a class” 错误,由 @lingfengchencnPR 4200 中完成。
  • 如果使用 GRADIO_ANALYTICS_ENABLED 环境变量禁用分析,Gradio 将不再发送任何分析或回调主页。由 @akxPR 4194PR 4236 中完成。
  • kwargs 的弃用警告现在显示调用的实际堆栈级别,由 @akxPR 4203 中完成。
  • 修复了使用 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 参数,允许在代理后面的子路径(例如 www.example.com/app)上运行 Gradio 应用程序,由 @abidlabsPR 4133 中完成。
  • 修复了下拉菜单更改监听器在作为输出更新时触发更改的问题,由 @aliabid94PR 4128 中完成。
  • 添加了 .input 事件监听器,该监听器仅在用户更改组件值时触发(与 .change 相比,.change 也在组件因函数触发而更新时触发),由 @aliabid94PR 4157 中完成。

Bug 修复

  • 在标记时记录用户名,由 @abidlabsPR 4135 中完成。
  • 修复了网站构建问题,由 @aliabdPR 4142 中完成。
  • 修复了 gr.File(file_count='multiple') 输出组件的语言无关类型信息,由 @freddyaboultonPR 4153 中完成。

3.29.0

新功能

Bug 修复

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

完整更新日志

  • 允许用户在带有文本框/数字输入的 Interfaces 中使用回车键提交,@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 中完成
  • Code 组件视觉更新,由 @pngwnPR 4051 中完成

文档变更

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

重大更改

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

完整更新日志

  • 更安全的 gr.HuggingFaceDatasetSaver 版本,使用 HTTP 方法而不是 git pull/push,由 @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 修复

  • 修复了“video”全屏模式下重复播放命令的问题。由 @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 错误的错误,由 @micky2be[PR 3895](https://github.com/gradio-app/gradio/pull/3895) 中完成。
  • 修复了关于符号链接的 abspath 错误,以及 Windows 上无法解析路径的错误,由 @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-strings,由 @akxPR 3984 中完成
  • 使 Linting 规则更加严格并修复了问题,由 @akxPR 3979 中完成。

重大更改

  • 根除了 gradio.themes 实用程序(在 3.24.0 中引入)中的一些重新导出。由 @akxPR 3958 中完成

完整更新日志

  • 向 image_segmentation 演示添加了 DESCRIPTION.md,由 @aliabdPR 3866 中完成
  • 修复了运行 gr.themes.builder() 时的错误,由 @deepkyuPR 3869 中完成
  • 修复了在 gradio.Blocks() 中使用 _js 加载自定义 JS 并将 outputs 设置为 None 时出现的 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 中完成
  • 修复了通过 websocket 连接无法访问 http token 的错误,由 @freddyaboultonPR 3735 中完成
  • gr.Gallery() 组件的 style() 中添加了指定 rowscolumnsobject-fit 的功能,由 @dawoodkhan82PR 3586 中完成
  • 修复了通过麦克风录制音频文件导致文件名损坏的错误,由 @abidlabsPR 3770 中完成
  • 在 blocks.launch 方法中添加了“ssl_verify”,以允许使用自签名证书,由 @garrettsutulaPR 3873 中完成
  • 修复了迭代器未针对提前终止的进程重置的错误,由 @freddyaboultonPR 3777 中完成
  • 修复了上传按钮未正确处理 file_count='multiple' 情况的错误,由 @freddyaboultonPR 3782 中完成
  • 修复了“Via API”按钮给出错误的错误,由 @Devang-CPR 3783 中完成

文档变更

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

完整更新日志

  • 修复了 IPv6 监听以使用括号 [::1] 表示法工作,由 @dsullyPR 3695 中完成

3.24.1

新功能

  • 无高亮显示变更。

Bug 修复

  • 修复了 Chatbot 问题,即每次消息来回发送时都会创建新行,由 @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 中完成
  • 修复了“or”未在文件上传文本中本地化的错误,由 @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 单选模式下隐藏“移除全部”按钮,由 @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 中完成

完整更新日志

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

3.23.0

新功能

主题分享!

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

@freddyaboultonPR 3428 中完成

Bug 修复

  • 统一删除了 gr.Code() 组件中所有代码行的前导空格。由 @abidlabsPR 3556 中完成
  • 修复了损坏的登录页面,由 @aliabid94PR 3529 中完成

完整更新日志

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

3.22.1

Bug 修复

3.22.0

新功能

官方主题发布

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

elem_classes

向组件添加了关键字参数 elem_classes,以控制组件的类名,方式与现有的 elem_id 相同。由 @aliabid94PR 3466 中完成

Bug 修复

  • 修复了 File.upload() 事件触发器,该触发器在我们上传文件的方式更改后被破坏,由 @abidlabsPR 3462 中完成
  • 修复了 gr.Request 对象在嵌套键无法转换为变量名时无法处理字典的问题 #3454,由 @radamesPR 3459 中完成
  • 修复了 css 和客户端 api 在子路径中挂载时无法正常工作的问题,由 @freddyaboultonPR 3482 中完成

文档变更

测试和基础设施变更

完整更新日志

  • 恢复了深色模式下的主按钮背景颜色,由 @aliabid94PR 3468 中完成

3.21.0

新功能

主题分享 🎨 🤝

您现在可以与世界分享您的 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 命令

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

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

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

示例主题空间在这里:https://hugging-face.cn/spaces/freddyaboulton/dracula_revamped

下载

要使用 hub 中的主题,请在 ThemeClass 上使用 from_hub 方法并将其传递给您的应用

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

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

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

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

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

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

@freddyaboultonPR 3428 中完成

代码组件 🦾

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

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

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

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

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

  • 允许使用 .then.success 进行连续函数触发,由 @aliabid94PR 3430 中完成

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

  • 添加了 .select() 事件监听器,其中还包括事件数据,这些数据可以作为类型提示为 gr.SelectData 的函数的参数传递。以下组件支持 .select() 事件监听器:Chatbot、CheckboxGroup、Dataframe、Dropdown、File、Gallery、HighlightedText、Label、Radio、TabItem、Tab、Textbox。用法示例
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)

@aliabid94PR 3399 中完成

  • Textbox 组件现在包含一个复制按钮,由 @abidlabsPR 3452 中完成

Bug 修复

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

文档变更

测试和基础设施变更

  • 修复了在本地失败但在 CI 上通过的测试,由 @abidlabsPR 3411 中完成
  • 从仓库中删除了 codecov,由 @aliabdPR 3415 中完成

完整更新日志

  • 通过浅拷贝防止 generic_update 的就地更新,由 @gitgithanPR 3405 中完成,以修复 #3282
  • 持久化通过任何 Gradio 组件上传的文件的文件名,由 @abidlabsPR 3412 中完成
  • 修复了文档中 Markdown 嵌入组件的问题,由 @aliabdPR 3410 中完成
  • 清理了事件监听器代码,由 @aliabid94PR 3420 中完成
  • 修复了 spaces logo 的 css 问题,由 @aliabdPR 3422 中完成
  • JSON 组件进行了一些修复(show_label 参数、图标),在 @abidlabsPR 3451 中完成

3.20.1

新功能

  • gr.Chatbot() 组件的样式中添加了 height kwarg,由 @dawoodkhan82PR 3369 中完成
chatbot = gr.Chatbot().style(height=500)

Bug 修复

  • 确保上传的图像始终显示在草图工具中,由 @pngwnPR 3386 中完成
  • 修复了当 fn 是非静态类成员时,self 应作为 fn 的第一个参数被忽略的错误,由 @or25PR #3227 中完成

3.20.0

新功能

Slider 的 Release 事件

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

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

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

@freddyaboultonPR 3353 中完成

Dropdown 组件更新

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

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

@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 中完成
  • Gallery.style 添加了 preview 选项,以便在首次加载时以预览模式启动画廊,由 @freddyaboultonPR 3345 中完成

Bug 修复

  • 确保 mirror_webcam 始终被遵守,由 @pngwnPR 3245 中完成
  • 修复了更新后的 markdown 链接未在新标签页中打开的问题,由 @gantePR 3236 中完成
  • API 文档修复,由 @aliabdPR 3287 中完成
  • 为队列消息添加了超时,因为一些演示程序遇到了队列无限增长的问题,这些队列来自一直等待客户端响应的活动作业,由 @freddyaboultonPR 3196 中完成
  • 修复了渲染后的 LaTeX 图像的高度,使其与周围文本的高度相匹配,由 @abidlabsPR 3258PR 3276 中完成
  • 修复了 matplotlib 图像在前台始终过小的错误,由 @freddyaboultonPR 3274 中完成
  • 移除嵌入的 initial_height,在加载完成后,以便嵌入在其加载后找到其自然高度,@pngwnPR 3292 中完成
  • 防止 Sketch 在提供默认图像时崩溃,由 @pngwnPR 3277 中完成
  • 在创建图像 Sketch 时,在前台遵守 shape 参数,由 @pngwnPR 3277 中完成
  • 修复了将 Dropdown 的值设置为 [] 并在下拉菜单上添加 change 事件导致无限循环的错误,由 @freddyaboultonPR 3295 中完成
  • 修复了图像文档中 change 事件列出两次的问题,由 @aliabdPR 3318 中完成
  • 修复了导致 UI 始终垂直居中的错误,由 @pngwnPR 3336 中完成
  • 修复了 Gallery.style 中设置的 height 未被前端遵守的错误,由 @freddyaboultonPR 3343 中完成
  • 确保 markdown 列表正确渲染,由 @pngwnPR 3341 中完成
  • 确保 gr.Dropdown(Multiselect=True) 的初始空值为一个空列表,而 gr.Dropdown(Multiselect=False) 的初始值为空字符串,由 @pngwnPR 3338 中完成
  • 确保当画布也启用时,上传的图像遵守 shape 属性,由 @pngwnPR 3351 中完成
  • 确保当使用 analytics_enabled=True 创建 gradio 应用时,Google Analytics 工作正常,由 @abidlabsPR 3349 中完成
  • 修复了文件在更新后被重新上传的错误,由 @freddyaboultonPR 3375 中完成
  • 修复了同时使用 backen_fn 和自定义 js 时出现的错误,由 @jialeicuiPR 3358 中完成
  • 支持 huggingface spaces 子域的新嵌入,由 @pngwnPR 3367 中完成

文档变更

  • 在配置中的 dependency 字段中添加了 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 修复

  • UI 修复,包括页脚和 API 文档,由 @aliabid94PR 3242 中完成
  • 更新了图像上传组件以接受所有图像格式,包括 .webp 等无损格式,由 @fienestarPR 3225 中完成

完整更新日志

  • 为主题添加了后端支持,由 @aliabid94PR 2931 中完成
  • 添加了按钮尺寸 “lg”(默认)和 “sm” 的支持。

3.19.0

新功能

改进了嵌入体验

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

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

错误状态在 UI 中报告,最终用户可以通过该 Hugginface 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 中完成
  • 当用户单击多选 DropDown 组件的 “清除所有” 按钮时,现在会触发 change 事件,由 @freddyaboultonPR 3195 中完成
  • 阻止 File 组件在上传大文件时冻结,由 @aliabid94PR 3191 中完成
  • 在 Dataframe 中支持中文拼音,由 @aliabid94PR 3206 中完成
  • 当图像被清除时,现在会触发 clear 事件,由 @freddyaboultonPR 3218 中完成
  • 修复了通过 http 连接到应用时未发送 auth cookies 的错误,由 @freddyaboultonPR 3223 中完成
  • 确保 latext 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 共享链接,使其持久化,并且在网络连接中断时不会重置,由 XciD, Wauplin, 和 @abidlabsPR 3149 中完成,以及一个后续操作,允许从以前的 Gradio 版本升级的用户使用它,在 PR 3221 中完成

3.18.0

新功能

改进了界面的停止按钮 🛑

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

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

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

文档变更

  • 添加了一个关于 4 种 Gradio 界面的指南,由 @yvrjsharma@abidlabsPR 3003 中完成
  • 解释了当使用重新加载模式时,launch 中的参数将不会被遵守,例如 gradio 命令,由 @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 的 change 事件监听器,由 @aliabid94PR 3095 中完成
  • 修复了视频和文件 change 事件不起作用的错误 @tomchang25PR 3098 中完成
  • 修复了 static_video 播放和暂停事件不起作用的错误 @tomchang25PR 3098 中完成
  • 修复了 Gallery.style(grid=...),由 @aliabdPR 3107 中完成

文档变更

  • 更新了 chatbot 指南,以包含 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 pipelines!

Image-to-text 演示
io = gr.Interface.load("models/nlpconnect/vit-gpt2-image-captioning",
                       api_key="<optional-api-key>")
io.launch()
image
conversational 演示
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 修复

  • 修复了 interpretation 事件配置不正确的错误,由 @freddyaboultonPR 2993 中完成
  • 修复了重新加载模式下的相对导入错误,由 @freddyaboultonPR 2992 中完成
  • 修复了上传图像时无法识别 png 文件的错误,由 @abidlabsPR 3002 中完成
  • 修复了外部 Spaces 无法加载并用作返回文件的函数的错误,由 @abidlabsPR 3004 中完成
  • 修复了文件序列化输出不是 JSON 可序列化的错误,由 @freddyaboultonPR 2999 中完成
  • 修复了上传图像时无法识别 png 文件的错误,由 @abidlabsPR 3002 中完成
  • 修复了临时上传的文件未添加到临时集中的错误,由 @abidlabsPR 3005 中完成
  • 修复了聊天机器人中的 markdown 支持破坏旧演示程序的 issue @dawoodkhan82PR 3006 中完成
  • 修复了最近在 PR 3010 中的更改中被破坏的 /file/ 路由
  • 修复了 Image 组件无法序列化图像 url 的错误,由 @freddyaboultonPR 2957 中完成
  • 修复了 SEO 重命名后指南的转发,由 @aliabdPR 3017 中完成
  • 切换网站上的所有页面以使用最新的稳定 gradio,由 @aliabdPR 3016 中完成
  • 修复了 HuggingFaceDatasetSaver 中 huggingface_hub 中已弃用参数相关的错误,在 PR 3025 中完成
  • 在解析绝对路径的方式中添加了对符号链接的更好支持,由 @abidlabsPR 3037 中完成
  • 修复了几个小的前端错误(加载动画,示例作为画廊)前端 @aliabid94PR 2961.
  • 修复了聊天机器人示例代码不适用于某些输入值的错误,由 @petrov826PR 3039.
  • 修复了表单元素的阴影,并确保焦点样式在暗色模式下更可见 @pngwnPR 3042.
  • 修复了 Checkbox 和 Dropdown change 事件未响应其他组件更改而触发的错误,由 @freddyaboultonPR 3045 中完成
  • 修复了在启动 closed 应用后队列未正确重启的错误,由 @freddyaboultonPR 3022 中完成
  • 在文档中添加了缺少的嵌入组件,由 @aliabdPR 3027 中完成
  • 修复了如果 gr.Filegr.UploadButtonfile_types 参数不是列表,应用会崩溃的错误,由 @freddyaboultonPR 3048 中完成
  • 确保 CSS 正确挂载,无论页面上有多少 Gradio 实例 @pngwnPR 3059.
  • 修复了 UploadButton 的输入组件在前台未隐藏的错误,由 @freddyaboultonPR 3053 中完成
  • 修复了单击提交或撤消后,sketch 输出不会清除的问题。 @dawoodkhan82PR 3047 中完成
  • 确保通过 Web 组件嵌入的 spaces 始终使用正确的 URL 进行服务器请求,并更改测试端口以避免用户在本地使用嵌入式应用时出现奇怪的冲突,由 @pngwnPR 3065 中完成
  • 通过更新保留 Gallery 的选定图像,由 @freddyaboultonPR 3061 中完成
  • 修复了 HF spaces 上未遵守身份验证的错误,由 @freddyaboulton@aliabid94PR 3049 中完成
  • 修复了如果手动更改选项卡,tabs 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 中完成
  • 恢复了下拉菜单 change 事件,由 @abidlabsPR 2954 中完成。
  • 修复了音频文件输出,由 @aliabid94PR 2961 中完成。
  • 修复了超长文件名在下载后文件扩展名丢失的 bug,由 @freddyaboultonPR 2929 中修复。
  • 修复了后端未返回示例输出的 bug,由 @freddyaboultonPR 2955 中修复。
  • 修复了 blocks_plug 演示中阻止使用 python 以编程方式切换选项卡的 bug,由 @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 修复

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

文档变更

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

测试和基础设施变更

完整更新日志

  • Blocks.queue 方法的 default_enabled 参数无效,由 @freddyaboultonPR 2876 中修复。
  • 为代码库中的多个 Python 文件添加了类型提示,由 @abidlabsPR 2887 中添加。
  • 从演示 notebook 检查操作中排除未跟踪的文件,由 @aliabdPR 2897 中完成。
  • 优化了图像和 gif,由 @aliabdPR 2922 中完成。
  • 更新了类型提示,由 @1nF0rmedPR 2904 中完成。

贡献者致谢

  • 感谢 @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 组件的 bug,由 @freddyaboultonPR 2861 中修复。
  • 修复了加载具有带有默认值的组件的 Spaces 的问题,由 @abidlabsPR 2855 中修复。
  • 修复了在 gr.Interface()allow_flagging="auto" 时的标记问题,由 @abidlabsPR 2695 中修复。
  • 修复了将非列表值传递给 gr.CheckboxGroup 会导致整个应用程序崩溃的 bug,由 @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 组件创建 Alert 和 Warning 框。请参见下文

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 加载音频输入模型的 bug,由 @freddyaboultonPR 2779 中修复。
  • 修复了当突出显示的文本从字典输入生成时实体未合并的问题 @payotoPR 2767 中修复
  • 修复了即使 websocket 连接已关闭,生成事件也未完成运行的 bug,由 @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() 中缺少请求超时时间的 bug,由 @yujiehecsPR 2729 中修复。
  • 修复了 File 组件可以正确地将文件预处理为“binary”字节字符串格式的 bug,由 CoffeeVampir3 在 PR 2727 中修复。
  • 修复了确保即使对于非英语语言,文件名也少于 200 个字符的 bug,由 @SkyTNTPR 2685 中修复。

文档变更

  • 移动设备上文档的性能改进,由 @aliabdPR 2730 中完成。

完整更新日志

  • 使“尝试示例”按钮更突出,由 @aliabdPR 2705 中完成。
  • 修复了文档中的 id 冲突,由 @aliabdPR 2713 中修复。
  • 修复了指南文档中的错别字,由 @andridnsPR 2722 中修复。
  • 在 Video 组件中添加 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 修复

  • 修复了限制通过 websockets 发送的文件大小为 16MB 的 bug。新限制现在为 1GB,由 @abidlabsPR 2709 中修复

文档变更

  • 更新了关于将 Gradio 演示嵌入 Spaces 作为 web 组件的文档,由 @julien-cPR 2698 中完成。
  • 更新了 Guides 中的 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 中完成。
  • 向文档和 /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 中添加
  • 如果 type 不是 “text”、“email” 或 “password”,gr.Textbox 组件现在将引发异常。@pngwnPR 2653 中添加。这将导致使用已弃用的 gr.Textbox(type="number") 的演示引发异常。

Bug 修复

  • 将测试中使用的最低 FastApi 更新到 0.87 版本,由 @freddyaboultonPR 2647 中完成。
  • 修复了带有示例的界面无法使用 gr.Interface.load 加载的 bug,由 @freddyaboulton PR 2640 中修复
  • 修复了组件的 interactive 属性无法更新的 bug,由 @freddyaboultonPR 2639 中修复。
  • 修复了某些 URL 未被识别为有效 URL,因此未在各种组件中正确加载的 bug,由 @abidlabsPR 2659 中修复。

文档变更

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

完整更新日志

  • Textbox 添加了对 'password''email' 类型的支持。@pngwnPR 2653 中添加

3.9.1

Bug 修复

  • 仅在加载时在 md 和 html 上设置最小高度,由 @pngwnPR 2623 中完成。

文档变更

  • 查看最新 gradio commit 到 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 参数指定要调用的 fn。

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 修复

  • 修复了 None 不能用于 File、Model3D 和 Audio 示例的 bug,由 @freddyaboultonPR 2588 中修复。
  • 修复了 Plotly 地图指南 + 演示中的链接,由 @dawoodkhan82PR 2578 中修复。
  • gr.Blocks.load() 现在可以正确加载来自 Spaces 的示例文件 @abidlabsPR 2594 中完成
  • 修复了图像清除启动上传对话框的 bug @mezotakenPR 2577 中修复。

文档变更

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

完整更新日志

3.8.2

Bug 修复

  • 确保通过 spaces 嵌入的 gradio 应用程序使用正确的端点进行预测。@pngwnPR 2567 中完成。
  • 确保通过 spaces 嵌入的 gradio 应用程序使用正确的 websocket 协议。@pngwnPR 2571 中完成。

新功能

连续运行事件

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

这可以用于

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

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

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 中修复。
  • 为所有 gallery 图像应用适当的 alt 文本。@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 的 bug,以便在渲染多个 Blocks 时可以正常工作,由 @abidlabsPR 2530 中修复。
  • 防止事件的无效目标导致整个应用程序崩溃。@pngwnPR 2534 中完成。
  • 在渲染多个应用程序时正确地将取消的事件出队,由 @freddyaboultonPR 2540 中完成。
  • 修复了由于未使用 height/width 参数而导致视频被裁剪的问题 @hannahblairPR 4946 中修复

文档变更

  • 在 Demos 页面的“表格和绘图”部分添加了一个交互式仪表板示例,由 @freddyaboultonPR 2508 中添加。

完整更新日志

  • 修复了用户在本地构建 Gradio 并尝试使用 share=True 时出现的错误消息,由 @abidlabsPR 2502 中修复。
  • 允许 render() 函数返回 self,由 @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 修复

  • 将加载状态跟踪器 UI 添加到 HTML 和 Markdown 组件。@pngwnPR 2474 中添加
  • 修复了如果源不是 webcam,视频在前端被镜像的问题,由 @freddyaboultonPR 2475 中修复。
  • 为 timeseries 组件添加清除按钮 @dawoodkhan82PR 2487 中添加
  • 从临时文件名中删除特殊字符,以便组件可以提供这些文件 @abidlabsPR 2480 中完成
  • 修复了将 gradio 作为子应用程序挂载时出现的无限重新加载循环问题,由 @freddyaboultonPR 2477 中修复。

文档变更

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

完整更新日志

  • 启用从其他事件取消正在运行的事件,由 @freddyaboultonPR 2433 中完成。
  • 重新上传演示之前对版本检查的小修复,由 @aliabdPR 2469 中完成。
  • 将加载状态跟踪器 UI 添加到 HTML 和 Markdown 组件。@pngwnPR 2400 中添加
  • 为 timeseries 组件添加清除按钮 @dawoodkhan82PR 2487 中添加

3.5

Bug 修复

  • 确保当将 gradio 应用程序作为 web 组件嵌入时,Gradio 不会控制 HTML 页面标题,此行为通过向 webcomponent 添加 control_page_title="true" 来翻转。@pngwnPR 2400 中添加

  • 通过使迭代异步来减少迭代输出演示中的延迟 @freddyaboultonPR 2409 中完成

  • 修复了在高负载下队列卡住的问题,由 @freddyaboultonPR 2374 中修复。

  • 确保当以下条件为真时,组件始终表现得好像设置了 interactive=True

    • 未提供默认值,
    • 它们未设置为事件的输入或输出,
    • 未设置 interactive kwarg。

    @pngwnPR 2459 中完成

新功能

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

文档变更

  • 改进了 gr.Dataset 组件的文档,此改进由 @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 Hardware,此更新由 @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 标题 🖼️

您现在可以为 Gallery 组件中的图像传递标题。为此,您需要传递一个 {List} (图像, {str} 标题) 元组列表。这是可选的,该组件也接受仅包含图像的列表。

这是一个示例

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. iframe 的剪贴板修复,此修复由 @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 中完成。

完整更新日志

  • 网站修复和重构,此操作由 @aliabdPR 2280 中完成。
  • 修复了队列中最大并发计数未被遵守的问题,此修复由 @freddyaboultonPR 2286 中完成。
  • postprocesspreprocess 提升为已记录的参数,此功能由 @abidlabsPR 2293 中实现。
  • 当尝试缓存示例但并非所有输入都有示例时,引发警告,此功能由 @freddyaboultonPR 2279 中实现。
  • 修复:队列可能被阻塞,此修复由 @SkyTNTPR 2288 中完成。
  • 不在发布时部署到 spaces,此更改由 @freddyaboultonPR 2313 中完成。
  • 支持在示例缓存中使用 gr.update(),此功能由 @abidlabsPR 2309 中实现。
  • 从 Spaces 加载 interfaces/blocks 时,遵守上游队列,此功能由 @freddyaboultonPR 2294 中实现。
  • iframe 的剪贴板修复,此修复由 @abidlabsPR 2321 中完成。
  • Gradio 的草图 + 图像修复功能,此功能由 @abidlabsPR 2144 中实现。
  • 更新 2)key_features.md,此更新由 @voidxdPR 2326 中完成。
  • 发布 3.4b3 版本,此发布由 @abidlabsPR 2328 中完成。
  • 修复:当您添加新列时,Dataframe 列标题被重置,此修复由 @dawoodkhan82PR 2318 中完成。
  • 当 gradio 是子应用程序时,启动队列,此功能由 @freddyaboultonPR 2319 中实现。
  • 修复 Web Tracker 脚本,此修复由 @aliabdPR 2308 中完成。
  • 为 blocks 上下文后处理函数添加文档,此文档由 @Ian-GLPR 2332 中添加。
  • 修复了 run_predict 函数中迭代器变量名称的错别字,此修复由 @freddyaboultonPR 2340 中完成。
  • 向 galleries 添加标题,此功能由 @aliabid94PR 2284 中添加。
  • gradio.Slider 上的可输入值,此功能由 @dawoodkhan82PR 2329 中实现。

贡献者致谢

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 sockets 而不是 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. 每次页面加载时随机化输入滑块和重新加载数据的能力
  • 在某些情况下,您希望能够在每个用户加载页面应用程序时向其显示一组不同的输入数据。 例如,您可能想要随机化 “seed” 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. 新指南 🖊️

完整更新日志

  • 通过将值设置为 None 将组件重置为原始状态,此功能由 @freddyaboultonPR 2044 中实现。
  • 清理组件数据处理方式,此清理由 @abidlabsPR 1967 中完成。
  • 版本 3.1.8b,此版本由 @abidlabsPR 2063 中发布。
  • Wandb 指南,此指南由 @AK391PR 1898 中编写。
  • 添加 flagging 回调以将 json 文件保存到 hugging face 数据集,此功能由 @chrisemezuePR 1821 中添加。
  • 向登陆页面添加数据科学演示,此功能由 @freddyaboultonPR 2067 中添加。
  • 默认情况下隐藏时间序列 + xgboost 演示,此功能由 @freddyaboultonPR 2079 中实现。
  • 当队列已满时,鼓励人们继续尝试,此功能由 @apolinarioPR 2076 中实现。
  • 更新了我们在创建 Blocks/Interface 时的分析,此更新由 @abidlabsPR 2082 中完成。
  • Label 组件现在接受 .json 文件的文件路径,此功能由 @abidlabsPR 2083 中实现。
  • 修复了与 Spaces 中的演示相关的问题,此修复由 @abidlabsPR 2086 中完成。
  • 修复了 TimeSeries 示例在 UI 中未正确显示的问题,此修复由 @dawoodkhan82PR 2064 中完成。
  • 修复了在执行标签页项目选择时发生的无限请求问题,此修复由 @freddyaboultonPR 2070 中完成。
  • 也接受已弃用的 file 路由,此功能由 @abidlabsPR 2099 中实现。
  • 允许在 Block.load 事件上执行前端方法,此功能由 @codedealerPR 2108 中实现。
  • State 的改进,此改进由 @abidlabsPR 2100 中完成。
  • 捕获 video_is_playable 中的 IndexError、KeyError,此修复由 @freddyaboultonPR 2113 中完成。
  • 修复:下载按钮不遵守函数返回的文件路径,此修复由 @dawoodkhan82PR 2073 中完成。
  • 重构布局:添加列宽、表单等。,此重构由 @aliabid94PR 2097 中完成。
  • 更新 CONTRIBUTING.md,此更新由 @abidlabsPR 2118 中完成。
  • 2092 df ex,此功能由 @pngwnPR 2125 中实现。
  • feat(samples table/gallery):将缩略图裁剪为正方形,此功能由 @ronvolutedPR 2109 中实现。
  • gr.Examples 的一些增强,此增强由 @abidlabsPR 2131 中完成。
  • 图像大小修复,此修复由 @aliabid94PR 2133 中完成。

贡献者致谢

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 notebooks 上进行开发。

如果您的演示代码在一个名为 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 工作,请改用这些 magic 命令:在导入 gradio 时使用 %load_ext gradio,并在包含演示代码的单元格顶部使用 %%blocks。 这是一个示例,展示了开发速度会提高多少

Blocks

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

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

这是一个来自 LAMA space 的示例

FXApVlFVsAALSD-

4. Dataframe 中对 Markdown 和 HTML 的支持 🔢

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

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

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

完整更新日志

  • 文件组件:列出多个文件并允许下载 #1446,此功能由 @dawoodkhan82PR 1681 中实现。
  • 将 ColorPicker 添加到文档,此添加由 @freddyaboultonPR 1768 中完成。
  • 在 TestRequest 单元测试中模拟请求,此模拟由 @freddyaboultonPR 1794 中完成。
  • 将 requirements.txt 和 test_files 添加到源发行版,此添加由 @freddyaboultonPR 1817 中完成。
  • 重构:tunneling.py 的 f-string,此重构由 @nhankietPR 1819 中完成。
  • 对网站的各种格式改进,此改进由 @aliabdPR 1754 中完成。
  • integrate() 方法已移动到 Blocks,此移动由 @abidlabsPR 1776 中完成。
  • 添加 python-3.7 测试,此添加由 @freddyaboultonPR 1818 中完成。
  • 在网站 dockers 中复制 test 目录,此操作由 @aliabdPR 1827 中完成。
  • 向文档添加关于如何为组件设置默认值的信息,此添加由 @freddyaboultonPR 1788 中完成。
  • 在文档上嵌入组件,此功能由 @aliabdPR 1726 中实现。
  • 从网站中删除已弃用的 gr.inputs 和 gr.outputs 的用法,此删除由 @freddyaboultonPR 1796 中完成。
  • 对文档页面的一些清理,此清理由 @abidlabsPR 1822 中完成。

贡献者致谢

3.0

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

新功能

1. Blocks 🧱

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

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

这是一个简单的示例,用于创建下面的演示

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 派对

2. 我们改进的设计 🎨

我们升级了整个库的设计:从组件和布局一直到暗黑模式。

kitchen_sink

3. 新网站 💻

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

website

4. 新组件:Model3D、Dataset 和更多组件..

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

Model3d

完整更新日志

贡献者致谢