Spaces:
Sleeping
Sleeping
import gradio as gr | |
from transformers import pipeline | |
from fine_tune_hf import FinetuneHFModel | |
fine_tune_model = FinetuneHFModel() | |
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) | |