"لم أفهم ذلك. هل يمكنك التكرار؟"]); exit; } try { // 1. Fetch Knowledge Base (FAQs) $stmt = db()->query("SELECT keywords, answer FROM faqs"); $faqs = $stmt->fetchAll(PDO::FETCH_ASSOC); $knowledgeBase = "إليك قاعدة المعرفة لهذا الموقع:\n\n"; foreach ($faqs as $faq) { $knowledgeBase .= "س: " . $faq['keywords'] . "\nج: " . $faq['answer'] . "\n---\n"; } // 2. Construct Prompt for AI $systemPrompt = "أنت مساعد ذكاء اصطناعي مفيد وودود لهذا الموقع. " . "استخدم قاعدة المعرفة المقدمة للإجابة على أسئلة المستخدمين بدقة. " . "إذا كانت الإجابة موجودة في قاعدة المعرفة، فقم بصياغتها بشكل طبيعي. " . "إذا لم تكن الإجابة في قاعدة المعرفة، فاستخدم معرفتك العامة للمساعدة، " . "ولكن اذكر بأدب أنك ليس لديك معلومات محددة حول ذلك إذا كان يبدو سؤالاً خاصاً بالموقع. " . "اجعل الإجابات موجزة واحترافية وباللغة العربية.\n\n" . $knowledgeBase; // 3. Call AI API $response = LocalAIApi::createResponse([ 'model' => 'gpt-4o-mini', 'input' => [ ['role' => 'system', 'content' => $systemPrompt], ['role' => 'user', 'content' => $message], ] ]); if (!empty($response['success'])) { $text = LocalAIApi::extractText($response); if ($text === '') { $decoded = LocalAIApi::decodeJsonFromResponse($response); $text = $decoded ? json_encode($decoded, JSON_UNESCAPED_UNICODE) : (string)($response['data'] ?? ''); } $aiReply = $text; // 4. Save to Database try { $stmt = db()->prepare("INSERT INTO messages (user_message, ai_response) VALUES (?, ?)"); $stmt->execute([$message, $aiReply]); } catch (Exception $e) { error_log("DB Save Error: " . $e->getMessage()); // Continue even if save fails, so the user still gets a reply } echo json_encode(['reply' => $aiReply]); } else { // Fallback if AI fails error_log("AI Error: " . ($response['error'] ?? 'Unknown')); echo json_encode(['reply' => "أواجه مشكلة في الاتصال بذكائي الآن. يرجى المحاولة مرة أخرى لاحقاً."]); } } catch (Exception $e) { error_log("Chat Error: " . $e->getMessage()); echo json_encode(['reply' => "حدث خطأ داخلي."]); }