
حواجز حماية قابلة للبرمجة لتطبيقات الدردشة المعتمدة على نماذج اللغة الكبيرة (LLM): فرض قيود على الإدخال/الإخراج، حظر عمليات كسر الحماية (jailbreaks) وحقن الأوامر (prompt injections)، اكتشاف الهلوسة، وإخفاء البيانات الحساسة.
أحدث إصدار / إصدار التطوير: يتتبع فرع develop أحدث تطوير في أعلى الشجرة. أحدث إصدار صادر هو 0.24.1.
✨✨✨
📌 التوثيق الرسمي لمكتبة NeMo Guardrails متاح على docs.nvidia.com/nemo/guardrails.
✨✨✨
مكتبة NVIDIA NeMo Guardrails هي مجموعة أدوات مفتوحة المصدر لإضافة حواجز حماية قابلة للبرمجة بسهولة إلى التطبيقات الحوارية القائمة على نماذج اللغة الكبيرة (LLM). حواجز الحماية (أو "rails" للاختصار) هي طرق محددة للتحكم في مخرجات نموذج اللغة الكبير، مثل عدم التحدث عن السياسة، أو الرد بطريقة معينة على طلبات مستخدم محددة، أو اتباع مسار حوار محدد مسبقًا، أو استخدام نمط لغوي معين، أو استخراج بيانات منظمة، والمزيد.
هذه الورقة البحثية تقدم مكتبة NeMo Guardrails وتحتوي على نظرة تقنية عامة للنظام والتقييم الحالي.
Python 3.10 أو 3.11 أو 3.12 أو 3.13.
للتثبيت باستخدام pip:
> pip install nemoguardrails
للحصول على تعليمات أكثر تفصيلاً، راجع دليل التثبيت.
تُمكّن مكتبة NeMo Guardrails المطورين الذين يبنون تطبيقات قائمة على LLM من إضافة حواجز قابلة للبرمجة بين كود التطبيق وLLM.
تشمل الفوائد الرئيسية لإضافة الحواجز القابلة للبرمجة ما يلي:
بناء تطبيقات قائمة على LLM موثوقة وآمنة ومأمونة: يمكنك تعريف حواجز لتوجيه المحادثات وحمايتها؛ ويمكنك اختيار تعريف سلوك تطبيقك القائم على LLM في موضوعات محددة ومنعه من الانخراط في مناقشات حول موضوعات غير مرغوب فيها.
ربط النماذج والسلاسل والخدمات الأخرى بشكل آمن: يمكنك ربط LLM بخدمات أخرى (المعروفة أيضًا بالأدوات) بسلاسة وأمان.
حوار قابل للتحكم: يمكنك توجيه LLM لاتباع مسارات محادثة محددة مسبقًا، مما يتيح لك تصميم التفاعل وفقًا لأفضل ممارسات تصميم المحادثات وتطبيق إجراءات التشغيل القياسية (مثل المصادقة والدعم).
توفر مكتبة NeMo Guardrails عدة آليات لحماية تطبيق محادثة مدعوم بـ LLM من ثغرات LLM الشائعة، مثل كسر الحماية وحقن الأوامر. فيما يلي نظرة عامة نموذجية على الحماية التي توفرها تكوينات الحواجز المختلفة للمثال ABC Bot المضمّن في هذا المستودع. لمزيد من التفاصيل، يُرجى الرجوع إلى صفحة فحص ثغرات LLM.
يمكنك استخدام الحواجز القابلة للبرمجة في أنواع مختلفة من حالات الاستخدام:
NEMOGUARDRAILS_LLM_FRAMEWORK=langchain أو استدعِ set_default_framework("langchain").لإضافة حواجز قابلة للبرمجة إلى تطبيقك، يمكنك استخدام واجهة برمجة تطبيقات Python أو خادم الحواجز (راجع دليل الخادم لمزيد من التفاصيل). استخدام واجهة برمجة تطبيقات Python مشابه لاستخدام LLM مباشرةً. يتطلب استدعاء طبقة الحواجز بدلاً من LLM تغييرات بسيطة فقط في قاعدة الكود، ويتضمن خطوتين بسيطتين:
LLMRails.generate/generate_async.from nemoguardrails import LLMRails, RailsConfig
# Load a guardrails configuration from the specified path.
config = RailsConfig.from_path("PATH/TO/CONFIG")
rails = LLMRails(config)
completion = rails.generate(
messages=[{"role": "user", "content": "Hello world!"}]
)
نموذج الإخراج:
{"role": "assistant", "content": "Hi! How can I help you?"}
تنسيق الإدخال والإخراج لطريقة generate مشابه لـ Chat Completions API من OpenAI.
مكتبة NeMo Guardrails هي مجموعة أدوات غير متزامنة أولاً حيث يتم تنفيذ الآليات الأساسية باستخدام نموذج Python غير المتزامن. تحتوي الطرق العامة على نسختين متزامنة وغير متزامنة. على سبيل المثال: LLMRails.generate و LLMRails.generate_async.
يمكنك استخدام NeMo Guardrails مع عدة نماذج LLM مثل OpenAI GPT-3.5 و GPT-4 و LLaMa-2 و Falcon و Vicuna أو Mosaic. لمزيد من التفاصيل، راجع قسم نماذج LLM المدعومة في دليل التكوين.
تدعم مكتبة NeMo Guardrails خمسة أنواع رئيسية من guardrails:
Input rails: تُطبَّق على الإدخال من المستخدم؛ يمكن لـ input rail رفض الإدخال، مما يوقف أي معالجة إضافية، أو تعديل الإدخال (على سبيل المثال، لإخفاء بيانات قد تكون حساسة، أو لإعادة الصياغة).
Dialog rails: تؤثر على كيفية توجيه LLM؛ تعمل dialog rails على رسائل النموذج القانوني (canonical form) — للتفاصيل راجع دليل Colang — وتحدد ما إذا كان ينبغي تنفيذ إجراء، وما إذا كان ينبغي استدعاء LLM لتوليد الخطوة التالية أو استجابة، وما إذا كان ينبغي استخدام استجابة محددة مسبقًا بدلاً من ذلك، إلخ.