promptMaker / src /token_optimizer.py
GolabiSib's picture
Upload token_optimizer.py
4e4e912 verified
import re
def optimize_prompt(prompt: str) -> str:
"""
Token Optimizer (No AI, Farsi + English)
---------------------------------------
کاهش مصرف توکن با حذف تکرارها، کلمات و عبارات غیرضروری به فارسی و انگلیسی.
✅ بدون نیاز به API یا مدل هوش مصنوعی
✅ قابل استفاده در هر پروژه Python (Streamlit, FastAPI, Flask, و غیره)
"""
# حذف فاصله‌ها و خطوط اضافه
text = re.sub(r'\s+', ' ', prompt.strip())
# حذف تکرارهای پشت سر هم (مثلاً please please → please / لطفاً لطفاً → لطفاً)
text = re.sub(r'\b(\w+)( \1\b)+', r'\1', text, flags=re.IGNORECASE)
text = re.sub(r'(لطفاً\s*){2,}', 'لطفاً ', text)
# حذف عبارات پرمصرف ولی بی‌اثر (انگلیسی + فارسی)
filler_phrases = [
# انگلیسی
r'please', r'kindly', r'could you', r'i want you to', r'you must',
r'note that', r'make sure that', r'ensure that', r'as an ai',
r'let me know', r'provide me with', r'your task is to',
r'you are required to', r'i would like you to',
# فارسی
r'لطفاً', r'خواهش می‌کنم', r'می‌خواهم که', r'از تو می‌خواهم', r'حتماً',
r'توجه کن که', r'یادت نره که', r'باید حتماً', r'وظیفه‌ات این است که',
r'لطفا', r'حتمن', r'لطف داری که'
]
text = re.sub(r'\b(' + '|'.join(filler_phrases) + r')\b', '', text, flags=re.IGNORECASE)
# جایگزینی عبارات طولانی با کوتاه‌تر (انگلیسی + فارسی)
replacements = {
# English
"in order to": "to",
"as soon as possible": "quickly",
"for the purpose of": "to",
"at this point in time": "now",
"a large number of": "many",
"due to the fact that": "because",
# فارسی
"به منظور اینکه": "برای",
"در حال حاضر": "اکنون",
"به خاطر اینکه": "چون",
"به دلیل اینکه": "چون",
"تعداد زیادی از": "بسیاری از",
"به محض اینکه": "به‌سرعت",
"در سریع‌ترین زمان ممکن": "سریع"
}
for long, short in replacements.items():
text = re.sub(long, short, text, flags=re.IGNORECASE)
# حذف فاصله‌ها و نشانه‌گذاری اضافی
text = re.sub(r'\s+', ' ', text)
text = re.sub(r'\s+([,.!?])', r'\1', text)
text = text.strip(" ,.")
return text