Allow gr.HTML to trigger any event name (#12967)
changes
changes
add changeset
Co-authored-by: Ali Abid aliabid94@gmail.com Co-authored-by: gradio-pr-bot gradio-pr-bot@users.noreply.github.com
版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9
京公网安备 11010802032778号
Website | Documentation | Guides | Getting Started | Examples
English | 中文
Gradio: Build Machine Learning Web Apps — in Python
Gradio is an open-source Python package that allows you to quickly build a demo or web application for your machine learning model, API, or any arbitrary Python function. You can then share a link to your demo or web application in just a few seconds using Gradio’s built-in sharing features. No JavaScript, CSS, or web hosting experience needed!
It just takes a few lines of Python to create your own demo, so let’s get started 💫
Installation
Prerequisite: Gradio requires Python 3.10 or higher.
We recommend installing Gradio using
pip, which is included by default in Python. Run this in your terminal or command prompt:Building Your First Demo
You can run Gradio in your favorite code editor, Jupyter notebook, Google Colab, or anywhere else you write Python. Let’s write your first Gradio app:
Now, run your code. If you’ve written the Python code in a file named
app.py, then you would runpython app.pyfrom the terminal.The demo below will open in a browser on http://localhost:7860 if running from a file. If you are running within a notebook, the demo will appear embedded within the notebook.
Type your name in the textbox on the left, drag the slider, and then press the Submit button. You should see a friendly greeting on the right.
Understanding the
InterfaceClassYou’ll notice that in order to make your first demo, you created an instance of the
gr.Interfaceclass. TheInterfaceclass is designed to create demos for machine learning models which accept one or more inputs, and return one or more outputs.The
Interfaceclass has three core arguments:fn: the function to wrap a user interface (UI) aroundinputs: the Gradio component(s) to use for the input. The number of components should match the number of arguments in your function.outputs: the Gradio component(s) to use for the output. The number of components should match the number of return values from your function.The
fnargument is very flexible – you can pass any Python function that you want to wrap with a UI. In the example above, we saw a relatively simple function, but the function could be anything from a music generator to a tax calculator to the prediction function of a pretrained machine learning model.The
inputsandoutputsarguments take one or more Gradio components. As we’ll see, Gradio includes more than 30 built-in components (such as thegr.Textbox(),gr.Image(), andgr.HTML()components) that are designed for machine learning applications.If your function accepts more than one argument, as is the case above, pass a list of input components to
inputs, with each input component corresponding to one of the arguments of the function, in order. The same holds true if your function returns more than one value: simply pass in a list of components tooutputs. This flexibility makes theInterfaceclass a very powerful way to create demos.We’ll dive deeper into the
gr.Interfaceon our series on building Interfaces.Sharing Your Demo
What good is a beautiful demo if you can’t share it? Gradio lets you easily share a machine learning demo without having to worry about the hassle of hosting on a web server. Simply set
share=Trueinlaunch(), and a publicly accessible URL will be created for your demo. Let’s revisit our example demo, but change the last line as follows:When you run this code, a public URL will be generated for your demo in a matter of seconds, something like:
👉
https://a23dsf231adb.gradio.liveNow, anyone around the world can try your Gradio demo from their browser, while the machine learning model and all computation continues to run locally on your computer.
To learn more about sharing your demo, read our dedicated guide on sharing your Gradio application.
An Overview of Gradio
So far, we’ve been discussing the
Interfaceclass, which is a high-level class that lets you build demos quickly with Gradio. But what else does Gradio include?Custom Demos with
gr.BlocksGradio offers a low-level approach for designing web apps with more customizable layouts and data flows with the
gr.Blocksclass. Blocks supports things like controlling where components appear on the page, handling multiple data flows and more complex interactions (e.g. outputs can serve as inputs to other functions), and updating properties/visibility of components based on user interaction — still all in Python.You can build very custom and complex applications using
gr.Blocks(). For example, the popular image generation Automatic1111 Web UI is built using Gradio Blocks. We dive deeper into thegr.Blockson our series on building with Blocks.Chatbots with
gr.ChatInterfaceGradio includes another high-level class,
gr.ChatInterface, which is specifically designed to create Chatbot UIs. Similar toInterface, you supply a function and Gradio creates a fully working Chatbot UI. If you’re interested in creating a chatbot, you can jump straight to our dedicated guide ongr.ChatInterface.The Gradio Python & JavaScript Ecosystem
That’s the gist of the core
gradioPython library, but Gradio is actually so much more! It’s an entire ecosystem of Python and JavaScript libraries that let you build machine learning applications, or query them programmatically, in Python or JavaScript. Here are other related parts of the Gradio ecosystem:gradio_client): query any Gradio app programmatically in Python.@gradio/client): query any Gradio app programmatically in JavaScript.What’s Next?
Keep learning about Gradio sequentially using the Gradio Guides, which include explanations as well as example code and embedded interactive demos. Next up: let’s dive deeper into the Interface class.
Or, if you already know the basics and are looking for something specific, you can search the more technical API documentation.
AI Coding Skills
Gradio provides a “skill” that enriches AI coding assistants (like Cursor, Claude Code, Codex, etc.) with Gradio-specific knowledge, so that they can build Gradio apps more effectively. This is especially useful when creating custom Gradio components or styling. Install the Gradio skill for your coding assistant with a single command:
Use
--globalto install at the user level (applies to all projects). Your skill will be automatically available for the particular coding agent.You can also install a skill for a specific Gradio Space, which generates API usage docs (Python, JS, cURL) on the fly:
Questions?
If you’d like to report a bug or have a feature request, please create an issue on GitHub. For general questions about usage, we are available on our Discord server and happy to help.
If you like Gradio, please leave us a ⭐ on GitHub!
Open Source Stack
Gradio is built on top of many wonderful open-source libraries!
License
Gradio is licensed under the Apache License 2.0 found in the LICENSE file in the root directory of this repository.
Citation
Also check out the paper Gradio: Hassle-Free Sharing and Testing of ML Models in the Wild, ICML HILL 2019, and please cite it if you use Gradio in your work.