Spaces:
Sleeping
Sleeping
from transformers import AutoTokenizer, T5ForConditionalGeneration | |
import torch | |
import gradio as gr | |
# Загрузка модели и токенизатора | |
tokenizer = AutoTokenizer.from_pretrained("cointegrated/rut5-base-multitask") | |
model = T5ForConditionalGeneration.from_pretrained("cointegrated/rut5-base-multitask") | |
# Функция генерации мета-тегов | |
# Формируем чёткий и понятный промт | |
prompt = """ | |
Описание товара: | |
{description} | |
Задача: создать SEO мета-теги для этого товара. | |
Формат вывода: | |
{"title": "SEO заголовок до 60 символов", "description": "SEO описание до 160 символов"} | |
""".format(description=description) | |
inputs = tokenizer(prompt, return_tensors="pt") | |
with torch.no_grad(): | |
outputs = model.generate( | |
**inputs, | |
max_new_tokens=200, | |
pad_token_id=tokenizer.eos_token_id, | |
eos_token_id=tokenizer.eos_token_id, | |
do_sample=True, | |
temperature=0.7 | |
) | |
generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True).strip() | |
# Проверяем, является ли вывод JSON | |
if generated_text.startswith("{") and generated_text.endswith("}"): | |
# Если JSON валидный — возвращаем как есть | |
return generated_text.replace('\n', ' ').replace('“', '"').replace('”', '"') | |
else: | |
# Если не получилось — формируем безопасный вариант | |
title = description[:60] # Берём начало описания как title | |
description_short = description[:160] | |
return '{"title": "%s", "description": "%s"}' % ( | |
title.replace('"', "").replace("\\", ""), | |
description_short.replace('"', "").replace("\\", "") | |
) | |
# Интерфейс Gradio | |
demo = gr.Interface( | |
fn=generate_meta_tags, | |
inputs=gr.Textbox(label="Введите описание товара", lines=10), | |
outputs=gr.Textbox(label="Сгенерированные мета-теги"), | |
title="SEO Meta Tag Generator", | |
description="Генерация мета-тегов на основе описания товара" | |
) | |
if __name__ == "__main__": | |
demo.launch() |