File size: 1,990 Bytes
c15c04b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import openai
from config import OPENAI_API_KEY, SYSTEM_PROMPT, DEFAULT_MODEL

openai.api_key = OPENAI_API_KEY

class AIController:
    def __init__(self):
        self.memory = []
        self.system_prompt = SYSTEM_PROMPT

    def generate_response(self, user_input, language= "ar", model=DEFAULT_MODEL):
        messages = [{"role": "system", "content": self.system_prompt}]
        # إضافة الذاكرة السابقة
        messages += self.memory
        messages.append({"role": "user", "content": user_input})

        try:
            response = openai.ChatCompletion.create(
                model=model,
                messages=messages,
                temperature=0.7,
                max_tokens=150,
            )
            answer = response.choices[0].message['content'].strip()
            # تحديث الذاكرة
            self.memory.append({"role": "user", "content": user_input})
            self.memory.append({"role": "assistant", "content": answer})
            # خاصية تطوير الذات: تعلم من التفاعل
            self.self_improve(user_input, answer)
            return answer
        except Exception as e:
            # في حالة فشل، يبحث في مصدر خارجي (محاكاة هنا)
            external_answer = self.external_search(user_input)
            return external_answer

    def self_improve(self, user_input, answer):
        # مثال مبسط: تخزين معلومات جديدة وتحسين السياق
        if len(self.memory) > 20:
            self.memory = self.memory[-20:]  # حافظ على آخر 20 رسالة فقط
        # يمكن إضافة تعليمات تعلم أعمق هنا

    def external_search(self, query):
        # محاكاة بحث خارجي، يمكنك ربط API بحث حقيقي هنا
        # حالياً يعيد رسالة افتراضية
        return "عذراً، لم أجد جواباً دقيقاً على سؤالك حالياً."