import gradio as gr from transformers import AutoModelForSeq2SeqLM, AutoTokenizer # Load the model and tokenizer model = AutoModelForSeq2SeqLM.from_pretrained("vennify/t5-base-grammar-correction") tokenizer = AutoTokenizer.from_pretrained("vennify/t5-base-grammar-correction") def correct_text(text, max_length, min_length, max_new_tokens, num_beams, temperature, top_p): inputs = tokenizer.encode("grammar: " + text, return_tensors="pt") if max_new_tokens > 0: outputs = model.generate( inputs, max_length=max_length, max_new_tokens=max_new_tokens, min_length=min_length, num_beams=num_beams, temperature=temperature, top_p=top_p, early_stopping=True ) else: outputs = model.generate( inputs, max_length=max_length, min_length=min_length, num_beams=num_beams, temperature=temperature, top_p=top_p, early_stopping=True ) corrected_text = tokenizer.decode(outputs[0], skip_special_tokens=True) return corrected_text def respond(prompt, max_length, min_length, max_new_tokens, num_beams, temperature, top_p): # Your response generation logic here #response = correct_text(message, max_length, max_new_tokens, min_length, num_beams, temperature, top_p) #yield response #return f"System message: {system_message}, Max Length: {max_length}, Min Length: {min_length}, Max new tokens: {max_new_tokens}, Num Beams: {num_beams}, Temperature: {temperature}, Top-p: {top_p}" #response = correct_text(prompt, max_length, max_new_tokens, min_length, num_beams, temperature, top_p) return prompt # Create the Gradio interface with gr.Blocks() as demo: gr.Markdown( """ # Grammar Correction App """) prompt_box = gr.Textbox(lines=2, placeholder="Enter your prompt here...") output_box = gr.Textbox() submitBtn = gr.Button("Submit") with gr.Accordion("Generation Parameters:", open=False): max_length = gr.Slider(minimum=1, maximum=256, value=80, step=1, label="Max Length") min_length = gr.Slider(minimum=1, maximum=256, value=0, step=1, label="Min Length") max_tokens = gr.Slider(minimum=0, maximum=256, value=0, step=1, label="Max new tokens") num_beams = gr.Slider(minimum=1, maximum=10, value=5, step=1, label="Num Beams") temperature = gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature") top_p = gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p (nucleus sampling)") show_top_p = gr.Checkbox(value=True, label="Show Top-p Slider") top_p_slider = gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p (nucleus sampling)", visible=True) show_top_p.change(lambda show: gr.update(visible=show), show_top_p, top_p_slider) submitBtn.click(correct_text, [prompt_box, max_length, min_length, max_tokens, num_beams, temperature, top_p], output_box) demo.launch()