damn-generator / app.py
jesthy's picture
Update app.py
1680f2d verified
import gradio as gr
from transformers import pipeline
# Используем лёгкую инструктивную модель
generator = pipeline(
"text-generation",
model="AlexWortega/instruct_rugptSmall",
device=0, # GPU, если доступен
torch_dtype="auto"
)
# Стили постов
styles = {
"Дружелюбно": "в дружелюбном стиле",
"Дерзко": "в дерзком стиле",
"По‑мотивирующим": "в мотивационном стиле",
"С юмором": "с юмором",
"Философски": "в философском стиле"
}
def clean_text(text):
sentence = text.strip().split(".")[0] + "."
return sentence.replace("\n", " ").strip()
def generate_post(topic, style):
style_text = styles.get(style, "")
prompt = (
"Ты — SMM‑копирайтер. "
f"Тема: '{topic}'. Стиль: {style_text}. "
"Сгенерируй один короткий пост, наполненный эмоцией или мыслью, "
"без советов, инструкций или рекомендаций."
)
results = generator(
prompt,
max_new_tokens=80,
do_sample=True,
temperature=0.4,
top_p=0.9,
num_return_sequences=1
)
raw = results[0]["generated_text"]
post = raw[len(prompt):]
return f"🔹 {clean_text(post)}"
# Интерфейс Gradio
with gr.Blocks() as demo:
gr.Markdown("## ✍️ Генератор коротких постов")
gr.Markdown("Введите тему и выберите стиль — получите эмоциональный пост.")
topic_input = gr.Textbox(label="Тема поста", placeholder="Например: утренняя мотивация")
style_input = gr.Dropdown(label="Стиль", choices=list(styles.keys()), value="Дружелюбно")
output = gr.Textbox(label="Результат")
btn = gr.Button("Сгенерировать")
btn.click(generate_post, inputs=[topic_input, style_input], outputs=output)
demo.launch()