حواجز NeMo المتقدمة

بنية NeMo Guardrails

3 دقيقة للقراءة

NVIDIA NeMo Guardrails هو إطار عمل مفتوح المصدر لإضافة حواجز قابلة للبرمجة لتطبيقات LLM. تم إصداره في 2023، ويوفر نهجاً تصريحياً للتحكم في سلوك LLM باستخدام Colang، لغة خاصة بالمجال لتدفقات الحوار.

المكونات الأساسية

┌─────────────────────────────────────────────────────┐
│                 NeMo Guardrails                      │
├─────────────────────────────────────────────────────┤
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐  │
│  │  قواعد     │  │  قواعد     │  │  قواعد     │  │
│  │  المدخلات  │  │  الحوار    │  │  المخرجات  │  │
│  └─────────────┘  └─────────────┘  └─────────────┘  │
├─────────────────────────────────────────────────────┤
│  ┌─────────────────────────────────────────────────┐│
│  │           محرك تشغيل Colang                      ││
│  └─────────────────────────────────────────────────┘│
├─────────────────────────────────────────────────────┤
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐  │
│  │  موفر      │  │  مكتبة     │  │  قاعدة     │  │
│  │  LLM       │  │  الإجراءات │  │  المعرفة   │  │
│  └─────────────┘  └─────────────┘  └─────────────┘  │
└─────────────────────────────────────────────────────┘

التثبيت والإعداد

pip install nemoguardrails

هيكل المشروع

my_guardrails_app/
├── config/
│   ├── config.yml          # التكوين الرئيسي
│   ├── rails/
│   │   ├── input.co        # قواعد المدخلات (Colang)
│   │   ├── output.co       # قواعد المخرجات
│   │   └── dialog.co       # تدفقات الحوار
│   ├── prompts/
│   │   └── prompts.yml     # المحثات المخصصة
│   └── actions/
│       └── custom.py       # إجراءات Python
└── main.py

التكوين الأساسي

# config.yml
models:
  - type: main
    engine: openai
    model: gpt-4o

rails:
  input:
    flows:
      - self check input      # التحقق المدمج من المدخلات
      - check jailbreak       # اكتشاف كسر الحماية

  output:
    flows:
      - self check output     # التحقق المدمج من المخرجات
      - check hallucination   # التحقق من الحقائق

  dialog:
    user_messages:
      embeddings_only: true   # استخدام التضمينات للمطابقة

التنفيذ الأساسي

from nemoguardrails import LLMRails, RailsConfig

# تحميل التكوين
config = RailsConfig.from_path("./config")

# إنشاء مثيل القواعد
rails = LLMRails(config)

# توليد استجابة مع الحواجز
async def chat(user_message: str) -> str:
    response = await rails.generate_async(
        messages=[{
            "role": "user",
            "content": user_message
        }]
    )
    return response["content"]

# الاستخدام المتزامن
def chat_sync(user_message: str) -> str:
    response = rails.generate(
        messages=[{
            "role": "user",
            "content": user_message
        }]
    )
    return response["content"]

أنواع القواعد

قواعد المدخلات

معالجة والتحقق من صحة مدخلات المستخدم قبل LLM:

# input.co
define flow self check input
  $allowed = execute check_input_safety(user_message=$user_message)

  if not $allowed
    bot refuse to respond
    stop

قواعد المخرجات

التحقق من صحة وتعديل ردود LLM:

# output.co
define flow self check output
  $safe = execute check_output_safety(bot_message=$bot_message)

  if not $safe
    bot apologize and provide safe response

قواعد الحوار

التحكم في تدفق المحادثة:

# dialog.co
define user ask about pricing
  "How much does it cost?"
  "What's the price?"
  "Pricing information"

define flow handle pricing question
  user ask about pricing
  bot provide pricing info

قواعد السلامة المدمجة

يتضمن NeMo قواعد مبنية مسبقاً لأنماط السلامة الشائعة:

# config.yml
rails:
  input:
    flows:
      - self check input
      - check jailbreak
      - mask sensitive data     # إخفاء PII

  output:
    flows:
      - self check output
      - check facts             # التحقق من الحقائق
      - check hallucination

تسجيل الإجراءات

from nemoguardrails.actions import action

@action(name="check_input_safety")
async def check_input_safety(user_message: str) -> bool:
    """فحص سلامة المدخلات المخصص."""
    # التكامل مع مصنف السلامة الخاص بك
    classifier = FastToxicityClassifier()
    result = classifier.classify(user_message)
    return result["toxic"] < 0.5

@action(name="get_user_context")
async def get_user_context(user_id: str) -> dict:
    """استرجاع سياق المستخدم للتخصيص."""
    # جلب من قاعدة البيانات
    return {"tier": "premium", "region": "us"}

# التسجيل مع القواعد
rails.register_action(check_input_safety)
rails.register_action(get_user_context)

دعم البث

from nemoguardrails import LLMRails

rails = LLMRails(config)

async def stream_response(user_message: str):
    """بث الاستجابة مع الحواجز."""
    async for chunk in rails.stream_async(
        messages=[{"role": "user", "content": user_message}]
    ):
        yield chunk["content"]

# الاستخدام
async for token in stream_response("أخبرني عن Python"):
    print(token, end="", flush=True)

تكوين الأداء

# config.yml
models:
  - type: main
    engine: openai
    model: gpt-4o

  # نموذج أسرع لفحوصات السلامة
  - type: self_check
    engine: openai
    model: gpt-4o-mini

# التخزين المؤقت للفحوصات المتكررة
cache:
  enabled: true
  type: redis
  url: redis://localhost:6379

# المعالجة المتوازية
streaming:
  enabled: true
  chunk_size: 20

رؤية معمارية: يستخدم NeMo Guardrails نهج LLM مزدوج افتراضياً—نموذج رئيسي للردود ونموذج منفصل لفحوصات السلامة. قم بتكوين نموذج أسرع للفحوصات لتقليل حمل التأخير.

التالي: إتقان Colang 2.0 لتدفقات الحوار المخصصة. :::

اختبار

الوحدة 4: حواجز NeMo المتقدمة

خذ الاختبار
نشرة أسبوعية مجانية

ابقَ على مسار النيرد

بريد واحد أسبوعياً — دورات، مقالات معمّقة، أدوات، وتجارب ذكاء اصطناعي.

بدون إزعاج. إلغاء الاشتراك في أي وقت.