Introducing Gradio 5.0

Read More
  1. Helpers
  2. LikeData

New to Gradio? Start here: Getting Started

See the Release History

To install Gradio from main, run the following command:

pip install https://gradio-builds.s3.amazonaws.com/9285dd9eb842ee05bd8a0fd4f0f9143788096bbc/gradio-5.9.1-py3-none-any.whl

*Note: Setting share=True in launch() will not work.

LikeData

gradio.LikeData(ยทยทยท)

Description

The gr.LikeData class is a subclass of gr.EventData that specifically carries information about the .like() event. When gr.LikeData is added as a type hint to an argument of an event listener method, a gr.LikeData object will automatically be passed as the value of that argument. The attributes of this object contains information about the event that triggered the listener.

Example Usage

import gradio as gr

def test(value, like_data: gr.LikeData):
    return {
        "chatbot_value": value,
        "liked_message": like_data.value,
        "liked_index": like_data.index,
        "liked_or_disliked_as_bool": like_data.liked
    }

with gr.Blocks() as demo:
    c = gr.Chatbot([("abc", "def")])
    t = gr.JSON()
    c.like(test, c, t)

demo.launch()

Attributes

Parameters
index: int | tuple[int, int]

The index of the liked/disliked item. Is a tuple if the component is two dimensional.

value: Any

The value of the liked/disliked item.

selected: bool

True if the item was liked, False if disliked.

Demos

import gradio as gr
import random

# Chatbot demo with multimodal input (text, markdown, LaTeX, code blocks, image, audio, & video). Plus shows support for streaming text.

color_map = {
    "harmful": "crimson",
    "neutral": "gray",
    "beneficial": "green",
}

def html_src(harm_level):
    return f"""
{harm_level}
""" def print_like_dislike(x: gr.LikeData): print(x.index, x.value, x.liked) def add_message(history, message): for x in message["files"]: history.append(((x,), None)) if message["text"] is not None: history.append((message["text"], None)) return history, gr.MultimodalTextbox(value=None, interactive=False) def bot(history, response_type): if response_type == "gallery": history[-1][1] = gr.Gallery( [ "https://raw.githubusercontent.com/gradio-app/gradio/main/test/test_files/bus.png", "https://raw.githubusercontent.com/gradio-app/gradio/main/test/test_files/bus.png", ] ) elif response_type == "image": history[-1][1] = gr.Image( "https://raw.githubusercontent.com/gradio-app/gradio/main/test/test_files/bus.png" ) elif response_type == "video": history[-1][1] = gr.Video( "https://github.com/gradio-app/gradio/raw/main/demo/video_component/files/world.mp4" ) elif response_type == "audio": history[-1][1] = gr.Audio( "https://github.com/gradio-app/gradio/raw/main/test/test_files/audio_sample.wav" ) elif response_type == "html": history[-1][1] = gr.HTML( html_src(random.choice(["harmful", "neutral", "beneficial"])) ) else: history[-1][1] = "Cool!" return history with gr.Blocks(fill_height=True) as demo: chatbot = gr.Chatbot( elem_id="chatbot", bubble_full_width=False, scale=1, ) response_type = gr.Radio( [ "image", "text", "gallery", "video", "audio", "html", ], value="text", label="Response Type", ) chat_input = gr.MultimodalTextbox( interactive=True, placeholder="Enter message or upload file...", show_label=False, ) chat_msg = chat_input.submit( add_message, [chatbot, chat_input], [chatbot, chat_input] ) bot_msg = chat_msg.then( bot, [chatbot, response_type], chatbot, api_name="bot_response" ) bot_msg.then(lambda: gr.MultimodalTextbox(interactive=True), None, [chat_input]) chatbot.like(print_like_dislike, None, None) if __name__ == "__main__": demo.launch()