Ahmed-Alghamdi commited on
Commit
2aceb71
·
verified ·
1 Parent(s): 605b2a2

Update response_generator.py

Browse files
Files changed (1) hide show
  1. response_generator.py +32 -35
response_generator.py CHANGED
@@ -1,5 +1,4 @@
1
- import requests
2
- import json
3
  from utils import setup_logger
4
  from config import Config
5
 
@@ -7,50 +6,48 @@ logger = setup_logger('response_generator')
7
 
8
  class ResponseGenerator:
9
  def __init__(self):
10
- logger.info("Response generator initialized (Google Direct REST API Mode)")
11
 
12
- if not Config.GOOGLE_API_KEY:
13
- logger.error("GOOGLE_API_KEY is missing.")
14
- self.api_key = None
15
  else:
16
- self.api_key = Config.GOOGLE_API_KEY
17
- # رابط الاتصال المباشر بجوجل
18
- self.api_url = f"https://generativelanguage.googleapis.com/v1beta/models/{Config.GENAI_MODEL}:generateContent?key={self.api_key}"
 
 
19
 
20
  def generate_response(self, query, relevant_docs):
21
  if len(relevant_docs) == 0:
22
  return "عذرًا، لم أجد أي معلومات ذات صلة في المستندات."
23
 
24
- if not self.api_key:
25
- return "عذرًا، لم يتم إعداد مفتاح API الخاص بجوجل."
26
 
27
  try:
28
- # تجهيز السياق
29
  context_text = "\n\n".join(relevant_docs['content'].tolist())
30
 
31
- # تجهيز الرسالة (JSON)
32
- payload = {
33
- "contents": [{
34
- "parts": [{
35
- "text": f"أنت مساعد لطلاب السنة الأولى المشتركة. جاوب بناء على السياق التالي:\n\n{context_text}\n\nالسؤال: {query}"
36
- }]
37
- }]
38
- }
39
-
40
- headers = {'Content-Type': 'application/json'}
41
-
42
- # إرسال الطلب مباشرة (POST request)
43
- response = requests.post(self.api_url, headers=headers, data=json.dumps(payload))
44
-
45
- # التحقق من نجاح الطلب
46
- if response.status_code == 200:
47
- result = response.json()
48
- # استخراج النص من رد جوجل
49
- return result['candidates'][0]['content']['parts'][0]['text']
50
- else:
51
- logger.error(f"Google API Error: {response.text}")
52
- return f"حدث خطأ في الاتصال بجوجل: {response.status_code}"
53
 
54
  except Exception as e:
55
  logger.error(f"Error generating response: {e}")
56
- return "عذرًا، واجهت مشكلة أثناء صياغة الإجابة."
 
1
+ from openai import OpenAI # نستخدم نفس المكتبة!
 
2
  from utils import setup_logger
3
  from config import Config
4
 
 
6
 
7
  class ResponseGenerator:
8
  def __init__(self):
9
+ logger.info("Response generator initialized (Groq Llama-3 mode)")
10
 
11
+ if not Config.GROQ_API_KEY:
12
+ logger.error("GROQ_API_KEY is missing.")
13
+ self.client = None
14
  else:
15
+ # هنا السحر: نوجه العميل إلى رابط Groq
16
+ self.client = OpenAI(
17
+ api_key=Config.GROQ_API_KEY,
18
+ base_url="https://api.groq.com/openai/v1"
19
+ )
20
 
21
  def generate_response(self, query, relevant_docs):
22
  if len(relevant_docs) == 0:
23
  return "عذرًا، لم أجد أي معلومات ذات صلة في المستندات."
24
 
25
+ if not self.client:
26
+ return "عذرًا، لم يتم إعداد مفتاح API."
27
 
28
  try:
 
29
  context_text = "\n\n".join(relevant_docs['content'].tolist())
30
 
31
+ system_instruction = (
32
+ "أنت مساعد ذكي تتحدث العربية بطلاقة. مهمتك الإجابة بدقة بناءً على السياق فقط."
33
+ "إذا لم تجد الإجابة في السياق، قل 'لا تتوفر معلومات'."
34
+ "اجعل إجابتك رسمية، قصيرة، ومباشرة."
35
+ )
36
+
37
+ user_message = f"السياق:\n{context_text}\n\nالسؤال: {query}"
38
+
39
+ response = self.client.chat.completions.create(
40
+ model=Config.LLM_MODEL,
41
+ messages=[
42
+ {"role": "system", "content": system_instruction},
43
+ {"role": "user", "content": user_message}
44
+ ],
45
+ temperature=0.3,
46
+ max_tokens=300
47
+ )
48
+
49
+ return response.choices[0].message.content.strip()
 
 
 
50
 
51
  except Exception as e:
52
  logger.error(f"Error generating response: {e}")
53
+ return "عذرًا، حدث خطأ أثناء المعالجة."