|
|
import os |
|
|
import gradio as gr |
|
|
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline |
|
|
from huggingface_hub import snapshot_download |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MODEL_ID = "gokaygokay/prompt-enhancer-gemma-3-270m-it" |
|
|
print(f"📦 Downloading model {MODEL_ID} ...") |
|
|
model_path = snapshot_download(repo_id=MODEL_ID) |
|
|
print(f"✅ Model downloaded to: {model_path}") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tokenizer = AutoTokenizer.from_pretrained(model_path) |
|
|
model = AutoModelForCausalLM.from_pretrained(model_path) |
|
|
pipe = pipeline("text-generation", model=model, tokenizer=tokenizer) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def enhance_prompt(prompt: str): |
|
|
"""Enhance and expand a user prompt with more details and context.""" |
|
|
if not prompt.strip(): |
|
|
return "⚠️ Please enter a prompt to enhance." |
|
|
|
|
|
messages = [ |
|
|
{"role": "system", "content": "Enhance and expand the following prompt with more details and context:"}, |
|
|
{"role": "user", "content": prompt.strip()}, |
|
|
] |
|
|
|
|
|
chat_input = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True) |
|
|
output = pipe(chat_input, max_new_tokens=256, do_sample=True, temperature=0.8) |
|
|
result = output[0]["generated_text"] |
|
|
return result.strip() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
with gr.Blocks(theme=gr.themes.Soft(), title="Prompt Enhancer ✨") as demo: |
|
|
gr.Markdown( |
|
|
""" |
|
|
# ✨ Prompt Enhancer — Gemma 3 270M IT |
|
|
Give your idea a creative boost! |
|
|
Enter a simple prompt, and this app will enhance it with vivid detail and context. |
|
|
""" |
|
|
) |
|
|
|
|
|
with gr.Row(): |
|
|
with gr.Column(scale=1): |
|
|
input_text = gr.Textbox( |
|
|
label="Enter your prompt", |
|
|
placeholder="e.g. a cat sitting on a chair", |
|
|
lines=4, |
|
|
) |
|
|
enhance_button = gr.Button("🚀 Enhance Prompt", variant="primary") |
|
|
with gr.Column(scale=1): |
|
|
output_text = gr.Textbox( |
|
|
label="Enhanced Prompt", |
|
|
placeholder="Your enhanced prompt will appear here...", |
|
|
lines=8, |
|
|
) |
|
|
|
|
|
enhance_button.click(enhance_prompt, inputs=input_text, outputs=output_text) |
|
|
|
|
|
gr.Markdown( |
|
|
""" |
|
|
--- |
|
|
🧠 **Try these examples:** |
|
|
- “a futuristic city at sunset” |
|
|
- “a woman reading under a tree” |
|
|
- “a magical forest with glowing mushrooms” |
|
|
""" |
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
demo.launch() |
|
|
|