import json import os import shutil import requests import threading import time import gradio as gr from huggingface_hub import Repository, InferenceClient from utils import force_git_push HF_TOKEN = os.environ.get("HF_TOKEN", None) API_URL = os.environ.get("API_URL", None) DATASET_REPO_URL = os.getenv("DATASET_REPO_URL") MODEL_REPO_URL = os.getenv("MODEL_REPO_URL") FORCE_PUSH = os.getenv("FORCE_PUSH") BOT_NAME = "PersianGPT-FT" PUSH_FREQUENCY = 60 # every minute HISTORY = "" PROMPT = "" USERNAME = "" NAME = "" DATA_FILENAME = "data.jsonl" DATA_FILE = os.path.join("data", DATA_FILENAME) repo = Repository(local_dir="data", clone_from=DATASET_REPO_URL, use_auth_token=HF_TOKEN) model_repo = Repository(local_dir="model", clone_from=MODEL_REPO_URL, use_auth_token=HF_TOKEN, skip_lfs_files=True) MODEL_VERSION = model_repo.git_head_commit_url() prompt_dict = {"": 109892, "$غزل$": 41983, "#بیدل دهلوی#": 3343, "$غزل$#بیدل دهلوی#": 3339, "#حکیم نزاری قهستانی#": 1502, "$غزل$#حکیم نزاری قهستانی#": 1407, "#مولوی#": 7344, "$غزل$#مولوی#": 3247, "$قطعه$": 751, "#شاه نعمت‌الله ولی#": 2974, "$قطعه$#شاه نعمت‌الله ولی#": 134, "$رباعی$": 10455, "#قدسی مشهدی#": 1292, "$رباعی$#قدسی مشهدی#": 651, "#حافظ#": 612, "$غزل$#حافظ#": 495, "#هجویری#": 399, "$ترکیب$": 278, "#نصرالله منشی#": 487, "$ترکیب$#نصرالله منشی#": 7, "#صادق هدایت#": 28, "$رباعی$#صادق هدایت#": 1, "#محمدرضا شفیعی کدکنی#": 409, "#صائب تبریزی#": 13269, "$غزل$#صائب تبریزی#": 7472, "$قصاید$": 6622, "#فرخی سیستانی#": 663, "$قصاید$#فرخی سیستانی#": 510, "#امیرخسرو دهلوی#": 3490, "$غزل$#امیرخسرو دهلوی#": 3122, "#عطار#": 9080, "#فردوسی#": 1230, "$غزل$#عطار#": 871, "#اقبال لاهوری#": 2406, "#وحشی#": 771, "$غزل$#قدسی مشهدی#": 459, "#نادر نادرپور#": 541, "$ترکیب$#نادر نادرپور#": 2, "$مثنوی$": 1209, "$مثنوی$#امیرخسرو دهلوی#": 152, "#رودکی#": 820, "#جامی#": 1962, "$غزل$#شاه نعمت‌الله ولی#": 1564, "#جلال الدین محمد مولوی#": 789, "$غزل$#جلال الدین محمد مولوی#": 763, "#محتشم کاشانی#": 1402, "$غزل$#محتشم کاشانی#": 929, "#سلمان ساوجی#": 1350, "$غزل$#سلمان ساوجی#": 669, "#شهریار#": 355, "$غزل$#شهریار#": 302, "#فروغی بسطامی#": 864, "$غزل$#فروغی بسطامی#": 817, "#سیف فرغانی#": 1270, "$غزل$#سیف فرغانی#": 983, "#کمال‌الدین اسماعیل#": 1982, "$غزل$#کمال‌الدین اسماعیل#": 161, "#پروین اعتصامی#": 438, "$قصاید$#پروین اعتصامی#": 83, "$غزل$#وحشی#": 400, "#خاقانی#": 1713, "#ناصرخسرو قبادیانی#": 287, "$قصاید$#ناصرخسرو قبادیانی#": 281, "#باقر فداغی لارستانی#": 209, "#سهراب سپهری#": 265, "#کمال خجندی#": 1252, "$غزل$#کمال خجندی#": 1085, "#عنصری#": 659, "#سایه#": 499, "$غزل$#سایه#": 125, "#امیرمعزی#": 772, "$رباعی$#امیرمعزی#": 174, "#سنایی#": 2273, "$غزل$#سنایی#": 440, "#بهرام سالکی#": 158, "$غزل$#بهرام سالکی#": 24, "#خواجوی کرمانی#": 1306, "$غزل$#خواجوی کرمانی#": 1306, "#نظامی#": 707, "$رباعی$#مولوی#": 1986, "#اِ لیـــار (جبار محمدی )#": 453, "$رباعی$#اِ لیـــار (جبار محمدی )#": 263, "#انوری#": 1463, "$رباعی$#انوری#": 443, "#عطار نیشابوری#": 482, "$غزل$#عطار نیشابوری#": 418, "#ایرج میرزا#": 235, "#رشیدالدین وطواط#": 579, "$قصاید$#رشیدالدین وطواط#": 356, "$رباعی$#خاقانی#": 352, "#باباطاهر#": 783, "#فیض کاشانی#": 1524, "$غزل$#فیض کاشانی#": 1449, "#اوحدی#": 1511, "$غزل$#اوحدی#": 901, "#ملا هادی سبزواری#": 215, "$غزل$#ملا هادی سبزواری#": 186, "#رودکی سمرقندی#": 405, "$قصاید$#رودکی سمرقندی#": 124, "$غزل$#خاقانی#": 401, "$قصاید$#محتشم کاشانی#": 95, "#ملک‌الشعرای بهار#": 1509, "$غزل$#ملک‌الشعرای بهار#": 136, "#امام خمینی#": 338, "$غزل$#امام خمینی#": 149, "#اوحدی مراغه ای#": 519, "$غزل$#اوحدی مراغه ای#": 478, "#ابوسعید ابوالخیر#": 993, "$رباعی$#ابوسعید ابوالخیر#": 749, "#رشیدالدین میبدی#": 2605, "$رباعی$#کمال‌الدین اسماعیل#": 867, "#حافظ شیرازی#": 930, "$قطعه$#حافظ شیرازی#": 34, "#خاقانی شروانی#": 553, "$قصاید$#خاقانی شروانی#": 83, "$مثنوی$#پروین اعتصامی#": 347, "#هلالی جغتایی#": 403, "$غزل$#هلالی جغتایی#": 251, "$رباعی$#محتشم کاشانی#": 112, "$مثنوی$#بهرام سالکی#": 92, "#صادق سرمد#": 60, "#عرفی شیرازی#": 160, "$غزل$#عرفی شیرازی#": 134, "#سعدی شیرازی#": 967, "$غزل$#سعدی شیرازی#": 857, "#ناصرخسرو#": 480, "$قصاید$#ناصرخسرو#": 281, "$رباعی$#سنایی#": 421, "#سعدی#": 2672, "$غزل$#سعدی#": 703, "$رباعی$#سیف فرغانی#": 22, "#کامبیز صدیقی کسمایی#": 359, "#سلطان باهو#": 53, "$غزل$#سلطان باهو#": 53, "$قصاید$#رودکی#": 128, "#عمان سامانی#": 89, "$رباعی$#هلالی جغتایی#": 35, "$غزل$#رشیدالدین وطواط#": 45, "#خلیل‌الله خلیلی#": 53, "$رباعی$#خلیل‌الله خلیلی#": 53, "$قصاید$#سیف فرغانی#": 263, "#شیخ بهایی#": 342, "$قصاید$#خاقانی#": 233, "#ظهیر فاریابی#": 409, "$قصاید$#ظهیر فاریابی#": 80, "$غزل$#حافظ شیرازی#": 830, "$قصاید$#امیرمعزی#": 467, "#مسعود سعد سلمان#": 1145, "$قصاید$#مسعود سعد سلمان#": 484, "#عراقی#": 896, "$رباعی$#عراقی#": 189, "$غزل$#انوری#": 326, "#وحشی بافقی#": 346, "$غزل$#وحشی بافقی#": 215, "#سیاوش کسرایی#": 327, "#مهدی سهیلی#": 120, "#شیخ محمود شبستری#": 242, "$غزل$#عراقی#": 569, "$رباعی$#شاه نعمت‌الله ولی#": 322, "$رباعی$#شیخ بهایی#": 106, "$قصاید$#سنایی#": 408, "$مفردات$": 486, "$مفردات$#شاه نعمت‌الله ولی#": 283, "#مهدی اخوان ثالث#": 218, "#مهستی گنجوی#": 240, "$رباعی$#مهستی گنجوی#": 190, "#احمد شاملو#": 631, "#هاتف اصفهانی#": 495, "$غزل$#هاتف اصفهانی#": 198, "#حمید مصدق#": 237, "$قصاید$#عنصری#": 219, "#انوری ابیوردی#": 406, "$رباعی$#انوری ابیوردی#": 24, "$غزل$#انوری ابیوردی#": 248, "$غزل$#امیرمعزی#": 64, "#همام تبریزی#": 381, "$غزل$#همام تبریزی#": 219, "#ابن حسام خوسفی#": 406, "$غزل$#ابن حسام خوسفی#": 305, "$قصاید$#سلمان ساوجی#": 104, "#فریدون مشیری#": 536, "#سید حمیدرضا برقعی#": 28, "#صامت بروجردی#": 634, "$رباعی$#وحشی بافقی#": 24, "$رباعی$#همام تبریزی#": 99, "$رباعی$#ظهیر فاریابی#": 100, "#قاآنی#": 979, "#عبید زاکانی#": 479, "$ترکیب$#عبید زاکانی#": 5, "$رباعی$#رشیدالدین وطواط#": 36, "#سنایی غزنوی#": 399, "$غزل$#سنایی غزنوی#": 273, "$مثنوی$#شاه نعمت‌الله ولی#": 85, "#عرفی#": 697, "$رباعی$#عرفی#": 124, "#سیمین بهبهانی#": 441, "#فخرالدین اسعد گرگانی#": 274, "$غزل$#عرفی#": 571, "$غزل$#خاقانی شروانی#": 338, "#ملک الشعرای بهار#": 293, "$قصاید$#ملک الشعرای بهار#": 224, "#نظامی گنجوی#": 235, "#رهی معیری#": 357, "$غزل$#رهی معیری#": 197, "$غزل$#اقبال لاهوری#": 50, "#فروغ فرخزاد#": 244, "#خیام نیشابوری#": 72, "$رباعی$#خیام نیشابوری#": 72, "$مقطعات$": 985, "$مقطعات$#کمال خجندی#": 97, "$رباعی$#ابن حسام خوسفی#": 99, "#سعدالدین وراوینی#": 149, "$غزل$#مسعود سعد سلمان#": 34, "#داوود ملک‌زاده#": 87, "$رباعی$#داوود ملک‌زاده#": 84, "$مثنوی$#رودکی#": 90, "$مقطعات$#انوری#": 479, "$قصاید$#قاآنی#": 540, "$قصاید$#انوری ابیوردی#": 87, "$رباعی$#مسعود سعد سلمان#": 397, "$قصاید$#سنایی غزنوی#": 98, "$تصنیف$": 119, "$تصنیف$#سنایی#": 26, "$رباعی$#هاتف اصفهانی#": 60, "#شیون فومنی#": 186, "#عبدالقادر گیلانی#": 73, "$غزل$#عبدالقادر گیلانی#": 73, "#باباافضل کاشانی#": 236, "$رباعی$#باباافضل کاشانی#": 216, "$قصاید$#عراقی#": 40, "$رباعی$#عنصری#": 77, "$غزل$#عبید زاکانی#": 219, "#منوچهری#": 98, "$قصاید$#منوچهری#": 78, "#زرتشت#": 185, "$مثنوی$#مسعود سعد سلمان#": 23, "$قصاید$#هاتف اصفهانی#": 16, "$قصاید$#انوری#": 208, "#احمد پروین#": 167, "$غزل$#احمد پروین#": 128, "$قصاید$#ملک‌الشعرای بهار#": 310, "$مثنوی$#ایرج میرزا#": 37, "$غزل$#ایرج میرزا#": 19, "$مثنوی$#سعدی#": 46, "$ترکیب$#رشیدالدین میبدی#": 15, "$قصاید$#سعدی#": 85, "$قطعه$#حافظ#": 33, "$رباعی$#ملک‌الشعرای بهار#": 71, "$غزل$#صامت بروجردی#": 77, "#ازرقی هروی#": 182, "$قصاید$#ازرقی هروی#": 65, "$رباعی$#اوحدی#": 184, "$غزل$#شیخ بهایی#": 51, "$قطعه$#سلمان ساوجی#": 232, "$قصاید$#کمال‌الدین اسماعیل#": 192, "#رضی‌الدین آرتیمانی#": 234, "$غزل$#رضی‌الدین آرتیمانی#": 114, "#خیام#": 324, "$رباعی$#خیام#": 321, "#خواجه عبدالله انصاری#": 522, "#کارو#": 94, "#اشعار ترانه‌های سیاوش قمیشی#": 355, "$ترکیب$#محتشم کاشانی#": 16, "$رباعی$#رهی معیری#": 38, "$قطعه$#کمال‌الدین اسماعیل#": 10, "$رباعی$#سلمان ساوجی#": 145, "$رباعی$#امام خمینی#": 117, "$قصاید$#عبید زاکانی#": 62, "$غزل$#ظهیر فاریابی#": 10, "$رباعی$#رودکی#": 38, "$ترجیع$": 108, "$ترجیع$#خاقانی#": 7, "#وحدت کرمانشاهی#": 72, "$رباعی$#وحدت کرمانشاهی#": 8, "$مفردات$#سعدی#": 104, "#محمدحسن بارق شفیعی#": 94, "$قطعه$#فرخی سیستانی#": 12, "#نیما یوشیج#": 108, "$قطعه$#ایرج میرزا#": 88, "#اسدی توسی#": 286, "$مقطعات$#رشیدالدین وطواط#": 121, "$رباعی$#فروغی بسطامی#": 35, "$غزل$#جامی#": 14, "$مثنوی$#ملک‌الشعرای بهار#": 83, "$مقطعات$#مسعود سعد سلمان#": 140, "$رباعی$#رضی‌الدین آرتیمانی#": 100, "$غزل$#قاآنی#": 89, "$رباعی$#سعدی#": 202, "#شاطرعباس صبوحی#": 113, "$رباعی$#جلال الدین محمد مولوی#": 25, "$رباعی$#کمال خجندی#": 42, "$قصاید$#عطار#": 30, "$غزل$#وحدت کرمانشاهی#": 60, "#منوچهری دامغانی#": 97, "$قصاید$#منوچهری دامغانی#": 79, "$رباعی$#رودکی سمرقندی#": 25, "$رباعی$#ازرقی هروی#": 107, "$رباعی$#اوحدی مراغه ای#": 25, "$ترکیب$#مولوی#": 11, "#مولانا خالد نقشبندی#": 161, "$غزل$#مولانا خالد نقشبندی#": 58, "#خلیل الله خلیلی#": 31, "$رباعی$#خلیل الله خلیلی#": 31, "$تصنیف$#نادر نادرپور#": 1, "#فایز دشتستانی#": 222, "$قصاید$#اوحدی#": 42, "$مقطعات$#انوری ابیوردی#": 47, "$مقطعات$#عبید زاکانی#": 41, "$مقطعات$#شیخ بهایی#": 20, "$مفردات$#مولانا خالد نقشبندی#": 24, "$طنز$": 26, "$طنز$#مولوی#": 5, "$تضمین$": 36, "$تضمین$#فروغی بسطامی#": 11, "#آیت الله حسین نوری همدانی#": 156, "$ترکیب$#جامی#": 4, "#کسایی#": 219, "$قطعه$#هلالی جغتایی#": 10, "#عبدالواسع جبلی#": 13, "$قصاید$#عبدالواسع جبلی#": 13, "$قصاید$#شاه نعمت‌الله ولی#": 34, "$قصیده$": 156, "$قصیده$#سید حمیدرضا برقعی#": 1, "$معمیات$": 9, "$معمیات$#کمال خجندی#": 9, "$غزل$#اِ لیـــار (جبار محمدی )#": 132, "$قصیده$#مسعود سعد سلمان#": 2, "$ترجیع$#اوحدی#": 2, "$مثنوی$#قدسی مشهدی#": 34, "$قصاید$#وحشی#": 41, "$رباعی$#خاقانی شروانی#": 25, "$رباعی$#عرفی شیرازی#": 25, "$مثنوی$#محتشم کاشانی#": 22, "#کسایی مروزی#": 110, "$رباعی$#ملک الشعرای بهار#": 22, "$تضمین$#صادق سرمد#": 1, "$ترجیع$#مولوی#": 37, "$شعر نو$": 30, "$شعر نو$#اِ لیـــار (جبار محمدی )#": 9, "$قصیده$#احمد شاملو#": 6, "$رباعی$#فیض کاشانی#": 70, "$مثنوی$#اقبال لاهوری#": 2, "#محمدعلی بهمنی#": 44, "$غزل$#محمدعلی بهمنی#": 10, "$ترکیب$#نظامی گنجوی#": 5, "$مثنوی$#ظهیر فاریابی#": 2, "$مثنوی$#رودکی سمرقندی#": 38, "$ترجیع$#شاه نعمت‌الله ولی#": 4, "$ترکیب$#عراقی#": 4, "$تضمین$#صامت بروجردی#": 17, "$قصاید$#صائب تبریزی#": 45, "$غزل$#شیون فومنی#": 41, "$تصنیف$#همام تبریزی#": 1, "$مفردات$#همام تبریزی#": 46, "$قطعه$#رهی معیری#": 30, "$قصاید$#عطار نیشابوری#": 14, "$قصاید$#وحشی بافقی#": 11, "$رباعی$#حافظ#": 42, "$غزل$#نادر نادرپور#": 3, "$رباعی$#سعدی شیرازی#": 26, "$تصنیف$#سعدی#": 1, "$رباعی$#ناصرخسرو#": 4, "$رباعی$#مهدی اخوان ثالث#": 2, "$قصاید$#حافظ#": 3, "$غزل$#شاطرعباس صبوحی#": 81, "$قطعه$#رشیدالدین میبدی#": 28, "$مقطعات$#ازرقی هروی#": 8, "$مقطعات$#عراقی#": 12, "$ترکیب$#خاقانی#": 10, "$ترجیع$#سلمان ساوجی#": 3, "$رباعی$#عبید زاکانی#": 76, "$مسمطات$": 53, "$مسمطات$#منوچهری#": 9, "$تصنیف$#عطار#": 19, "$ترکیب$#سنایی#": 11, "#عبدالقهّار عاصی#": 113, "$رباعی$#عبدالقهّار عاصی#": 37, "$قطعه$#مولانا خالد نقشبندی#": 45, "$قصیده$#قاآنی#": 1, "#خسرو گلسرخی#": 106, "$قصیده$#ایرج میرزا#": 35, "$مثنوی$#مولوی#": 20, "$غزل$#سید حمیدرضا برقعی#": 10, "$قصیده$#سنایی#": 3, "$ترکیب$#قاآنی#": 14, "$ترکیب$#مسعود سعد سلمان#": 5, "$مثنوی$#عراقی#": 20, "$مثنوی$#سایه#": 9, "$مسمطات$#قاآنی#": 6, "$رباعی$#منوچهری دامغانی#": 7, "$ترجیع$#رشیدالدین وطواط#": 14, "$رباعی$#فرخی سیستانی#": 36, "$قصیده$#نصرالله منشی#": 1, "$چهارپاره$": 12, "$چهارپاره$#ملک‌الشعرای بهار#": 7, "$رباعی$#قاآنی#": 28, "$رباعی$#حافظ شیرازی#": 25, "#پژمان بختیاری#": 62, "$ترکیب$#عطار#": 20, "#شاه اسماعیل صفوی ( خطایی )#": 60, "$غزل$#عبدالقهّار عاصی#": 17, "#ابوالقاسم فردوسی#": 54, "$مفردات$#ناصرخسرو#": 1, "$ترجیع$#فرخی سیستانی#": 3, "$مثنوی$#قاآنی#": 1, "$غزل$#سیمین بهبهانی#": 9, "$مثنوی$#وحشی بافقی#": 6, "$تصنیف$#مولوی#": 3, "$رباعی$#وحشی#": 66, "#عارف قزوینی#": 35, "$تصنیف$#عارف قزوینی#": 35, "$ترکیب$#کمال‌الدین اسماعیل#": 15, "$قطعه$#سعدی#": 21, "$قصیده$#آیت الله حسین نوری همدانی#": 8, "#نجمه زارع#": 38, "$غزل$#نجمه زارع#": 33, "$مثنوی$#عبید زاکانی#": 4, "$ترکیب$#سعدالدین وراوینی#": 7, "$رباعی$#سایه#": 14, "$مثنوی$#شیخ بهایی#": 28, "$غزل$#نظامی#": 20, "$قصاید$#صامت بروجردی#": 32, "$غزل$#فریدون مشیری#": 12, "$ترکیب$#ملک‌الشعرای بهار#": 15, "$قصاید$#اوحدی مراغه ای#": 5, "$غزل$#سیاوش کسرایی#": 5, "$مثنوی$#رشیدالدین میبدی#": 2, "$ترجیع$#عراقی#": 4, "$ترجیع$#صائب تبریزی#": 1, "$ترکیب$#وحشی#": 11, "$قصیده$#نظامی گنجوی#": 3, "$غزل$#منوچهری دامغانی#": 2, "$قطعه$#سهراب سپهری#": 2, "$مثنوی$#اوحدی#": 5, "$قصیده$#صامت بروجردی#": 1, "$شعر نو$#ملک‌الشعرای بهار#": 4, "$قطعه$#ملک‌الشعرای بهار#": 20, "$غزل$#پروین اعتصامی#": 6, "$مسمطات$#ملک‌الشعرای بهار#": 20, "$قصاید$#ایرج میرزا#": 1, "$ترکیب$#ایرج میرزا#": 2, "$ترجیع$#امیرمعزی#": 3, "$غزل$#رشیدالدین میبدی#": 8, "$رباعی$#سنایی غزنوی#": 25, "$تصنیف$#ملک‌الشعرای بهار#": 15, "$مثنوی$#همام تبریزی#": 15, "$تصنیف$#هجویری#": 4, "$قطعه$#کارو#": 2, "$غزل$#حمید مصدق#": 3, "$قطعه$#خاقانی#": 6, "$قصیده$#کمال خجندی#": 3, "$ترکیب$#محمدرضا شفیعی کدکنی#": 2, "#مصطفی مجیدی#": 18, "$مفردات$#رضی‌الدین آرتیمانی#": 9, "$قطعه$#آیت الله حسین نوری همدانی#": 5, "$قصیده$#محتشم کاشانی#": 4, "$ترکیب$#نظامی#": 17, "$ترکیب$#سعدی#": 4, "$غزل$#باباافضل کاشانی#": 14, "$رباعی$#ملا هادی سبزواری#": 15, "$مفردات$#سعدی شیرازی#": 10, "$ترکیب$#وحشی بافقی#": 2, "$غزل$#کسایی#": 4, "$قصاید$#مولانا خالد نقشبندی#": 5, "$غزل$#ملک الشعرای بهار#": 28, "$ترجیع$#هاتف اصفهانی#": 1, "$غزل$#سهراب سپهری#": 1, "$ترکیب$#ظهیر فاریابی#": 4, "$قصیده$#شیون فومنی#": 1, "$رباعی$#جامی#": 1, "$قطعه$#محتشم کاشانی#": 12, "$قصاید$#عمان سامانی#": 8, "$قصاید$#کمال خجندی#": 4, "$غزل$#کامبیز صدیقی کسمایی#": 1, "$ترکیب$#ناصرخسرو#": 4, "$قصیده$#کمال‌الدین اسماعیل#": 3, "$رباعی$#ناصرخسرو قبادیانی#": 4, "$قطعه$#سایه#": 7, "$شعر نو$#فرخی سیستانی#": 4, "$قصیده$#ملک‌الشعرای بهار#": 8, "$قصیده$#وحشی بافقی#": 1, "$طنز$#رشیدالدین میبدی#": 4, "$مثنوی$#سید حمیدرضا برقعی#": 1, "$رباعی$#کسایی#": 3, "$ترکیب$#سلمان ساوجی#": 15, "$غزل$#نظامی گنجوی#": 6, "$قصیده$#سلمان ساوجی#": 2, "$غزل$#محمدرضا شفیعی کدکنی#": 7, "$قصیده$#فریدون مشیری#": 2, "$ترکیب$#هجویری#": 11, "$رباعی$#شیون فومنی#": 8, "$مقطعات$#هاتف اصفهانی#": 18, "$قصیده$#ظهیر فاریابی#": 3, "$قصیده$#پروین اعتصامی#": 2, "$قصیده$#امیرخسرو دهلوی#": 2, "$شعر نو$#فریدون مشیری#": 1, "$چهارپاره$#عبدالقهّار عاصی#": 4, "$تصنیف$#وحشی#": 2, "$مسمطات$#مسعود سعد سلمان#": 4, "$قطعه$#شیخ بهایی#": 1, "$ترجیع$#سعدی#": 1, "$رباعی$#مولانا خالد نقشبندی#": 3, "$قصیده$#حمید مصدق#": 3, "$مثنوی$#احمد پروین#": 10, "$مثنوی$#عبدالقهّار عاصی#": 2, "$تضمین$#حکیم نزاری قهستانی#": 2, "$مسمطات$#منوچهری دامغانی#": 9, "$شعر نو$#کمال‌الدین اسماعیل#": 1, "$تصنیف$#رشیدالدین میبدی#": 2, "$قصاید$#باباافضل کاشانی#": 6, "$طنز$#جامی#": 4, "$قصیده$#جامی#": 8, "$مثنوی$#نجمه زارع#": 1, "$قصاید$#سعدی شیرازی#": 5, "$قصیده$#فیض کاشانی#": 5, "$قصیده$#بیدل دهلوی#": 4, "$مثنوی$#وحشی#": 7, "$رباعی$#ایرج میرزا#": 7, "#فاضل نظری#": 28, "$رباعی$#عطار#": 2, "$ترکیب$#صامت بروجردی#": 3, "$غزل$#کسایی مروزی#": 3, "$ترجیع$#عبید زاکانی#": 2, "$ترکیب$#رشیدالدین وطواط#": 7, "$قصاید$#امام خمینی#": 3, "$ترکیب$#همام تبریزی#": 1, "$غزل$#اشعار ترانه‌های سیاوش قمیشی#": 4, "$غزل$#مهدی اخوان ثالث#": 8, "$غزل$#احمد شاملو#": 5, "$ترکیب$#اوحدی#": 4, "$رباعی$#کسایی مروزی#": 3, "$شعر نو$#اوحدی#": 1, "$قصیده$#انوری#": 4, "$ترجیع$#سنایی#": 2, "$قصیده$#هاتف اصفهانی#": 4, "$قصاید$#امیرخسرو دهلوی#": 12, "$رباعی$#محمدرضا شفیعی کدکنی#": 6, "$رباعی$#منوچهری#": 7, "$شعر نو$#عطار#": 1, "$ترجیع$#وحشی#": 1, "$قصاید$#حافظ شیرازی#": 3, "$قطعه$#خاقانی شروانی#": 1, "$قصاید$#رضی‌الدین آرتیمانی#": 6, "$غزل$#صادق سرمد#": 3, "$قطعه$#جامی#": 1, "$قصیده$#داوود ملک‌زاده#": 2, "$غزل$#آیت الله حسین نوری همدانی#": 1, "$ترکیب$#سهراب سپهری#": 1, "$مفردات$#کمال خجندی#": 8, "$مثنوی$#جامی#": 3, "$ترکیب$#ابن حسام خوسفی#": 1, "$قصیده$#خاقانی#": 4, "$طنز$#ملک‌الشعرای بهار#": 1, "$مثنوی$#مولانا خالد نقشبندی#": 4, "$مثنوی$#ملک الشعرای بهار#": 5, "$قطعه$#مهدی سهیلی#": 1, "$تضمین$#خاقانی#": 1, "$مسمطات$#سنایی#": 2, "$قصیده$#عرفی#": 2, "$ترجیع$#محمدرضا شفیعی کدکنی#": 4, "$قصیده$#نظامی#": 5, "$ترجیع$#ملک‌الشعرای بهار#": 9, "$غزل$#سعدالدین وراوینی#": 3, "$قصاید$#نظامی#": 2, "$قصیده$#سعدی#": 1, "$ترکیب$#صادق هدایت#": 3, "$قصیده$#مولوی#": 2, "$ترجیع$#عطار#": 2, "$طنز$#نظامی#": 3, "$ترجیع$#امام خمینی#": 1, "$قصاید$#هلالی جغتایی#": 4, "$مثنوی$#اِ لیـــار (جبار محمدی )#": 1, "$ترجیع$#اوحدی مراغه ای#": 1, "$تصنیف$#هلالی جغتایی#": 1, "$ترکیب$#انوری#": 2, "$قصاید$#جامی#": 6, "$مثنوی$#کمال‌الدین اسماعیل#": 2, "$ترکیب$#زرتشت#": 1, "$تصنیف$#صادق هدایت#": 2, "$غزل$#فرخی سیستانی#": 2, "$قصیده$#عراقی#": 2, "$ترکیب$#امیرمعزی#": 2, "$تصنیف$#شیخ محمود شبستری#": 3, "$قصیده$#وحشی#": 1, "$تصنیف$#وحشی بافقی#": 1, "$مسمطات$#سنایی غزنوی#": 3, "$طنز$#بهرام سالکی#": 3, "$غزل$#هجویری#": 1, "$ترکیب$#ازرقی هروی#": 1, "$غزل$#ازرقی هروی#": 1, "$شعر نو$#انوری#": 1, "$قطعه$#صامت بروجردی#": 2, "$قصیده$#باباطاهر#": 1, "$تصنیف$#نصرالله منشی#": 1, "$قطعه$#نصرالله منشی#": 1, "$تصنیف$#سهراب سپهری#": 1, "$قصیده$#سیاوش کسرایی#": 1, "$قطعه$#سعدالدین وراوینی#": 1, "$قصیده$#جلال الدین محمد مولوی#": 1, "$قصیده$#سیف فرغانی#": 2, "$قصیده$#مهدی اخوان ثالث#": 1, "$قصیده$#حافظ#": 1, "$غزل$#منوچهری#": 2, "$قطعه$#ظهیر فاریابی#": 2, "$قصیده$#فروغی بسطامی#": 1, "$قطعه$#ملک الشعرای بهار#": 1, "$شعر نو$#صامت بروجردی#": 1, "$قصاید$#هجویری#": 1, "$تضمین$#فریدون مشیری#": 1, "$مقطعات$#رشیدالدین میبدی#": 2, "$قطعه$#نادر نادرپور#": 1, "$تضمین$#رشیدالدین میبدی#": 1, "$طنز$#احمد شاملو#": 1, "$رباعی$#رشیدالدین میبدی#": 3, "$طنز$#مهدی اخوان ثالث#": 1, "$قطعه$#سیمین بهبهانی#": 2, "$ترکیب$#شیخ محمود شبستری#": 3, "$طنز$#هجویری#": 1, "$تصنیف$#جامی#": 1, "$قصاید$#نظامی گنجوی#": 1, "$قصیده$#هجویری#": 1, "$ترجیع$#رضی‌الدین آرتیمانی#": 1, "$قصیده$#خیام#": 1, "$مثنوی$#عنصری#": 1, "$تضمین$#عطار#": 1, "$ترجیع$#حمید مصدق#": 1, "$ترکیب$#اقبال لاهوری#": 2, "$قطعه$#سعدی شیرازی#": 1, "$شعر نو$#قاآنی#": 2, "$قطعه$#عطار#": 1, "$ترجیع$#ابن حسام خوسفی#": 1, "$قصیده$#صادق سرمد#": 2, "$غزل$#مهدی سهیلی#": 1, "$ترکیب$#ملک الشعرای بهار#": 2, "$شعر نو$#اشعار ترانه‌های سیاوش قمیشی#": 1, "$قصیده$#صائب تبریزی#": 1, "$رباعی$#صامت بروجردی#": 1, "$طنز$#کمال‌الدین اسماعیل#": 1, "$ترکیب$#عبدالقهّار عاصی#": 1, "$ترجیع$#بهرام سالکی#": 1, "$قصیده$#فروغ فرخزاد#": 1, "$ترکیب$#حافظ#": 2, "$ترجیع$#رشیدالدین میبدی#": 1, "$غزل$#فروغ فرخزاد#": 1, "$مثنوی$#صائب تبریزی#": 1, "$قطعه$#صائب تبریزی#": 1, "$مثنوی$#عمان سامانی#": 1, "$شعر نو$#خاقانی#": 1, "$مخمسات$": 2, "$مخمسات$#مولانا خالد نقشبندی#": 2, "$مثنوی$#سلمان ساوجی#": 2, "$قطعه$#احمد شاملو#": 1, "$غزل$#داوود ملک‌زاده#": 1, "$قصیده$#احمد پروین#": 1, "$قطعه$#سیاوش کسرایی#": 1, "$مفردات$#رشیدالدین میبدی#": 1, "$شعر نو$#کمال خجندی#": 2, "$قطعه$#شهریار#": 1, "$شعر نو$#مولوی#": 1, "$تضمین$#نصرالله منشی#": 1, "$قصیده$#عطار#": 1, "$مثنوی$#شیخ محمود شبستری#": 2, "$چهارپاره$#ملک الشعرای بهار#": 1, "$قصیده$#عرفی شیرازی#": 1, "$مثنوی$#باقر فداغی لارستانی#": 1, "$ترجیع$#حکیم نزاری قهستانی#": 1} prompt_dict = dict(sorted(prompt_dict.items(), key=lambda x: x[1], reverse=True)) examples = [[x] for x in prompt_dict.keys()] stop_sequences = [] #["<|endoftext|>",">"] # examples = [ # ["<$غزل$@بر دلم هر ذره داغی می توان کردن"], # ["<$غزل$%صائب تبریزی%"], # ["<$قصاید$"], # ["<%سعدی شیرازی%"], # ["<$غزل$@دراین سرای بی کسی، کسی به در نمی زند"], # ["<$غزل$%مولوی%"], # ["<%امیرخسرو دهلوی%"], # ["<%شاه نعمت‌الله ولی%"], # ["<$رباعی$%مولوی%"], # ["<%عطار%"], # ["<%قدسی مشهدی%"], # ["<$غزل$%بیدل دهلوی%"], # ["<$ترجیع$"], # ["$مقطعات$%کمال خجندی%"], # ["<%ملک‌الشعرای بهار%"], # ["<%پروین اعتصامی%"], # ["<%مهدی اخوان ثالث%"], # ] client = InferenceClient( API_URL, headers={"Authorization": f"Bearer {HF_TOKEN}"}, ) def asynchronous_push(f_stop): if repo.is_repo_clean(): print("Repo currently clean. Ignoring push_to_hub") print(repo.huggingface_token) else: repo.git_add(auto_lfs_track=True) repo.git_commit("Auto commit by space") if FORCE_PUSH == "yes": force_git_push(repo) else: repo.git_push() if not f_stop.is_set(): # call again in 60 seconds threading.Timer(PUSH_FREQUENCY, asynchronous_push, [f_stop]).start() f_stop = threading.Event() asynchronous_push(f_stop) def format_prompt(message, history, system_prompt): prompt = "" if system_prompt: prompt += f"{system_prompt}" for user_prompt, bot_response in history: prompt += f"{user_prompt}" prompt += f"{bot_response}" prompt += f"""{message}""" return prompt def generate( prompt, history, system_prompt, temperature=0.9, max_new_tokens=100, top_p=0.95, repetition_penalty=1.0, seed=42, ): global HISTORY HISTORY = history global PROMPT PROMPT = prompt temperature = float(temperature) if temperature < 1e-2: temperature = 1e-2 top_p = float(top_p) generate_kwargs = dict( temperature=temperature, max_new_tokens=max_new_tokens, top_p=top_p, repetition_penalty=repetition_penalty, stop_sequences=stop_sequences, do_sample=True, #seed=seed, ) #seed = seed + 1 formatted_prompt = format_prompt(prompt, history, system_prompt) stream = client.text_generation(formatted_prompt, **generate_kwargs, stream=False, details=True, return_full_text=False) output = "" for response in stream: output += response for stop_str in stop_sequences: if output.endswith(stop_str): output = output[:-len(stop_str)] output = output.rstrip() yield output yield output return output additional_inputs=[ gr.Textbox("", label="Optional system prompt"), #<|endoftext|> gr.Slider( label="Temperature", value=0.95, minimum=0.0, maximum=1.0, step=0.05, interactive=True, info="Higher values produce more diverse outputs", ), gr.Slider( label="Max new tokens", value=50, minimum=0, maximum=250, step=64, interactive=True, info="The maximum numbers of new tokens", ), gr.Slider( label="Top-p (nucleus sampling)", value=0.85, minimum=0.0, maximum=1, step=0.05, interactive=True, info="Higher values sample more low-probability tokens", ), gr.Slider( label="Repetition penalty", value=1.2, minimum=1.0, maximum=2.0, step=0.05, interactive=True, info="Penalize repeated tokens", ), ] CSS = """ .gradio-container textarea {direction: rtl; white-space: pre-line;} #component-11 #component-12 {direction: rtl; white-space: pre-line;} p {direction: rtl; white-space: pre-line;} """ chatbot = gr.Chatbot(label="PersianGPT", rtl=True, show_share_button=True, show_copy_button=True, bubble_full_width = False) textbox = gr.Textbox( label="textbox", container=False, show_label=False, lines=3, scale=7, placeholder="...Type something here", rtl=True, ) chat_interface = gr.ChatInterface( generate, chatbot=chatbot, textbox=textbox, examples=examples, additional_inputs=additional_inputs, cache_examples=False, ) #print(dir(chat_interface)) def evolve_text(x): possible_generation = "".join([x for x in generate( x if len(x)>0 else ">", "", additional_inputs[0].value, temperature=additional_inputs[1].value, max_new_tokens=10, top_p=additional_inputs[3].value, repetition_penalty=additional_inputs[4].value, seed=42, )][-1]) #TODO: need a smarter way to do this return possible_generation def vote(data: gr.LikeData): if data.liked: print("You upvoted this response: " + data.value) else: print("You downvoted this response: " + data.value) with open(DATA_FILE, "a") as jsonlfile: json_data = [ json.dumps( { "time_stamp": time.time(), "model_version":MODEL_VERSION, "name":NAME, "username":USERNAME, "prompt": PROMPT, "history": HISTORY, "system prompt": additional_inputs[0].value, "temperature": additional_inputs[1].value, "max_new_tokens": additional_inputs[2].value, "top_p": additional_inputs[3].value, "repetition_penalty": additional_inputs[4].value, "response": data.value, "label": data.liked, }, ensure_ascii=False ) ] jsonlfile.write("\n".join(json_data) + "\n") def hello(profile: gr.OAuthProfile | None) -> str: global USERNAME global NAME #print(dir(profile)) if profile is None: USERNAME = "guest" NAME = "guest" return "I don't know you. Please login:" NAME = profile.name USERNAME = profile.preferred_username return f"Hello {profile.name}" with gr.Blocks(css=CSS) as demo: with gr.Row(): with gr.Column(): gr.Markdown( """ PERSIAN GPT Trained by Mojtaba Valipour @ Data Analytics Lab """ ) with gr.Row(): with gr.Column(): gr.Markdown().attach_load_event(hello, None) with gr.Row(): with gr.Column(): gr.LoginButton() #gr.LogoutButton() chatbot.like(vote, None, None) output = gr.Textbox(label="What you can expect coming:") textbox.change(fn=evolve_text, inputs=textbox, outputs=output, show_progress = False, status_tracker = None) #textbox.render() chat_interface.render() demo.queue(concurrency_count=100, api_open=False).launch(show_api=False) #, share=True)