حواجز 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 لتدفقات الحوار المخصصة. :::