Ahmed-Alghamdi commited on
Commit
fb490b5
·
verified ·
1 Parent(s): 8769d03

Update response_generator.py

Browse files
Files changed (1) hide show
  1. response_generator.py +32 -22
response_generator.py CHANGED
@@ -1,4 +1,5 @@
1
- import google.generativeai as genai
 
2
  from utils import setup_logger
3
  from config import Config
4
 
@@ -6,41 +7,50 @@ logger = setup_logger('response_generator')
6
 
7
  class ResponseGenerator:
8
  def __init__(self):
9
- logger.info("Response generator initialized (Google Gemini Flash mode)")
10
 
11
  if not Config.GOOGLE_API_KEY:
12
  logger.error("GOOGLE_API_KEY is missing.")
13
- self.model = None
14
  else:
15
- # إعداد مكتبة جوجل
16
- genai.configure(api_key=Config.GOOGLE_API_KEY)
17
- self.model = genai.GenerativeModel(Config.GENAI_MODEL)
18
 
19
  def generate_response(self, query, relevant_docs):
20
  if len(relevant_docs) == 0:
21
  return "عذرًا، لم أجد أي معلومات ذات صلة في المستندات."
22
 
23
- if not self.model:
24
  return "عذرًا، لم يتم إعداد مفتاح API الخاص بجوجل."
25
 
26
  try:
27
- # دمج النصوص المسترجعة
28
  context_text = "\n\n".join(relevant_docs['content'].tolist())
29
 
30
- # صياغة البرومبت (التعليمات)
31
- prompt = (
32
- f"أنت مساعد ذكي لطلاب السنة الأولى المشتركة. "
33
- f"استخدم المعلومات التالية للإجابة على سؤال الطالب بدقة ومباشرة.\n"
34
- f"معلومات من اللائحة:\n{context_text}\n\n"
35
- f"سؤال الطالب: {query}\n\n"
36
- f"الإجابة (تحدث بصيغة رسمية وودودة، وإذا لم تكن المعلومة موجودة قل لا أعلم):"
37
- )
38
-
39
- # إرسال الطلب
40
- response = self.model.generate_content(prompt)
41
-
42
- return response.text.strip()
 
 
 
 
 
 
 
 
 
43
 
44
  except Exception as e:
45
- logger.error(f"Error generating Gemini response: {e}")
46
  return "عذرًا، واجهت مشكلة أثناء صياغة الإجابة."
 
1
+ import requests
2
+ import json
3
  from utils import setup_logger
4
  from config import Config
5
 
 
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 "عذرًا، واجهت مشكلة أثناء صياغة الإجابة."