File size: 5,005 Bytes
5f6c201
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
import gradio as gr
from transformers import pipeline

playground = gr.Blocks()


def review_training_choices(choice):
    print(choice)
    if choice == "Use Pipeline":
        return gr.Row(visible=True)
    else:
        return gr.Row(visible=False)


def show_optional_fields(task):
    if task == "question-answering":
        return gr.TextArea(visible=True)
    return gr.TextArea(visible=False)


def test_pipeline(task, model=None, prompt=None, context=None):
    if model:
        test = pipeline(task, model=model)
    else:
        if task == "ner":
            test = pipeline(task, grouped_entities=True)
        else:
            test = pipeline(task)
    if task == "question-answering":
        if not context:
            return "Context is required"
        else:
            result = test(question=prompt, context=context)
    else:
        result = test(prompt)
    match task:
        case "text-generation":
            return gr.TextArea(result[0]["generated_text"])
        case "fill-mask":
            return gr.TextArea(result[0]["sequence"])
        case "summarization":
            return gr.TextArea(result[0]["summary_text"])
        case "ner":
            ner_result = "\n".join(
                f"{k}={v}" for item in result for k, v in item.items() if k not in ["start", "end", "index"])
            return gr.TextArea(ner_result.rstrip("\n"))

        case "question-answering":
            return gr.TextArea(result)


with playground:
    gr.Markdown("""
                Try your ideas here. Select from Text, Image or Audio
                """)
    with gr.Tabs():
        with gr.TabItem("Text"):
            with gr.Row():
                with gr.Column(scale=4):
                    radio = gr.Radio(
                        ["Use Pipeline", "Fine Tune"],
                        label="Select Use Pipeline to try out HF    models or Fine Tune to test it on your own datasets",
                        value="Use Pipeline",
                        interactive=True,
                    )
                with gr.Column(scale=1):
                    test_pipeline_button = gr.Button(
                        value="Test", variant="primary", size="sm")
            with gr.Row(visible=True) as use_pipeline:
                with gr.Column():
                    task_dropdown = gr.Dropdown(
                        [("Text Generation", "text-generation"), ("Fill Mask",
                                                                  "fill-mask"), ("Summarization", "summarization"), ("Named Entity Recognition", "ner"), ("Question Answering", "question-answering")],
                        label="task",
                    )
                    model_dropdown = gr.Dropdown(
                        [],
                        label="model",
                        allow_custom_value=True,
                        interactive=True
                    )
                    prompt_textarea = gr.TextArea(
                        label="prompt", value="Enter your prompt here", text_align="left")
                    context_for_question_answer = gr.TextArea(
                        label="Context", value="Enter Context for your question here", visible=False, interactive=True)
                    task_dropdown.change(show_optional_fields, inputs=[
                                         task_dropdown], outputs=[context_for_question_answer])
                with gr.Column():
                    text = gr.TextArea(label="Generated Text")
            radio.change(review_training_choices,
                         inputs=radio, outputs=use_pipeline)
            test_pipeline_button.click(test_pipeline, inputs=[
                                       task_dropdown, model_dropdown, prompt_textarea, context_for_question_answer], outputs=text)
        with gr.TabItem("Image"):
            with gr.Row():
                with gr.Column(scale=3):
                    radio = gr.Radio(
                        ["Use Pipeline", "Fine Tune"],
                        label="Select Use Pipeline to try out HF    models or Fine Tune to test it on your own datasets",
                        value="Use Pipeline",
                        interactive=True
                    )
                with gr.Column(scale=1):
                    test_pipeline_button = gr.Button(
                        value="Test", variant="primary", size="sm")
        with gr.TabItem("Audio"):
            with gr.Row():
                with gr.Column(scale=3):
                    radio = gr.Radio(
                        ["Use Pipeline", "Fine Tune"],
                        label="Select Use Pipeline to try out HF    models or Fine Tune to test it on your own datasets",
                        value="Use Pipeline",
                        interactive=True
                    )
                with gr.Column(scale=1):
                    test_pipeline_button = gr.Button(
                        value="Test", variant="primary", size="sm")

playground.launch(share=True)