Spaces:
Sleeping
Sleeping
import gradio as gr | |
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM | |
# Using a robust and stable model for the free tier | |
MODEL = "google/flan-t5-large" | |
tokenizer = AutoTokenizer.from_pretrained(MODEL) | |
model = AutoModelForSeq2SeqLM.from_pretrained(MODEL) | |
def generate_content(topic, lang_choice, content_type): | |
# Language selection based on user input | |
if lang_choice == "Arabic": | |
if content_type == "YouTube Script": | |
prompt = f"اكتب سكربت يوتيوب احترافي باللغة العربية عن: {topic}. اجعله دقيقة واحدة مع مقدمة جذابة ونقاط أساسية وخاتمة." | |
elif content_type == "YouTube Title": | |
prompt = f"أنشئ عنوان يوتيوب جذاب قصير لا يتجاوز 60 حرفاً عن: {topic}." | |
elif content_type == "Description + SEO": | |
prompt = f"اكتب وصف يوتيوب مُحسَّن للسيو عن: {topic} مع هاشتاغات مقترحة." | |
else: # LinkedIn Post | |
prompt = f"اكتب منشور لينكدإن احترافي قصير بالعربية عن: {topic}." | |
else: # English | |
if content_type == "YouTube Script": | |
prompt = f"Write a professional YouTube script in English about: {topic}. Make it one minute long with an engaging intro, key points, and a conclusion." | |
elif content_type == "YouTube Title": | |
prompt = f"Create a catchy YouTube title in English, under 60 characters, about: {topic}." | |
elif content_type == "Description + SEO": | |
prompt = f"Write an SEO-friendly YouTube description about: {topic} with suggested hashtags." | |
else: # LinkedIn Post | |
prompt = f"Write a professional LinkedIn post in English about: {topic}." | |
# Using try-except block to handle potential model errors | |
try: | |
inputs = tokenizer(prompt, return_tensors="pt") | |
outs = model.generate(**inputs, max_length=300) | |
return tokenizer.decode(outs[0], skip_special_tokens=True) | |
except Exception as e: | |
return f"حدث خطأ: {str(e)}. حاول مرة أخرى أو غيّر الموضوع." | |
iface = gr.Interface( | |
fn=generate_content, | |
inputs=[ | |
gr.Textbox(label="Topic"), | |
gr.Radio(["Arabic", "English"], label="Language"), | |
gr.Radio(["YouTube Script", "YouTube Title", "Description + SEO", "LinkedIn Post"], label="Content Type") | |
], | |
outputs=gr.Textbox(label="Result") | |
) | |
if __name__ == "__main__": | |
iface.launch() |