Spaces:
Running
Running
| 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) | |