from transformers import AutoModel, AutoModelForSeq2SeqLM, AutoModelForQuestionAnswering, AutoTokenizer, pipeline import gradio as grad import ast # 1. The RoBERTa base model is used, fine-tuned using the SQuAD 2.0 dataset. # It’s been trained on question-answer pairs, including unanswerable questions, for the task of question and answering. # mdl_name = "deepset/roberta-base-squad2" # my_pipeline = pipeline('question-answering', model=mdl_name, tokenizer=mdl_name) # 2. Different model. # mdl_name = "distilbert-base-cased-distilled-squad" # my_pipeline = pipeline('question-answering', model=mdl_name, tokenizer=mdl_name) # def answer_question(question,context): # text= "{"+"'question': '"+question+"','context': '"+context+"'}" # di=ast.literal_eval(text) # response = my_pipeline(di) # return response # grad.Interface(answer_question, inputs=["text","text"], outputs="text").launch() # 3. Different task: language translation. # First model translates English to German. # mdl_name = "Helsinki-NLP/opus-mt-en-de" # opus_translator = pipeline("translation", model=mdl_name) # def translate(text): # response = opus_translator(text) # return response # grad.Interface(translate, inputs=["text",], outputs="text").launch() # 4. Language translation without pipeline API. # Second model translates English to French. mdl_name = "Helsinki-NLP/opus-mt-en-fr" mdl = AutoModelForSeq2SeqLM.from_pretrained(mdl_name) my_tkn = AutoTokenizer.from_pretrained(mdl_name) def translate(text): inputs = my_tkn(text, return_tensors="pt") trans_output = mdl.generate(**inputs) response = my_tkn.decode(trans_output[0], skip_special_tokens=True) return response txt=grad.Textbox(lines=1, label="English", placeholder="English Text here") out=grad.Textbox(lines=1, label="French") grad.Interface(translate, inputs=txt, outputs=out).launch()