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 "عذراً، لم أجد جواباً دقيقاً على سؤالك حالياً."
|