import gradio as gr from transformers import pipeline # تحميل نموذج التلخيص (facebook/bart-large-cnn) summarizer = pipeline("summarization", model="facebook/bart-large-cnn") # تحميل نموذج كتابة المقالات بالعربي (aragpt2-base) generator = pipeline("text-generation", model="aubmindlab/aragpt2-base") # دالة لتلخيص النص (بالإنجليزي حاليًا) def summarize_text(text): summary = summarizer(text, max_length=130, min_length=30, do_sample=False) return summary[0]["summary_text"] # دالة لكتابة مقال بالعربي مع تحسين التركيز def generate_article(prompt): # تعليمات مفصلة مع أمثلة واضحة full_prompt = ( f"اكتب مقالًا عن: {prompt}، مقسمًا إلى فقرات مع عناوين فرعية واضحة. " f"ابدأ بمقدمة تشرح أهمية الموضوع (مثال: 'الذكاء الاصطناعي فتح أبوابًا جديدة للربح من الإنترنت'). " f"ثم اكتب فقرة عن الطرق العملية (مثال: 'استخدام أدوات الذكاء الاصطناعي لإنشاء محتوى يدر دخلاً مثل كتابة المقالات أو تصميم الإعلانات'). " f"ثم فقرة عن النصائح (مثال: 'اختر أدوات ذكاء اصطناعي موثوقة مثل Grok أو ChatGPT وضع خطة واضحة للاستفادة منها'). " f"واختم بخاتمة تلخص الفائدة (مثال: 'الجمع بين التكنولوجيا والإبداع يضمن فرص ربح مستدامة'). " f"استخدم لغة واضحة وأمثلة عملية مرتبطة بالموضوع." ) article = generator(full_prompt, max_length=1000, num_return_sequences=1, do_sample=True, temperature=0.9, top_k=50) raw_text = article[0]["generated_text"].replace(full_prompt, "").strip() # تقسيم النص وتنسيقه sentences = [s.strip() for s in raw_text.split(".") if s.strip()] formatted_text = "### مقدمة\n" formatted_text += f"{sentences[0] if sentences else 'الذكاء الاصطناعي يقدم فرصًا لا حدود لها للربح.'}.\n\n" formatted_text += "### الطرق العملية\n" formatted_text += f"{'.'.join(sentences[1:5] if len(sentences) > 4 else sentences[1:] if len(sentences) > 1 else ['استخدم الذكاء الاصطناعي لإنشاء محتوى يدر دخلاً'])}.\n\n" formatted_text += "### نصائح للتطبيق\n" formatted_text += f"{'.'.join(sentences[5:9] if len(sentences) > 8 else sentences[5:] if len(sentences) > 5 else ['اختر أدوات موثوقة وخطط جيدًا'])}.\n\n" formatted_text += "### خاتمة\n" formatted_text += f"{'.'.join(sentences[9:] if len(sentences) > 9 else ['الجمع بين التكنولوجيا والإبداع يفتح آفاقًا جديدة'])}.\n" return formatted_text # واجهة Gradio with gr.Blocks(title="أداة كتابة المقالات وتلخيصها") as interface: gr.Markdown("## أداة كتابة المقالات وتلخيصها") with gr.Tab("تلخيص النصوص"): input_text = gr.Textbox(label="أدخل النص للتلخيص (بالإنجليزي حاليًا)", lines=5) output_text = gr.Textbox(label="الملخص", lines=3) gr.Button("تلخيص").click(summarize_text, inputs=input_text, outputs=output_text) with gr.Tab("كتابة مقال"): input_prompt = gr.Textbox(label="أدخل موضوع المقال (بالعربي)", lines=2) output_article = gr.Textbox(label="المقال المكتوب", lines=12) gr.Button("اكتب مقال").click(generate_article, inputs=input_prompt, outputs=output_article) interface.launch()