Regex برای ایمیل، کدپستی و رشتههای مرتب عالیه، اما وقتی میشنوید «لطفاً مطمئن شو بیو حرفهایه» یا «بررسی کن واقعاً دارد یک ماشین رو توصیف میکنه»، کل ماجرا فرو میریزه. هرچقدر هم الگوی بیشتر بچسبونید، هنوز دارید نحو رو قضاوت میکنید و نه معنا رو.
Django AI Validator پاسخم به این شکاف معناییه؛ یک پکیج تازه PyPI که به فیلدهای Django اجازه میده به LLMهای مدرن (OpenAI، Anthropic، Gemini یا حتی Ollama روی سیستم خودتون) وصل بشن و همون لحظه اعتبارسنجی و تمیزکاری انجام بدهند.
چرا یک اعتبارسنجِ دیگه؟
چون کیفیت محتوا دیگه فقط «کاراکتر مجاز» نیست. باید لحن، نیت و نقض سیاستها رو بدون ساختن سیستم تعدیل پیچیده تشخیص بدیم. به جای کنار هم چیدن فیلترهای کلمه کلیدی و هکهای شکننده، میگید «خوب» یعنی چی و بقیهاش رو خود اعتبارسنج انجام میده.
این پکیج چی میاره؟
- اعتبارسنجی معنایی:
AISemanticValidatorپرامپت شما (مثلاً «آیا این توضیح محترمانه و مرتبط است؟») رو میخونه و متن رو ارزیابی میکنه. - تمیزکاری خودکار:
AICleanedFieldورودی رو قبل از ذخیره بازنویسی میکنه یا حتی میره سراغ حذف PII، اصلاح گرامر و نرمالسازی و لحن و والخ… - امکانات UX در ادمین: دادههای مشکوک داخل Django Admin علامت میخورند و اکشنهای پاکسازی گروهی در دسترسه تا تیم محتوا در جریان بمونه.
- پشتیبانی از پردازش غیرهمزمان: فراخوانیهای طولانی LLM رو میتونید به Celery بسپارید تا درخواست اصلی سریع تمام شه.
مستندات: mazafard.github.io/Django-AI-Validator
سورس کد: github.com/Mazafard/Django-AI-Validator
تور معماری (بخش عاشقان جزئیات)
برای اینکه کتابخونه انعطافپذیر و Provider-agnostic بمونه از الگوهای طراحی کلاسیک کمک گرفتم:
- Adapter Pattern: اینترفیس
LLMAdapterمتدهایvalidateوcleanرو تعریف میکنه و آداپترهایOpenAIAdapter،AnthropicAdapter،GeminiAdapterوOllamaAdapterدرخواستها رو مطابق API هر سرویس ترجمه میکنند. - Abstract Factory: وقتی به کلاس
AIProviderFactoryمیگید «openai» یا «ollama»، بسته کامل آداپتر و تنظیمات صحیح رو میده؛ خبری ازif provider == ...های پخش و پلا نیست. - Singleton Cache: کلاس
LLMCacheManagerکش اشتراکی برای جفت پرامپت+متن نگه میدارد تا اعتبارسنجی تکراری هزینه توکن اضافه نداشته باشه. - Proxy Pattern: کلاس
CachingLLMProxyقبل از تماس با آداپتر واقعی، کش رو چک میکنه، روی miss درخواست رو میفرسته و نتیجه رو ذخیره میکنه، بیآنکه شما تغییری بدید. - Facade Pattern: کلاس
AICleaningFacadeهمه این پیچیدگیها رو میپوشاند؛ Validator فقطfacade.validate()یاfacade.clean()رو صدا میزنه. - Template Method: کلاس
AISemanticValidatorروند ثابتprepare_input → call_llm → parse_response → raise_validation_errorرو تعریف میکنه؛ میتوانید گامهای لازم رو override کنید و اسکلت رو دستنخورده نگه دارید.
استفاده داخل مدل
| |
پشت صحنه، Facade آداپتر مناسب رو انتخاب میکنه Proxy کش رو چک میکنه و Validator یا ValidationError یا خروجی تمیز شده رو برمیگردونه.
شروع سریع
pip install django-ai-validator- کلیدهای OpenAI/Anthropic/Gemini/Ollama رو در تنظیمات بذارید
AISemanticValidatorیاAICleanedFieldرو به فیلدهای مورد نظرتون اضافه کنین
همین. به جای نوشتن صد خط Regex بروی حدس زدن محترمانه بودن یک متن، رفتار مطلوب رو توضیح بدهید و بذارید LLM حکم نهایی رو صادر کند. مشتاقم ببینم شما چهچیزهایی رو اعتبارسنجی میکنید!