flashcard-studio / app /interface.py
Nathan Slaughter
improve prompt and interface
cf1cddb
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)
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 CSV or JSON output format."
)
with gr.Tab("Upload File"):
with gr.Row():
with gr.Column():
file_input = gr.File(
label="Upload a File",
file_types=['.txt', '.md']
)
format_selector = gr.Radio(
choices=["CSV", "JSON"],
label="Select Output Format",
value="CSV",
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="CSV",
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: `.txt`, `.md`.
"""
)
return interface