Spaces:
Running
Running
import gradio as gr | |
from task import tasks_config | |
from transformers import pipeline | |
def review_training_choices(choice): | |
if choice == "Use Pipeline": | |
return gr.Row(visible=True) | |
else: | |
return gr.Row(visible=False) | |
def task_dropdown_choices(): | |
return [(task["name"], task_id) | |
for task_id, task in tasks_config.items()] | |
def handle_task_change(task): | |
visibility = task == "question-answering" | |
models = tasks_config[task]["config"]["models"] | |
model_choices = [(model, model) for model in models] | |
return gr.update(visible=visibility), gr.Dropdown( | |
choices=model_choices, | |
label="Model", | |
allow_custom_value=True, | |
interactive=True | |
), gr.Dropdown(info=tasks_config[task]["info"]) | |
def test_pipeline(task, model=None, prompt=None, context=None): | |
# configure additional options for each model | |
options = {"ner": {"grouped_entities": True}, "question-answering": {}, | |
"text-generation": {}, "fill-mask": {}, "summarization": {}} | |
# configure pipeline | |
test = pipeline(task, model=model, ** | |
options[task]) if model else pipeline(task, **options[task]) | |
# call pipeline | |
if task == "question-answering": | |
if not context: | |
return "Context is required" | |
else: | |
result = test(question=prompt, context=context) | |
else: | |
result = test(prompt) | |
# generated ouput based on task and return | |
output_mapping = { | |
"text-generation": lambda x: x[0]["generated_text"], | |
"fill-mask": lambda x: x[0]["sequence"], | |
"summarization": lambda x: x[0]["summary_text"], | |
"ner": lambda x: "\n".join(f"{k}={v}" for item in x for k, v in item.items() if k not in ["start", "end", "index"]).rstrip("\n"), | |
"question-answering": lambda x: x | |
} | |
return gr.TextArea(output_mapping[task](result)) | |