Jibay_1 / index.php
JibayAi's picture
Upload index.php
27e7f5f verified
<?php
header('Content-Type: application/json; charset=utf-8');
$text = isset($_GET['text']) ? trim($_GET['text']) : '';
if ($text === '') {
echo json_encode(["error" => "Text parameter not provided."], JSON_UNESCAPED_UNICODE);
exit;
}
$tokenizerPath = 'tokenizer.json';
if (!file_exists($tokenizerPath)) {
echo json_encode(["error" => "tokenizer.json file not found."], JSON_UNESCAPED_UNICODE);
exit;
}
$tokenizer = json_decode(file_get_contents($tokenizerPath), true);
if (!$tokenizer) {
echo json_encode(["error" => "Error reading tokenizer.json."], JSON_UNESCAPED_UNICODE);
exit;
}
$allChars = $tokenizer['letters'] ?? [];
if (isset($tokenizer['additional_characters'])) {
foreach ($tokenizer['additional_characters'] as $set) {
if (is_array($set)) {
$allChars = array_merge($allChars, $set);
}
}
}
$valid = false;
foreach ($allChars as $ch) {
if (mb_strpos($text, $ch) !== false) {
$valid = true;
break;
}
}
if (!$valid) {
echo json_encode(["error" => "Text does not contain any valid letters or characters."], JSON_UNESCAPED_UNICODE);
exit;
}
$models = [];
for ($i = 1; $i <= 8; $i++) {
$pathJson = "model-jibay1-000{$i}.json";
$pathJsonl = "model-jibay1-000{$i}.jsonl";
if (file_exists($pathJson)) $models[] = $pathJson;
elseif (file_exists($pathJsonl)) $models[] = $pathJsonl;
}
if (empty($models)) {
echo json_encode(["error" => "No model files found."], JSON_UNESCAPED_UNICODE);
exit;
}
function similarity($a, $b) {
similar_text($a, $b, $percent);
return $percent;
}
$englishGreetings = [
"Dear", "Bro", "Your answer", "Friend", "My flower", "My good friend", "My dear", "Respected user",
"Valued companion", "My brother", "My lovely sister", "Sir", "My lord", "Good boy", "My queen", "Sweetheart",
"Cool friend", "My sympathizer", "Old friend", "Dear friend", "Dad's flower", "Dear soul", "Champion", "Smart one",
"Master", "My intelligent", "Good colleague", "Lovely", "Smart", "Noble one", "My dear companion",
"Hero", "Intelligent one", "Good-natured flower", "Specially smart", "Smart friend", "Genius", "Your intelligence",
"Flower friend", "Little smart", "Cute smart", "My smart one", "Special intelligence", "Kind smart", "Real smart",
"Awesome smart", "Special smart", "Professional smart", "Golden smart", "Smartest", "My dear smart",
"Amazingly smart", "Lovable smart", "Flower smart", "Genius smart", "Kind smart",
"Amazing smart", "Legendary smart", "Charming smart", "Beautiful smart", "My special smart", "Cute smart",
"Cool smart", "Excellent smart", "Unique smart", "Creative smart", "Sharp-eyed smart", "Sweet smart",
"Strong smart", "Civilized smart", "Understanding smart", "Logical smart", "Professional smart", "Fantastic smart",
"My flower smart", "Pleasant smart", "Well-mannered smart", "Cool smart", "First-class smart", "Skilled smart",
"Respected smart", "Cute smart", "Sweet smart", "Dear smart", "Special smart", "Beloved smart",
"Beautiful smart", "Strong-hearted smart", "Polite smart", "Heartfelt smart", "My professional smart"
];
$englishFarewells = [
"If you have any questions, ask 😊", "I'm at your service 🌹", "If you have a question, ask my dear 🙌", "Always at your service ❤️",
"Ready for your next question 😉", "If you need any other help, let me know 🌷", "If you have another question, I'm here 😎",
"If something was unclear, ask 😌", "Proudly at your service 💪", "Ask again, friend 🧠",
"Waiting for your next question 📘", "If the answer wasn't enough, let me know 👂", "I'm always ready 🔥",
"At the service of my dear student 🎓", "My good friend, ask again 🤝", "Whenever you want, ask 💬",
"I'm ready 🌈", "Ask again 🌟", "Need help? I'm here 🧩", "Your questions are excellent 💎",
"Serving Iranian intelligence 🇮🇷", "Come visit again 😊", "Until next question 👋", "Always here to help 💡",
"Happy to answer 🌸", "Next question please 😄", "If you want to continue 🚀",
"Serving science 💫", "Hope to see you again 📚", "Waiting for the next question 🌼",
"At your service 🌹", "Your questions help growth 🌱", "Continue, you're doing great 💪",
"Write again 🌻", "At your service 🙏", "Excellent question 👏", "Next question is ready 🔔",
"Serving your learning 📖", "Ask again so we can learn 🌟", "You asked excellently 🌸",
"Always at your service ❤️", "Ask again, professor 👨‍🏫", "Happy to answer with pleasure 😍",
"Always ready to answer 🌙", "Serving the knowledgeable 💎", "Continue to become stronger 💪",
"Ask again, dear 🌼", "Serving the love of knowledge ❤️", "Ready to help anytime 🌟"
];
$persianGreetings = [
"عزیزم", "داداش", "جواب شما", "رفیق", "گل من", "دوست خوبم", "عزیز دلم", "کاربر محترم",
"همراه گرامی", "برادر من", "خواهر گلم", "جناب", "سرورم", "گل پسر", "ملکه من", "عزیز دل",
"رفیق باصفا", "همدل من", "یار قدیمی", "دوست نازنین", "گل بابا", "عزیز جان", "پهلوان", "باهوش",
"استاد", "باهوش من", "همکار خوبم", "دوست داشتنی", "باهوش", "بزرگوار", "هم‌راه عزیزم",
"قهرمان", "باهوشی", "گل خوش‌اخلاق", "باهوشی خاص", "رفیق باهوش", "نابغه", "باهوشی تو",
"دوست گل", "باهوش کوچولو", "باهوش ناز", "باهوش منی", "باهوشی خاص", "باهوش مهربون", "باهوش واقعی",
"باهوش خفن", "باهوش خاص", "باهوش حرفه‌ای", "باهوش طلایی", "باهوش ترین", "باهوش عزیزم",
"باهوش فوق‌العاده", "باهوش دوست‌داشتنی", "باهوش گل", "باهوش نابغه", "باهوش مهربان",
"باهوش شگفت‌انگیز", "باهوش افسانه‌ای", "باهوش دلبر", "باهوش قشنگ", "باهوش خاصم", "باهوش بانمک",
"باهوش باحال", "باهوش عالی", "باهوش بی‌نظیر", "باهوش خوش‌فکر", "باهوش تیزبین", "باهوش نازنین",
"باهوش قوی", "باهوش متمدن", "باهوش فهیم", "باهوش منطقی", "باهوش حرفه‌ای", "باهوش معرکه",
"باهوش گل من", "باهوش دلپذیر", "باهوش بامرام", "باهوش باصفا", "باهوش درجه یک", "باهوش کاربلد",
"باهوش محترم", "باهوش بانمک", "باهوش شیرین", "باهوش جان", "باهوش خاصی", "باهوش دلبند",
"باهوش قشنگ", "باهوش قوی‌دل", "باهوش مودب", "باهوش اهل دل", "باهوش حرفه‌ای من"
];
$persianFarewells = [
"اگر سوالی بود بپرس 😊", "در خدمتت هستم 🌹", "سوالی بود بپرس عزیزم 🙌", "درخدمتم همیشه ❤️",
"آماده سوال بعدی‌ام 😉", "اگه کمک دیگه‌ای خواستی بگو 🌷", "بازم سوال داشتی من اینجام 😎",
"اگه چیزی مبهم بود بپرس 😌", "با افتخار در خدمتتم 💪", "بازم بپرس رفیق 🧠",
"منتظر سوال بعدی‌ات هستم 📘", "اگه جواب کافی نبود، بگو 👂", "همیشه آماده‌ام 🔥",
"در خدمت دانشجوی عزیزم 🎓", "دوست خوبم، باز هم بپرس 🤝", "هر وقت خواستی بپرس 💬",
"من آماده‌ام 🌈", "بازم بپرس 🌟", "کمک می‌خوای؟ من هستم 🧩", "سوالاتت عالی‌ان 💎",
"در خدمت هوش ایرانی 🇮🇷", "بازم بیا سر بزن 😊", "تا سوال بعدی 👋", "همیشه اینجام برای کمک 💡",
"با لذت جواب میدم 🌸", "سوال بعدی لطفاً 😄", "اگه خواستی ادامه بده 🚀",
"در خدمت علم 💫", "به امید دیدار دوباره 📚", "منتظر سوال بعدی 🌼",
"در خدمت شما 🌹", "پرسش‌هات باعث رشد میشه 🌱", "ادامه بده، خوب پیش میری 💪",
"بازم بنویس 🌻", "درخدمت شما هستم 🙏", "پرسش عالی بود 👏", "سوال بعدی آماده‌ست 🔔",
"در خدمت یادگیری تو 📖", "باز هم بپرس تا یاد بگیریم 🌟", "عالی پرسیدی 🌸",
"درخدمت تو همیشه ❤️", "بازم بپرس استاد 👨‍🏫", "با کمال میل پاسخ میدم 😍",
"همیشه آماده پاسخ دادن 🌙", "در خدمت اهل دانایی 💎", "ادامه بده تا قوی‌تر شی 💪",
"بازم سوال کن عزیز 🌼", "در خدمت عشق به دانش ❤️", "هر لحظه آماده کمکم 🌟"
];
$isEnglish = preg_match('/[a-zA-Z]/', $text);
$greetings = $isEnglish ? $englishGreetings : $persianGreetings;
$farewells = $isEnglish ? $englishFarewells : $persianFarewells;
$bestMatch = null;
$bestScore = 0;
foreach ($models as $file) {
$ext = pathinfo($file, PATHINFO_EXTENSION);
$content = file_get_contents($file);
if (!$content) continue;
if ($ext === 'jsonl') {
$lines = explode("\n", trim($content));
foreach ($lines as $line) {
$data = json_decode($line, true);
if (!$data) continue;
$q = $data['question'] ?? $data['user'] ?? '';
$a = $data['answer'] ?? $data['assistant'] ?? '';
if (is_array($a)) $a = implode(' | ', $a);
$score = similarity($text, $q);
if ($score > $bestScore && $score >= 80) {
$bestScore = $score;
$bestMatch = ["question" => $q, "answer" => $a];
}
}
} else {
$json = json_decode($content, true);
if (!$json) continue;
if (isset($json[0]['user'])) {
foreach ($json as $item) {
$q = $item['user'] ?? '';
$a = $item['assistant'] ?? '';
$score = similarity($text, $q);
if ($score > $bestScore && $score >= 80) {
$bestScore = $score;
$bestMatch = ["question" => $q, "answer" => $a];
}
}
}
elseif (isset($json['data'][0]['paragraphs'][0]['qas'])) {
foreach ($json['data'] as $block) {
foreach ($block['paragraphs'] as $p) {
foreach ($p['qas'] as $qa) {
$q = $qa['question'] ?? '';
$answers = [];
foreach ($qa['answers'] ?? [] as $ans) {
if (isset($ans['text'])) $answers[] = $ans['text'];
}
$a = implode(' | ', $answers);
$score = similarity($text, $q);
if ($score > $bestScore && $score >= 80) {
$bestScore = $score;
$bestMatch = ["question" => $q, "answer" => $a];
}
}
}
}
}
elseif (isset($json['data'][0]['questions'])) {
foreach ($json['data'] as $block) {
foreach ($block['questions'] as $qitem) {
$q = $qitem['input_text'] ?? '';
$matchAnswer = '';
foreach ($block['answers'] as $ans) {
if (($ans['turn_id'] ?? null) === ($qitem['turn_id'] ?? null)) {
$matchAnswer = $ans['input_text'] ?? ($ans['span_text'] ?? '');
break;
}
}
$score = similarity($text, $q);
if ($score > $bestScore && $score >= 80) {
$bestScore = $score;
$bestMatch = ["question" => $q, "answer" => $matchAnswer];
}
}
}
}
}
}
if ($bestMatch) {
$greet = $greetings[array_rand($greetings)];
$farewell = $farewells[array_rand($farewells)];
$finalAnswer = trim("{$greet}، {$bestMatch['answer']} {$farewell}");
echo json_encode([
[
"thinking" => "Well, the user said '{$text}'. I should try to review, collect, analyze and present the best information to the user, the best answer is ('{$finalAnswer}').",
"question" => $bestMatch['question'],
"answer" => $finalAnswer
]
], JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
} else {
echo json_encode(["message" => "No suitable answer found."], JSON_UNESCAPED_UNICODE);
}
?>