Spaces:
Sleeping
Sleeping
| 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() | |