import gradio as gr from transformers import pipeline, set_seed set_seed(42) # 1️⃣ بوت محادثة بالعربية chat_model = pipeline("text-generation", model="akhooli/gpt2-small-arabic") def chat(history, user_message): conversation_text = "" for human, bot in history: conversation_text += f"👤: {human}\n🤖: {bot}\n" conversation_text += f"👤: {user_message}\n🤖:" response = chat_model(conversation_text, max_length=200, num_return_sequences=1, do_sample=True, top_p=0.9) bot_reply = response[0]["generated_text"].split("🤖:")[-1].strip() history.append((user_message, bot_reply)) return history, "" # 2️⃣ الترجمة (إنجليزي ↔ عربي) translator_en_ar = pipeline("translation_en_to_ar", model="Helsinki-NLP/opus-mt-en-ar") translator_ar_en = pipeline("translation_ar_to_en", model="Helsinki-NLP/opus-mt-ar-en") def translate_en_to_ar(text): return translator_en_ar(text)[0]['translation_text'] def translate_ar_to_en(text): return translator_ar_en(text)[0]['translation_text'] # 3️⃣ التلخيص summarizer = pipeline("summarization", model="facebook/bart-large-cnn") def summarize_text(text): summary = summarizer(text, max_length=150, min_length=30, do_sample=False) return summary[0]['summary_text'] # 4️⃣ سؤال وجواب qa = pipeline("question-answering", model="distilbert-base-multilingual-cased-distilled-squad") def ask_question(context, question): answer = qa(question=question, context=context) return answer["answer"] # 🌐 واجهة Gradio مع Tabs with gr.Blocks() as demo: gr.Markdown("# 🤖 المساعد العربي الخارق 🔥") gr.Markdown("👨‍💻 المطوّر: **حسين محمد**") with gr.Tab("💬 شات بوت"): chatbot_ui = gr.Chatbot() msg = gr.Textbox(label="✍️ اكتب رسالتك") clear = gr.Button("🗑️ مسح المحادثة") state = gr.State([]) msg.submit(chat, [state, msg], [chatbot_ui, msg]) clear.click(lambda: ([], ""), None, [chatbot_ui, msg]) with gr.Tab("🌍 ترجمة"): with gr.Row(): input_en = gr.Textbox(label="اكتب نص بالإنجليزية") output_ar = gr.Textbox(label="ترجمة إلى العربية") btn1 = gr.Button("ترجم EN ➝ AR") btn1.click(translate_en_to_ar, input_en, output_ar) with gr.Row(): input_ar = gr.Textbox(label="اكتب نص بالعربية") output_en = gr.Textbox(label="ترجمة إلى الإنجليزية") btn2 = gr.Button("ترجم AR ➝ EN") btn2.click(translate_ar_to_en, input_ar, output_en) with gr.Tab("📝 تلخيص"): text_input = gr.Textbox(label="الصق نص طويل هنا") text_output = gr.Textbox(label="الملخص") btn3 = gr.Button("لخّص النص") btn3.click(summarize_text, text_input, text_output) with gr.Tab("❓ سؤال وجواب"): context = gr.Textbox(label="النص أو المقال") question = gr.Textbox(label="اكتب سؤالك") answer = gr.Textbox(label="الإجابة") btn4 = gr.Button("أجب") btn4.click(ask_question, [context, question], answer) if __name__ == "__main__": demo.launch()