igea-pretrained / app.py
Detsutut's picture
Rename app2.py to app.py
5096654 verified
raw
history blame
No virus
2.43 kB
import gradio as gr
from ctransformers import AutoModelForCausalLM
from transformers import AutoTokenizer, pipeline
import torch
import re
# Initialize the model
model = AutoModelForCausalLM.from_pretrained("Detsutut/Igea-1B-v0.0.1-Q4_K_M-GGUF")
tokenizer = AutoTokenizer.from_pretrained( "Detsutut/Igea-350M-v0.0.1")
gen_pipeline = pipeline(
"text-generation",
model=model,
tokenizer=tokenizer
)
# Define the function to generate text
def generate_text(input_text, max_new_tokens, temperature, top_p, split_output):
if split_output:
max_new_tokens=30
top_p=0.95
output = gen_pipeline(
input_text,
max_new_tokens=max_new_tokens,
temperature=temperature,
top_p=top_p,
return_full_text = False
)
generated_text = output[0]['generated_text']
if split_output:
sentences = re.split('(?<!\w\.\w.)(?<![A-Z][a-z]\.)(?<=\.|\?)\s', generated_text)
if sentences:
generated_text = sentences[0]
return f"<span>{input_text}</span><b style='color: blue;'>{generated_text}</b>"
# Create the Gradio interface
input_text = gr.Textbox(lines=2, placeholder="Enter your text here...", label="Input Text")
max_new_tokens = gr.Slider(minimum=1, maximum=200, value=30, step=1, label="Max New Tokens")
temperature = gr.Slider(minimum=0.1, maximum=2.0, value=1.0, step=0.1, label="Temperature")
top_p = gr.Slider(minimum=0.0, maximum=1.0, value=0.95, step=0.01, label="Top-p")
split_output = gr.Checkbox(label="Quick single-sentence output", value=True)
with gr.Blocks(css="#outbox { border-radius: 8px !important; border: 1px solid #e5e7eb !important; padding: 8px !important; text-align:center !important;}") as iface:
gr.Markdown("# Igea Text Generation Interface ⚕️🩺")
gr.Markdown("⚠️ 🐢💬 This model runs on a **hardware-limited**, free-tier HuggingFace space, resulting in a **low output token throughput** (approx. 1 token/s)")
input_text.render()
with gr.Accordion("Advanced Options", open=False):
max_new_tokens.render()
temperature.render()
top_p.render()
split_output.render()
output = gr.HTML(label="Generated Text",elem_id="outbox")
btn = gr.Button("Generate")
btn.click(generate_text, [input_text, max_new_tokens, temperature, top_p, split_output], output)
# Launch the interface
if __name__ == "__main__":
iface.launch(inline=True)