import torch import gradio as gr from transformers import pipeline pipe = pipeline( "question-answering", model="deepset/roberta-base-squad2") # Function to read the content of a file object def read_file_content(file_obj): """ Reads the content of a file object and returns it. Parameters: file_obj (file object): The file object to read from. Returns: str: The content of the file. """ try: with open(file_obj.name, 'r', encoding='utf-8') as file: context = file.read() return context except Exception as e: return f"An error occurred: {e}" # Function to get the answer to a question from a file def get_answer(file, question): """ Answers a question based on the content of a file. Parameters: file (file object): The file object containing the context. question (str): The question to answer. Returns: str: The answer to the question. """ if not question or not file: return "Please provide both a question and a file." context = read_file_content(file) answer = pipe(question=question, context=context) return answer["answer"] # Create the Gradio interface demo = gr.Interface(fn=get_answer, inputs=[gr.File(label="File Upload"), gr.Textbox(label="Prompt Input", lines=1)], outputs=[gr.Textbox(label="Response", lines=1)], title="@caesar-2series: Rag Application", description="Retrieval Augmented Generation Questions-Answering Application") # Launch the Gradio interface demo.launch()