Spaces:
Sleeping
Sleeping
import gradio as gr | |
from .pipeline import Pipeline | |
from .processing import process_file, process_text_input | |
def create_interface(): | |
# Initialize the language model | |
language_model = Pipeline() | |
# Define the Output Format Selector | |
output_format_selector = gr.Radio( | |
choices=["CSV", "JSON"], | |
label="Select Output Format", | |
value="JSON", | |
type="value" | |
) | |
# Define the Output Flashcards | |
flashcard_output_file = gr.Textbox( | |
label="Flashcards", | |
lines=20, | |
placeholder="Your flashcards will appear here..." | |
) | |
flashcard_output_text = gr.Textbox( | |
label="Flashcards", | |
lines=20, | |
placeholder="Your flashcards will appear here..." | |
) | |
# Define the Gradio interface function for File Upload | |
def handle_file_upload(file_obj, output_format): | |
try: | |
flashcards = process_file(file_obj, output_format, Pipeline()) | |
return flashcards | |
except ValueError as ve: | |
return str(ve) | |
# Define the Gradio interface function for Text Input | |
def handle_text_input(input_text, output_format): | |
try: | |
flashcards = process_text_input(input_text, output_format, Pipeline()) | |
return flashcards | |
except ValueError as ve: | |
return str(ve) | |
# Create the Gradio Tabs | |
with gr.Blocks() as interface: | |
gr.Markdown("# Flashcard Studio") | |
gr.Markdown( | |
"Make flashcards from uploaded files or directly input text. Choose your preferred output format." | |
) | |
with gr.Tab("Upload File"): | |
with gr.Row(): | |
with gr.Column(): | |
file_input = gr.File( | |
label="Upload a File", | |
file_types=['.pdf', '.txt', '.md'] | |
) | |
format_selector = gr.Radio( | |
choices=["CSV", "JSON"], | |
label="Select Output Format", | |
value="JSON", | |
type="value" | |
) | |
submit_file = gr.Button("Extract Flashcards") | |
with gr.Column(): | |
flashcard_output_file = gr.Textbox( | |
label="Flashcards", | |
lines=20, | |
placeholder="Extracted flashcards will appear here..." | |
) | |
submit_file.click( | |
fn=handle_file_upload, | |
inputs=[file_input, format_selector], | |
outputs=flashcard_output_file | |
) | |
with gr.Tab("Input Text"): | |
with gr.Row(): | |
with gr.Column(): | |
text_input = gr.Textbox( | |
label="Enter Text", | |
lines=20, | |
placeholder="Type or paste your text here..." | |
) | |
format_selector_text = gr.Radio( | |
choices=["CSV", "JSON"], | |
label="Select Output Format", | |
value="JSON", | |
type="value" | |
) | |
submit_text = gr.Button("Extract Flashcards") | |
with gr.Column(): | |
flashcard_output_text = gr.Textbox( | |
label="Flashcards", | |
lines=20, | |
placeholder="Extracted flashcards will appear here..." | |
) | |
submit_text.click( | |
fn=handle_text_input, | |
inputs=[text_input, format_selector_text], | |
outputs=flashcard_output_text | |
) | |
gr.Markdown( | |
""" | |
--- | |
**Notes:** | |
- Supported file types: `.pdf`, `.txt`, `.md`. | |
- Ensure that the input text is clear and well-structured for optimal flashcard extraction. | |
""" | |
) | |
return interface | |