File size: 2,485 Bytes
bc818eb
 
ecf3e9f
bc818eb
ecf3e9f
 
729a565
bc818eb
 
ef3b7ef
bc818eb
 
ef3b7ef
bc818eb
ef3b7ef
 
 
1dedcc8
ef3b7ef
1dedcc8
ef3b7ef
 
 
 
1dedcc8
 
bc818eb
 
 
 
 
 
 
 
3d40167
bc818eb
 
 
 
 
 
 
 
 
 
 
1dedcc8
 
 
 
 
 
bc818eb
ef3b7ef
1dedcc8
bc818eb
 
1dedcc8
bc818eb
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import os
import gradio as gr
from mistralai.client import MistralClient


client = MistralClient(api_key="TZ9qwh6BF0k3X1LSNUEvV35Twd6zdxen")
model_name = "open-mistral-nemo"


def generate_question(text):

    prompt = f"""
بصفتك خبيراً في صياغة المناهج والتعلم النشط، حلل النص المرفق وصغ لي "سؤالاً جوهرياً واحداً" (Essential Question) يكون هو المدخل لعملية التسميع والربط الذهني. عند صياغة السؤال، التزم بالقواعد الصارمة التالية:

وحدة الموضوع (Integrative Synthesis): لا تسأل عن تفاصيل مبعثرة، بل ابحث عن "الخيط الرفيع" الذي يربط كل أجزاء النص وصغ سؤالاً يجمعها في إطار واحد.

الربط بين العلة والنتيجة (Mechanism & Outcome): ركز على "لماذا وكيف" يؤدي التركيب أو السبب المذكور في النص إلى النتيجة أو الظاهرة الموصوفة.

تنشيط التفكير التحليلي: تجنب أسئلة (ماذا، عدد، اذكر). ابدأ السؤال بكلمات مثل: (كيف يفسر...؟، ما العلاقة الديناميكية بين...؟، كيف يتدرج...؟)، بحيث يضطر عقلي لتركيب الإجابة لا سردها.

الشمولية الاستراتيجية: يجب أن تكون الإجابة المثالية على هذا السؤال كفيلة بتغطية 80% إلى 90% من المعلومات الرئيسية الواردة في النص.

إليك النص الذي سأقوم بتسميعه:
{text}

السؤال:
"""

    try:
        response = client.chat.complete(
            model=model_name,
            messages=[
                {"role": "user", "content": prompt}
            ],
            temperature=0.3
        )

        return response.choices[0].message.content

    except Exception as e:
        return f"حدث خطأ: {e}"


# Gradio UI
demo = gr.Interface(
    fn=generate_question,
    inputs=[
        gr.Textbox(
            lines=10,
            label="الفقرة"
        )
    ],
    outputs=gr.Textbox(
        lines=14,
        label="السؤال المولد"
    ),
    title="مولد الأسئلة العربية باستخدام Mistral Nemo",
    description="أدخل عنوان الدرس والفقرة وسيتم توليد سؤال شامل."
)

demo.launch()