import gradio as gr from transformers import pipeline import chardet # Initialize the question-answering pipeline #qa_pipeline = pipeline("question-answering",model="deepset/roberta-base-squad2") qa_pipeline = pipeline("question-answering", model="distilbert-base-cased-distilled-squad") def answer_question(context, question): result = qa_pipeline(question=question, context=context) return result['answer'] def process(context_file, question): # Read the context from the uploaded file with open(context_file.name, 'rb') as file: raw_data = file.read() result = chardet.detect(raw_data) encoding = result['encoding'] # Fallback to a default encoding if detection fails if encoding is None: encoding = 'utf-8' # Default encoding context = raw_data.decode(encoding, errors='replace') # Replace errors with a placeholder answer = answer_question(context, question) return answer # Example context file content example_context = """Saudi Arabia, officially known as the Kingdom of Saudi Arabia (KSA), is a country in Western Asia. Riyadh is its capital and largest city. The country is known for its vast deserts and rich cultural heritage.""" # Save example context to a file with open("example_context.txt", "w", encoding="utf-8") as f: f.write(example_context) # Gradio interface demo = gr.Interface( fn=process, inputs=[ gr.File(label="Upload Context File", file_types=[".txt"]), gr.Textbox(label="Question", value="What is the capital city of Saudia Arabia?") ], outputs=[gr.Textbox(label="Answer")], title="Question Answering", description="Upload a file with context and ask a question. The answer will be displayed.", examples=[["example_context.txt", "What is the capital city of Saudia Arabia?"]] ) if __name__ == "__main__": demo.launch()