File size: 2,125 Bytes
2aceb71 e820a8a 2aceb71 b720e58 2aceb71 b720e58 2aceb71 b720e58 e820a8a b720e58 2aceb71 b720e58 e820a8a b720e58 2aceb71 b720e58 e820a8a fb490b5 2aceb71 | 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 | from openai import OpenAI # نستخدم نفس المكتبة!
from utils import setup_logger
from config import Config
logger = setup_logger('response_generator')
class ResponseGenerator:
def __init__(self):
logger.info("Response generator initialized (Groq Llama-3 mode)")
if not Config.GROQ_API_KEY:
logger.error("GROQ_API_KEY is missing.")
self.client = None
else:
# هنا السحر: نوجه العميل إلى رابط Groq
self.client = OpenAI(
api_key=Config.GROQ_API_KEY,
base_url="https://api.groq.com/openai/v1"
)
def generate_response(self, query, relevant_docs):
if len(relevant_docs) == 0:
return "عذرًا، لم أجد أي معلومات ذات صلة في المستندات."
if not self.client:
return "عذرًا، لم يتم إعداد مفتاح API."
try:
context_text = "\n\n".join(relevant_docs['content'].tolist())
system_instruction = (
"أنت مساعد ذكي تتحدث العربية بطلاقة. مهمتك الإجابة بدقة بناءً على السياق فقط."
"إذا لم تجد الإجابة في السياق، قل 'لا تتوفر معلومات'."
"اجعل إجابتك رسمية، قصيرة، ومباشرة."
)
user_message = f"السياق:\n{context_text}\n\nالسؤال: {query}"
response = self.client.chat.completions.create(
model=Config.LLM_MODEL,
messages=[
{"role": "system", "content": system_instruction},
{"role": "user", "content": user_message}
],
temperature=0.3,
max_tokens=300
)
return response.choices[0].message.content.strip()
except Exception as e:
logger.error(f"Error generating response: {e}")
return "عذرًا، حدث خطأ أثناء المعالجة."
|