
Guardrails v0.24.1
حواجز حماية قابلة للبرمجة لتطبيقات الدردشة المعتمدة على نماذج اللغة الكبيرة (LLM): فرض قيود على الإدخال/الإخراج، حظر عمليات كسر الحماية (jailbreaks) وحقن الأوامر (prompt injections)، اكتشاف الهلوسة، وإخفاء البيانات الحساسة.
مكتبة NVIDIA NeMo Guardrails
أحدث إصدار / إصدار التطوير: يتتبع فرع 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:```bash
pip install nemoguardrails
لمزيد من التعليمات التفصيلية، راجع [دليل التثبيت](https://docs.nvidia.com/nemo/guardrails/get-started/installation-guide).
## نظرة عامة
<!-- start-documentation-reuse -->
تُمكّن مكتبة NeMo Guardrails المطورين الذين يبنون تطبيقات قائمة على LLM من إضافة **حواجز قابلة للبرمجة** بين كود التطبيق وLLM.
<div align="center">
<img src="https://raw.githubusercontent.com/NVIDIA-NeMo/Guardrails/develop/docs/_static/images/programmable_guardrails.png" width="75%" alt="Programmable Guardrails">
</div>
تشمل الفوائد الرئيسية لإضافة *حواجز قابلة للبرمجة* ما يلي:
- **بناء تطبيقات LLM موثوقة وآمنة ومحمية:** يمكنك تعريف حواجز لتوجيه المحادثات وحمايتها؛ يمكنك اختيار تعريف سلوك تطبيقك القائم على LLM في موضوعات محددة ومنعه من الانخراط في مناقشات حول موضوعات غير مرغوب فيها.
- **ربط النماذج والسلاسل والخدمات الأخرى بشكل آمن:** يمكنك ربط LLM بخدمات أخرى (المعروفة أيضًا بالأدوات) بسلاسة وأمان.
- **حوار قابل للتحكم**: يمكنك توجيه LLM لاتباع مسارات محادثة محددة مسبقًا، مما يتيح لك تصميم التفاعل وفقًا لأفضل ممارسات تصميم المحادثات وتطبيق إجراءات التشغيل القياسية (مثل المصادقة والدعم).
<!-- end-documentation-reuse -->
### الحماية من ثغرات LLM
توفر مكتبة NeMo Guardrails عدة آليات لحماية تطبيق محادثة مدعوم بـ LLM من ثغرات LLM الشائعة، مثل كسر الحماية وحقن الأوامر. فيما يلي نظرة عامة نموذجية على الحماية التي توفرها تكوينات الحواجز المختلفة للمثال [ABC Bot](https://github.com/nvidia-nemo/guardrails/blob/develop/examples/bots/abc) المضمّن في هذا المستودع. لمزيد من التفاصيل، يُرجى الرجوع إلى صفحة [فحص ثغرات LLM](https://docs.nvidia.com/nemo/guardrails/evaluation/llm-vulnerability-scanning.html).
<div align="center">
<img src="https://raw.githubusercontent.com/NVIDIA-NeMo/Guardrails/develop/docs/_static/images/abc-llm-vulnerability-scan-results.png" width="500">
</div>
### حالات الاستخدام
يمكنك استخدام الحواجز القابلة للبرمجة في أنواع مختلفة من حالات الاستخدام:
1. **الإجابة على الأسئلة** عبر مجموعة من المستندات (المعروفة أيضًا بالتوليد المعزز بالاسترجاع): فرض التحقق من الحقائق ومراقبة المخرجات.
2. **المساعدون المتخصصون في مجال معين** (المعروفون أيضًا بروبوتات المحادثة): ضمان بقاء المساعد في صلب الموضوع واتباعه لمسارات المحادثة المصممة.
3. **نقاط نهاية LLM**: إضافة حواجز إلى LLM المخصص الخاص بك لتفاعل أكثر أمانًا مع العملاء.
4. **سلاسل LangChain** (اختياري): إذا كنت تستخدم LangChain لأي حالة استخدام، يمكنك إضافة طبقة حواجز حول سلاسلك. لتمكين هذا التكامل، اضبط متغير البيئة `NEMOGUARDRAILS_LLM_FRAMEWORK=langchain` أو استدعِ `set_default_framework("langchain")`.
### الاستخدام
لإضافة حواجز قابلة للبرمجة إلى تطبيقك، يمكنك استخدام واجهة برمجة تطبيقات Python أو خادم الحواجز (راجع [دليل الخادم](https://docs.nvidia.com/nemo/guardrails/get-started/integrate-into-application) لمزيد من التفاصيل). استخدام واجهة برمجة تطبيقات Python مشابه لاستخدام LLM مباشرةً. يتطلب استدعاء طبقة الحواجز بدلاً من LLM تغييرات بسيطة فقط في قاعدة الكود، ويتضمن خطوتين بسيطتين:
1. تحميل تكوين الحواجز وإنشاء نسخة `LLMRails`.
2. إجراء الاستدعاءات إلى LLM باستخدام طريقتي `generate`/`generate_async`.```python
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!"}]
)
نموذج الإخراج:```json {"role": "assistant", "content": "Hi! How can I help you?"}
تنسيق الإدخال والإخراج لطريقة `generate` مشابه لـ [Chat Completions API](https://platform.openai.com/docs/guides/gpt/chat-completions-api) من OpenAI.
#### واجهة API غير المتزامنة
مكتبة NeMo Guardrails هي مجموعة أدوات غير متزامنة أولاً حيث يتم تنفيذ الآليات الأساسية باستخدام نموذج Python غير المتزامن. تحتوي الطرق العامة على نسختين متزامنة وغير متزامنة. على سبيل المثال: `LLMRails.generate` و `LLMRails.generate_async`.
### نماذج LLM المدعومة
يمكنك استخدام NeMo Guardrails مع نماذج LLM متعددة مثل OpenAI GPT-3.5 و GPT-4 و LLaMa-2 و Falcon و Vicuna أو Mosaic. لمزيد من التفاصيل، راجع قسم [نماذج LLM المدعومة](https://docs.nvidia.com/nemo/guardrails/about-nemo-guardrails-library/supported-llms) في دليل التكوين.
### أنواع Guardrails
تدعم مكتبة NeMo Guardrails خمسة أنواع رئيسية من guardrails:
<div align="center">
<img src="https://raw.githubusercontent.com/NVIDIA-NeMo/Guardrails/develop/docs/_static/images/programmable_guardrails_flow.png" width="75%" alt="Programmable Guardrails Flow">
</div>
1. **Input rails**: تُطبَّق على الإدخال من المستخدم؛ يمكن لـ input rail رفض الإدخال، مما يوقف أي معالجة إضافية، أو تعديل الإدخال (على سبيل المثال، لإخفاء بيانات قد تكون حساسة، أو لإعادة الصياغة).
2. **Dialog rails**: تؤثر على كيفية توجيه LLM؛ تعمل dialog rails على رسائل الشكل الأساسي (canonical form) للتفاصيل راجع [دليل Colang](https://docs.nvidia.com/nemo/guardrails/configure-guardrails/colang)) وتحدد ما إذا كان يجب تنفيذ إجراء، وما إذا كان يجب استدعاء LLM لتوليد الخطوة التالية أو استجابة، وما إذا كان يجب استخدام استجابة محددة مسبقًا بدلاً من ذلك، إلخ.
3. **Retrieval rails**: تُطبَّق على الأجزاء المسترجعة في حالة سيناريو RAG (Retrieval Augmented Generation)؛ يمكن لـ retrieval rail رفض جزء، مما يمنعه من استخدامه لتوجيه LLM، أو تعديل الأجزاء ذات الصلة (على سبيل المثال، لإخفاء بيانات قد تكون حساسة).
4. **Execution rails**: تُطبَّق على إدخال/إخراج الإجراءات المخصصة (المعروفة أيضًا باسم الأدوات)، التي يحتاج LLM إلى استدعائها.
5. **Output rails**: تُطبَّق على الإخراج الذي يولده LLM؛ يمكن لـ output rail رفض الإخراج، مما يمنعه من إعادته إلى المستخدم، أو تعديله (على سبيل المثال، إزالة البيانات الحساسة).
### تكوين Guardrails
يحدد تكوين guardrails **نموذج (نماذج) LLM** التي سيتم استخدامها و**واحدًا أو أكثر من guardrails**. يمكن أن يتضمن تكوين guardrails أي عدد من input/dialog/output/retrieval/execution rails. التكوين بدون أي rails مُكوَّنة سيقوم أساسًا بإعادة توجيه الطلبات إلى LLM.
يبدو الهيكل القياسي لمجلد تكوين guardrails كما يلي:```
.
├── config
│ ├── actions.py
│ ├── config.py
│ ├── config.yml
│ ├── rails.co
│ ├── ...
يحتوي config.yml على جميع خيارات التكوين العامة، مثل نماذج LLM، والقضبان النشطة، وبيانات التكوين المخصصة". يحتوي ملف config.py على أي كود تهيئة مخصص، ويحتوي actions.py على أي إجراءات Python مخصصة. للحصول على نظرة عامة كاملة، راجع دليل التكوين.
فيما يلي مثال على config.yml:```yaml
config.yml
models:
- type: main engine: openai model: gpt-3.5-turbo-instruct
rails:
Input rails are invoked when new input from the user is received.
input: flows: - check jailbreak - mask sensitive data on input
Output rails are triggered after a bot message has been generated.
output: flows: - self check facts - self check hallucination - activefence moderation on input
config: # Configure the types of entities that should be masked on user input. sensitive_data_detection: input: entities: - PERSON - EMAIL_ADDRESS
تحتوي ملفات `.co` المضمّنة في إعداد guardrails على تعريفات Colang (راجع القسم التالي للحصول على نظرة سريعة عن ماهية Colang) التي تُعرّف أنواعًا مختلفة من الحواجز (rails). فيما يلي مثال لملف `greeting.co` الذي يُعرّف حواجز الحوار (dialog rails) لتحية المستخدم.```colang
define user express greeting
"Hello!"
"Good afternoon!"
define flow
user express greeting
bot express greeting
bot offer to help
define bot express greeting
"Hello there!"
define bot offer to help
"How can I help you today?"
فيما يلي مثال إضافي لتعريفات Colang الخاصة بحاجز حوار ضد الإهانات:```colang define user express insult "You are stupid"
define flow user express insult bot express calmly willingness to help
### Colang
لتكوين وتنفيذ أنواع مختلفة من الحواجز الأمنية، تقدّم هذه المجموعة **Colang**، وهي لغة نمذجة صُممت خصيصًا لتصميم تدفقات حوارية مرنة وقابلة للتحكم في الوقت نفسه. تتميز Colang بصياغة شبيهة بـ Python ومصممة لتكون بسيطة وبديهية، خاصةً للمطورين.```{note}
Two versions of Colang, 1.0 and 2.0, are supported and Colang 1.0 is the default.
للحصول على مقدمة موجزة عن صيغة Colang 1.0، راجع دليل صيغة لغة Colang 1.0.
للبدء مع Colang 2.0، راجع توثيق Colang 2.0.
مكتبة Guardrails
يأتي NeMo Guardrails مع مجموعة من الحواجز المدمجة.```{note} The built-in guardrails may or may not be suitable for a given production use case. As always, developers should work with their internal application team to ensure guardrails meets requirements for the relevant industry and use case and address unforeseen product misuse.
تتضمن المكتبة حواجز حماية للتحقق الذاتي من LLM (مراجعة المدخلات/المخرجات، والتحقق من الحقائق، واكتشاف الهلوسة)، ونماذج أمان NVIDIA (أمان المحتوى، أمان الموضوع)، واكتشاف كسر الحماية والحقن، وتكاملات مع نماذج المجتمع وواجهات برمجة التطبيقات الخارجية. للحصول على القائمة الكاملة، راجع [وثائق مكتبة Guardrails](https://docs.nvidia.com/nemo/guardrails/user-guides/guardrails-library.html).
## CLI
تأتي مكتبة NeMo Guardrails أيضًا مع واجهة سطر أوامر (CLI) مدمجة.```bash
$ nemoguardrails --help
Usage: nemoguardrails [OPTIONS] COMMAND [ARGS]...
actions-server Start a NeMo Guardrails actions server.
chat Start an interactive chat session.
evaluate Run an evaluation task.
server Start a NeMo Guardrails server.
خادم Guardrails
يمكنك استخدام واجهة سطر أوامر مكتبة NeMo Guardrails لتشغيل خادم guardrails. يمكن للخادم تحميل إعداد واحد أو أكثر من المجلد المحدد وكشف واجهة HTTP API لاستخدامها.``` nemoguardrails server [--config PATH/TO/CONFIGS] [--port PORT]
على سبيل المثال، للحصول على إكمال محادثة لإعداد `sample`، يمكنك استخدام نقطة النهاية `/v1/chat/completions`:```
POST /v1/chat/completions
التثبيت
المتطلبات الأساسية
- Python 3.8 أو أحدث
- pip (مدير حزم Python)
- Git (اختياري، للاستنساخ)
التثبيت السريع
# استنساخ المستودع
git clone https://github.com/yourusername/kitploit-tool.git
cd kitploit-tool
# إنشاء بيئة افتراضية
python3 -m venv venv
source venv/bin/activate # على Windows: venv\Scripts\activate
# تثبيت التبعيات
pip install -r requirements.txt
# تثبيت الأداة
pip install -e .
التثبيت عبر pip
pip install kitploit-tool
التثبيت عبر Docker
# سحب الصورة
docker pull kitploit/tool:latest
# تشغيل الحاوية
docker run -it --rm kitploit/tool:latest --help
التحقق من التثبيت
# التحقق من التثبيت
kitploit-tool --version
# تشغيل الاختبارات
pytest tests/
الاستخدام
الاستخدام الأساسي
# عرض المساعدة
kitploit-tool --help
# تشغيل الفحص الأساسي
kitploit-tool scan --target example.com
# تشغيل الفحص مع خيارات متقدمة
kitploit-tool scan --target example.com --deep --output results.json
خيارات سطر الأوامر
| الخيار | الوصف | القيمة الافتراضية |
|---|---|---|
--target | الهدف المراد فحصه | مطلوب |
--output | ملف الإخراج | stdout |
--format | تنسيق الإخراج (json, xml, csv) | json |
--deep | تمكين الفحص العميق | false |
--threads | عدد الخيوط | 10 |
--timeout | المهلة بالثواني | 30 |
--verbose | تمكين الإخراج المفصل | false |
أمثلة الاستخدام
فحص منفذ واحد
kitploit-tool scan --target 192.168.1.1 --port 80
فحص نطاق منافذ
kitploit-tool scan --target 192.168.1.1 --ports 1-1000
فحص شبكة فرعية كاملة
kitploit-tool scan --target 192.168.1.0/24 --threads 50
حفظ النتائج في ملف
kitploit-tool scan --target example.com --output results.json --format json
ملف التكوين
يمكنك إنشاء ملف تكوين config.yaml لتخصيص السلوك الافتراضي:
# config.yaml
target: example.com
threads: 20
timeout: 60
deep_scan: true
output:
format: json
file: results.json
ثم قم بتشغيل الأداة باستخدام ملف التكوين:
kitploit-tool scan --config config.yaml
متغيرات البيئة
| المتغير | الوصف | القيمة الافتراضية |
|---|---|---|
KITPLOIT_TARGET | الهدف الافتراضي | لا يوجد |
KITPLOIT_THREADS | عدد الخيوط الافتراضي | 10 |
KITPLOIT_TIMEOUT | المهلة الافتراضية | 30 |
KITPLOIT_OUTPUT | ملف الإخراج الافتراضي | stdout |
KITPLOIT_VERBOSE | تمكين الإخراج المفصل | false |
واجهة برمجة التطبيقات (API)
الاستخدام الأساسي لواجهة Python API
from kitploit_tool import Scanner
# إنشاء مثيل الماسح الضوئي
scanner = Scanner(target="example.com")
# تشغيل الفحص
results = scanner.scan()
# معالجة النتائج
for result in results:
print(f"المنفذ: {result.port}, الحالة: {result.status}")
الاستخدام المتقدم
from kitploit_tool import Scanner, ScanConfig
# تكوين الفحص
config = ScanConfig(
threads=20,
timeout=60,
deep_scan=True
)
# إنشاء الماسح الضوئي مع التكوين
scanner = Scanner(target="example.com", config=config)
# تشغيل الفحص مع معالجات الأحداث
scanner.on("port_found", lambda port: print(f"تم العثور على منفذ: {port}"))
scanner.on("scan_complete", lambda results: print(f"اكتمل الفحص: {len(results)} نتيجة"))
results = scanner.scan()
معالجة الأخطاء
from kitploit_tool import Scanner, ScanError
try:
scanner = Scanner(target="example.com")
results = scanner.scan()
except ScanError as e:
print(f"فشل الفحص: {e}")
except Exception as e:
print(f"حدث خطأ غير متوقع: {e}")
المساهمة
نرحب بالمساهمات! يرجى اتباع هذه الإرشادات:
إعداد بيئة التطوير
# استنساخ المستودع
git clone https://github.com/yourusername/kitploit-tool.git
cd kitploit-tool
# إنشاء بيئة افتراضية
python3 -m venv venv
source venv/bin/activate
# تثبيت تبعيات التطوير
pip install -r requirements-dev.txt
# تثبيت خطافات pre-commit
pre-commit install
تشغيل الاختبارات
# تشغيل جميع الاختبارات
pytest
# تشغيل الاختبارات مع التغطية
pytest --cov=kitploit_tool tests/
# تشغيل اختبار محدد
pytest tests/test_scanner.py::test_basic_scan
إرشادات الكود
- اتبع دليل نمط PEP 8
- اكتب اختبارات للميزات الجديدة
- قم بتحديث الوثائق حسب الحاجة
- استخدم رسائل commit ذات معنى
عملية طلب السحب (Pull Request)
- قم بعمل fork للمستودع
- أنشئ فرعًا للميزة (
git checkout -b feature/amazing-feature) - قم بعمل commit للتغييرات (
git commit -m 'Add amazing feature') - ادفع إلى الفرع (
git push origin feature/amazing-feature) - افتح طلب سحب (Pull Request)
الترخيص
هذا المشروع مرخص بموجب ترخيص MIT - راجع ملف LICENSE للحصول على التفاصيل.
شكر وتقدير
- شكر خاص لجميع المساهمين
- مستوحى من أدوات الأمان مفتوحة المصدر الأخرى
- شكر لمجتمع Kitploit
الدعم
- 📧 البريد الإلكتروني: [email protected]
- 🐛 الإبلاغ عن الأخطاء: GitHub Issues
- 💬 المناقشات: GitHub Discussions
- 📖 الوثائق: https://kitploit-tool.readthedocs.io
إخلاء المسؤولية
هذه الأداة مخصصة لأغراض الاختبار الأمني المصرح به فقط. يجب عليك الحصول على إذن كتابي صريح قبل اختبار أي نظام لا تملكه. قد يكون الاستخدام غير المصرح به غير قانوني. المؤلفون غير مسؤولين عن أي سوء استخدام أو أضرار ناجمة عن هذه الأداة.```json { "config_id": "sample", "messages": [{ "role":"user", "content":"Hello! What can you do for me?" }] }
نموذج الإخراج:```json
{"role": "assistant", "content": "Hi! How can I help you?"}
Docker
لبدء خادم guardrails، يمكنك أيضًا استخدام حاوية Docker. توفر مكتبة NeMo Guardrails ملف Dockerfile يمكنك استخدامه لبناء صورة nemoguardrails. لمزيد من المعلومات، راجع قسم استخدام Docker.
التكامل مع LangChain (اختياري)
تكامل LangChain اختياري. لتمكينه، عيّن متغير البيئة NEMOGUARDRAILS_LLM_FRAMEWORK=langchain أو استدعِ set_default_framework("langchain"). ثم ثبّت حزم LangChain التي يتطلبها إعدادك. بعد تمكين التكامل، يمكنك تغليف إعداد guardrails حول سلسلة LangChain (أو أي Runnable)، ويمكنك استدعاء سلسلة LangChain من داخل إعداد guardrails. لمزيد من المعلومات، راجع وثائق تكامل LangChain.
التقييم
يُعدّ تقييم سلامة تطبيق محادثة قائم على LLM مهمة معقدة ولا يزال سؤالًا بحثيًا مفتوحًا. لدعم التقييم السليم، توفر مكتبة NeMo Guardrails ما يلي:
- أداة تقييم، أي
nemoguardrails evaluate، مع دعم rails الموضوعية، والتحقق من الحقائق، والإشراف (كسر الحماية وإشراف المخرجات) والهلوسة. - تقارير نموذجية لفحص ثغرات LLM، مثل ABC Bot - نتائج فحص ثغرات LLM
كيف يختلف هذا؟
هناك طرق عديدة يمكن بها إضافة guardrails إلى تطبيق محادثة قائم على LLM. على سبيل المثال: نقاط نهاية الإشراف الصريحة (مثل OpenAI، ActiveFence، PolicyAI)، وسلاسل النقد (مثل constitutional chain)، وتحليل المخرجات (مثل guardrails.ai)، وguardrails الفردية (مثل LLM-Guard)، وكشف الهلوسة لتطبيقات RAG (مثل Got It AI، Patronus Lynx).
تهدف مكتبة NeMo Guardrails إلى توفير مجموعة أدوات مرنة يمكنها دمج كل هذه الأساليب التكميلية في طبقة guardrails متماسكة لـ LLM. على سبيل المثال، توفر مجموعة الأدوات تكاملًا جاهزًا مع ActiveFence وPolicyAI وAlignScore وسلاسل LangChain.
على حد علمنا، تعد مكتبة NeMo Guardrails مجموعة أدوات guardrails الوحيدة التي تقدم أيضًا حلًا لنمذجة الحوار بين المستخدم وLLM. وهذا يمكّن من جهة القدرة على توجيه الحوار بطريقة دقيقة. ومن جهة أخرى يمكّن من التحكم الدقيق في متى ينبغي استخدام guardrails معينة، مثل استخدام التحقق من الحقائق فقط لأنواع معينة من الأسئلة.
اعرف المزيد
القياس عن بُعد والخصوصية
تجمع مكتبة NVIDIA NeMo Guardrails بيانات قياس عن بُعد مجهولة لمساعدة NVIDIA على فهم أنماط النشر وميزات الأمان الأكثر استخدامًا. تُصدر المكتبة حدث استخدام واحد عند إنشاء LLMRails أو IORails أو Guardrails، ثم تُصدر نبضات دورية من خيط خفي واحد لكل عملية. هذا القياس عن بُعد منفصل عن التتبع لكل طلب. يمكنك تكوين التتبع في إعداد guardrails الخاص بك وإرساله إلى خلفية المراقبة الخاصة بك. القياس عن بُعد هو نبضة مجهولة بسيطة إلى NVIDIA.
لقطة استخدام المجتمع
الاستخدام المجهول الإجمالي عبر إصدارات 0.22.0 و0.23.0 الدقيقة، من 22 مايو إلى 18 أغسطس 2026:



آخر تحديث في 18 أغسطس 2026
يتضمن القياس عن بُعد:
- إصدار المكتبة المثبّت، وإصدار Python، ونظام التشغيل، وسلسلة النظام الأساسي
- إصدار لغة تكوين Colang (1.0 أو 2.x)
- أسماء مزوّدي محركات LLM المُكوَّنين، مثل
openaiأوnimأوnvidia_ai_endpoints، وليس أسماء النماذج أو بيانات الاعتماد أبدًا - أعداد تدفقات rail المُكوَّنة لـ rails الإدخال والإخراج والاسترجاع وإدخال الأدوات وإخراج الأدوات، بالإضافة إلى فئات rail النشطة
- أسماء ميزات المكتبة المدمجة النشطة، مثل
jailbreak_detectionأوcontent_safetyأوtopic_safety - عدد تدفقات Colang المعرّفة من المستخدم (العدد فقط، وليس أسماء التدفقات أو محتوياتها أبدًا)
- ما إذا كان التتبع أو البث أو قاعدة معرفة مُكوَّنًا
- كيفية نشر guardrails (
libraryأوapiأو خادمcli) - محرك rails وقت التشغيل المستخدم (
LLMRailsأوIORails) - معرّف UUID عشوائي لكل عملية لربط الأحداث من نفس المثيل. تُنشئه المكتبة في الذاكرة ولا تخزّنه لإعادة استخدامه عبر عمليات إعادة التشغيل، لكنها تضمّنه في سجلات التدقيق وأحداث القياس عن بُعد المُرسَلة
لا يتم جمع أي محتوى من المستخدم في حمولة الحدث. لا تتضمن الحمولة أسماء النماذج أو مفاتيح API أو نقاط النهاية أو المطالبات أو الإكمالات أو أعداد الرموز أو مقاييس كل طلب أو مسارات الملفات أو أسماء المستخدمين أو عناوين IP. تستخدم NVIDIA البيانات بشكل إجمالي لتحديد أولويات العمل الهندسي وستشارك اتجاهات التبني مع المجتمع.
تحاول المكتبة أيضًا كتابة كل حمولة حدث إلى ملف تدقيق محلي في ~/.config/nemoguardrails/usage_stats.json. يخزّن ملف التدقيق حدث JSONL، وليس مغلف القياس عن بُعد الكامل من NVIDIA. عمليات كتابة التدقيق تبذل قصارى جهدها، ويستمر إرسال القياس عن بُعد حتى إذا فشلت الكتابة المحلية للتدقيق.
عيّن أيًا من الخيارات التالية لتعطيل القياس عن بُعد:```bash export NEMO_GUARDRAILS_NO_USAGE_STATS=1
or
export DO_NOT_TRACK=1
or
mkdir -p ~/.config/nemoguardrails && touch ~/.config/nemoguardrails/do_not_track
قم بتعيين إلغاء الاشتراك قبل بدء تشغيل مكتبة NVIDIA NeMo Guardrails. تغيير متغيرات البيئة أو إنشاء `do_not_track` بعد بدء القياس عن بُعد لا يوقف خيط نبضات القلب قيد التشغيل بالفعل.
راجع [docs/telemetry.md](https://docs.nvidia.com/nemo/guardrails/latest/telemetry.html) للحصول على المخطط الكامل والأوصاف التفصيلية لكل حقل.
يمكنك إلغاء الاشتراك في جمع القياس عن بُعد في أي وقت. ينطبق إلغاء الاشتراك فقط على جمع البيانات بواسطة مكتبة NVIDIA NeMo Guardrails نفسها.
لنقاط النهاية الخارجية شروط وممارسات خصوصية منفصلة. يمكن لمكتبة NVIDIA NeMo Guardrails استخدام نقاط نهاية الاستدلال مثل NVIDIA Build (`build.nvidia.com`). إذا كنت تستخدم NVIDIA Build أو أي نقطة نهاية خارجية أخرى، فإن شروط الخدمة وممارسات الخصوصية لتلك النقطة تنطبق بشكل مستقل عن المكتبة. أي إلغاء اشتراك في القياس عن بُعد في مكتبة NVIDIA NeMo Guardrails لا يمتد إلى نقطة النهاية التي تختارها. NVIDIA Build مخصص للتقييم والاختبار فقط ويجب عدم استخدامه في بيئات الإنتاج. لا ترسل معلومات سرية أو بيانات شخصية عند استخدام NVIDIA Build.
## دعوة المجتمع للمساهمة
تُعد قواعد الحماية النموذجية الموجودة في المستودع نقاط انطلاق ممتازة. ندعو المجتمع بحماس للمساهمة في جعل قوة نماذج اللغة الكبيرة الموثوقة والآمنة والمأمونة متاحة للجميع. للحصول على إرشادات حول إعداد بيئة تطوير وكيفية المساهمة في مكتبة NeMo Guardrails، راجع [إرشادات المساهمة](https://github.com/nvidia-nemo/guardrails/blob/develop/CONTRIBUTING.md).
## الترخيص
مكتبة NeMo Guardrails مرخّصة بموجب [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0).
## كيفية الاستشهاد
إذا كنت تستخدم مكتبة NeMo Guardrails، فاستشهد بـ [ورقة EMNLP 2023](https://aclanthology.org/2023.emnlp-demo.40) التي تقدّمها.```bibtex
@inproceedings{rebedea-etal-2023-nemo,
title = "{N}e{M}o Guardrails: A Toolkit for Controllable and Safe {LLM} Applications with Programmable Rails",
author = "Rebedea, Traian and
Dinu, Razvan and
Sreedhar, Makesh Narsimhan and
Parisien, Christopher and
Cohen, Jonathan",
editor = "Feng, Yansong and
Lefever, Els",
booktitle = "Proceedings of the 2023 Conference on Empirical Methods in Natural Language Processing: System Demonstrations",
month = dec,
year = "2023",
address = "Singapore",
publisher = "Association for Computational Linguistics",
url = "https://aclanthology.org/2023.emnlp-demo.40",
doi = "10.18653/v1/2023.emnlp-demo.40",
pages = "431--445",
}