快速结论:这个报错/特性请求通常出现在用 Gradio 的 Button.click() 等事件绑定函数,而目标函数包含关键字参数(尤其是 keyword-only 参数)时;Gradio 当时只支持位置参数传入,因此需要先确认你的函数签名和事件绑定方式。
适用环境:Issue 中已确认工具为 Gradio(Python);未提供具体操作系统、Python、CUDA、显卡或依赖版本信息。
最快修复方案:暂无确认的一步修复方案。Issue 中明确提到的临时处理方式是自行编写一个 wrapper 函数,把关键字参数在 wrapper 内部补齐后再交给 Gradio 事件。
注意事项:Issue 中维护者表示该特性需要较多改动,计划在 4.0 之后再看;后续有贡献者表示愿意实现 inputs_kwargs 并保持对现有 inputs API 的向后兼容,但这属于提议阶段,不能当作已发布功能使用。因此不要直接照搬示例中的 inputs_kwargs 参数,除非你确认所用 Gradio 版本已经支持该参数。
问题场景
用户在 Gradio 中把模型函数包装成 WebUI,并通过 gradio.Button.click 绑定点击事件。该模型函数包含大量关键字参数,或含有 keyword-only 参数,例如示例中的 greet(name: str, *, last_name: str)。Gradio 的事件绑定在 Issue 当时只支持位置参数列表 inputs=[...],无法直接把 last_name 这类参数以关键字形式传给 fn,因此用户只能额外写 wrapper。
报错原文
Keyword Input Arguments for Click Events
Issue 正文中的需求示例为:
import gradio as gr
def greet(name: str, *, last_name: str):
return name + " " + last_name
with gr.Blocks() as demo:
txt_0 = gr.Text()
txt_1 = gr.Text()
txt_2 = gr.Text()
btn = gr.Button("Click me")
# This is the change, allow inputs be a positional argument list and inputs_kwargs be a dictionary of args
btn.click(greet, inputs=[txt_0], inputs_kwargs={'last_name': txt_1}, outputs=[txt_2])
if __name__ == '__main__':
demo.launch(server_name="0.0.0.0", server_port=7860)
原因分析
可能原因是 Gradio 的事件绑定接口在 Issue 对应版本中只按位置顺序把 inputs 里的组件值传给 fn,并不识别或注入关键字参数。因此当目标函数包含 keyword-only 参数,或调用方希望绕过位置顺序直接按参数名传值时,就无法直接绑定,只能通过 wrapper 把位置参数转换成目标函数所需的关键字参数。
环境排查
- 确认当前使用的 Gradio 版本是否已经支持
inputs_kwargs;Issue 中未给出具体版本号,需以实际安装版本的文档和源码为准。 - 确认触发问题的函数签名:是否包含 keyword-only 参数(如
*之后的参数),或是否必须按参数名传值。 - 确认事件绑定写法:当前是否只用了
inputs=[...],以及inputs中组件数量、顺序是否与函数参数匹配。 - 确认是否存在 wrapper:如果已有 wrapper,检查 wrapper 是否已经正确把组件值映射为目标函数的关键字参数。
- Issue 未提供 Python、CUDA、PyTorch、显卡或操作系统版本,这些项目无法从当前讨论中确认,不需要优先排查。
解决步骤
- 先检查你安装的 Gradio 版本是否已经正式支持
inputs_kwargs。如果支持,可以按 Issue 中的目标用法尝试;如果文档和源码中没有该参数,则不要直接使用。 - 如果当前版本不支持,保留 Issue 中提到的临时方案:为
greet这类函数写一层 wrapper,让 Gradio 的inputs先传入位置参数,再由 wrapper 调用目标函数并传入关键字参数。 - wrapper 中要明确把每个
inputs组件对应到目标函数的参数名,避免依赖位置顺序造成错位;对 keyword-only 参数尤其要显式写出参数名。 - 事件仍然使用
btn.click(...),把 wrapper 作为fn,inputs传入需要的组件,outputs传入输出组件。 - 如果愿意推动该特性,可以参考 Issue 中贡献者的提议:实现
inputs_kwargs并保持对现有inputsAPI 的向后兼容,然后提交 PR。但这属于开发贡献路径,不是终端用户的即时修复。
验证方法
启动 Gradio 应用后点击按钮,确认输出组件得到的结果与直接调用目标函数一致,尤其是 keyword-only 参数对应的值来自正确的输入组件。如果使用 wrapper,还应确认当 inputs 顺序变化或组件增减时,wrapper 中的参数映射不会静默错位。若 Gradio 版本已支持 inputs_kwargs,则可用 Issue 中的 btn.click(greet, inputs=[txt_0], inputs_kwargs={'last_name': txt_1}, outputs=[txt_2]) 形式做对照验证。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。
![[bug]: Flux.2 Klein Img2Img Posterization](https://www.chat-gpts.plus/wp-content/uploads/2026/09/8964-03399129-768x403.jpg)

