import gradio as gr from transformers import pipeline from happytransformer import HappyTextToText, TTSettings def translate(language_1, language_2, message): translator = pipeline(f"translation", model="Helsinki-NLP/opus-mt-{}-{}".format(language_1, language_2)) output = translator(message) return output[0]['translation_text'] def summarize(text): summerizer = pipeline("summarization", model="facebook/bart-large-cnn") output = summerizer(text) return output[0]['summary_text'] def question(question, context): question_model = pipeline("question-answering", model="deepset/roberta-base-squad2") output = question_model({ 'question': question, 'context' : context }) return output['answer'] def grammar(user_input): grammar_model = HappyTextToText("T5", "vennify/t5-base-grammar-correction") args = TTSettings(num_beams=5, min_length=1) output = grammar_model.generate_text('grammar: ' + user_input, args=args) return output.text def mask(text): mask_model = pipeline("fill-mask", model="google-bert/bert-base-uncased") output = mask_model(text) return output[0]['sequence'] def multi_model(text): mask_model = mask(text) summerize_model = summarize(mask_model) question_model = question('Is this text about politics?', summerize_model) translation_model = translate('en', 'nl', question_model) grammar_model = grammar(translation_model) return grammar_model with gr.Blocks() as demo: gr.Markdown("Technology 2 - Ai interfaces") #tab single model with gr.Tab("Single-Models"): with gr.Row(equal_height=True): #column left (1) with gr.Column(scale=1): choice1 = gr.Dropdown( choices=["nl", "fr", "en"], label="Select an option") choice2 = gr.Dropdown( choices=["nl", "fr", "en"], label="Select an option") textbox = gr.Textbox(label="message") translate_btn = gr.Button("Translate") translated_box = gr.Textbox() translate_btn.click(fn=translate, inputs=[choice1, choice2, textbox], outputs=translated_box ) #column right (2) with gr.Column(scale=1): textbox_summary = gr.Textbox(label="text you want to summarize") textbox_summary_output = gr.Textbox() summary_btn = gr.Button('summarize') summary_btn.click(fn=summarize, inputs=textbox_summary, outputs=textbox_summary_output) with gr.Column(scale=1): textbox_question = gr.Textbox(label = 'question') textbox_context = gr.Textbox(label = 'context') textbox_question_output = gr.Textbox() question_btn = gr.Button("Get your Answer") question_btn.click(fn=question, inputs=[textbox_question, textbox_context], outputs = textbox_question_output) with gr.Column(scale=1): textbox_mask = gr.Textbox(label="Give me a sentance and use the word [MASK] to predict what will go there") mask_button = gr.Button("Generate") textbox_mask_output = gr.Textbox() mask_button.click(fn=mask, inputs = textbox_mask, outputs = textbox_mask_output) with gr.Column(scale=1): textbox_grammar = gr.Textbox(label="I will correct your grammar mistakes.") grammar_button = gr.Button("Fix grammar") textbox_grammar_output = gr.Textbox() grammar_button.click(fn=grammar, inputs=textbox_grammar, outputs=textbox_grammar_output) #tab mulit model with gr.Tab("Multi-Models"): textblock = gr.Textbox(label="give me a sentence and replace some words with [MASK] and i will summerize and translate it for your") btn1 = gr.Button("START") response = gr.Textbox() btn1.click(fn=multi_model, inputs = textblock, outputs=response) demo.launch(debug=True)