معالجة الأخطاء والتعافي
التحقق من المخرجات
3 دقيقة للقراءة
لا تثق بمخرجات LLM بشكل أعمى. التحقق يضمن أن استجابات الوكيل آمنة ودقيقة ومنسقة بشكل صحيح قبل وصولها للمستخدمين.
طبقات التحقق
استجابة LLM ← فحص التنسيق ← سلامة المحتوى ← التحقق الواقعي ← قواعد العمل ← المستخدم
التحقق من المخطط
تأكد من أن المخرجات تطابق البنية المتوقعة:
from pydantic import BaseModel, validator
from typing import List, Optional
class AgentResponse(BaseModel):
answer: str
confidence: float
sources: List[str]
tool_calls: Optional[List[dict]] = None
@validator('confidence')
def confidence_range(cls, v):
if not 0 <= v <= 1:
raise ValueError('الثقة يجب أن تكون بين 0 و 1')
return v
@validator('answer')
def answer_not_empty(cls, v):
if not v.strip():
raise ValueError('الإجابة لا يمكن أن تكون فارغة')
return v
def validate_response(raw_output):
try:
return AgentResponse.parse_raw(raw_output)
except ValidationError as e:
return {"error": "تنسيق استجابة غير صالح", "details": str(e)}
فحوصات سلامة المحتوى
class ContentValidator:
def __init__(self):
self.blocked_patterns = [
r'\b(password|secret|api[_-]?key)\s*[:=]\s*\S+',
r'\b\d{16}\b', # أنماط بطاقات الائتمان
r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b' # البريد الإلكتروني
]
def check_pii_leakage(self, text):
"""التحقق من كشف البيانات الحساسة عن طريق الخطأ"""
for pattern in self.blocked_patterns:
if re.search(pattern, text, re.IGNORECASE):
return False, "تم اكتشاف بيانات حساسة محتملة"
return True, None
def check_harmful_content(self, text):
"""استخدام API الإشراف أو المصنف"""
result = moderation_api.check(text)
if result.flagged:
return False, f"تم تمييز المحتوى: {result.categories}"
return True, None
الاتساق الواقعي
التحقق من الادعاءات مقابل الحقائق المعروفة:
class FactChecker:
def __init__(self, knowledge_base):
self.kb = knowledge_base
def verify_claims(self, response, context):
"""مقارنة ادعاءات الاستجابة مع سياق المصدر"""
claims = extract_claims(response)
verified = []
for claim in claims:
# التحقق إذا كان الادعاء مدعوماً بالسياق
support = self.kb.find_support(claim, context)
if support.score > 0.8:
verified.append({"claim": claim, "status": "موثق"})
elif support.score > 0.5:
verified.append({"claim": claim, "status": "جزئي"})
else:
verified.append({"claim": claim, "status": "غير موثق"})
return verified
def add_verification_note(self, response, verification):
"""إضافة ملاحظات التحقق للاستجابة"""
unverified = [v for v in verification if v["status"] == "غير موثق"]
if unverified:
note = f"\n\n⚠️ {len(unverified)} ادعاء(ات) لم يمكن التحقق منها مقابل المصادر."
return response + note
return response
التحقق من منطق العمل
class BusinessValidator:
def __init__(self, rules):
self.rules = rules
def validate(self, response, context):
errors = []
for rule in self.rules:
if not rule.check(response, context):
errors.append(rule.error_message)
return len(errors) == 0, errors
# قواعد مثال
rules = [
Rule(
name="price_sanity",
check=lambda r, c: not contains_price(r) or price_in_range(r, 0, 10000),
error_message="السعر خارج النطاق المقبول"
),
Rule(
name="date_validity",
check=lambda r, c: not contains_date(r) or date_is_valid(r),
error_message="تاريخ غير صالح في الاستجابة"
),
Rule(
name="no_competitors",
check=lambda r, c: not mentions_competitors(r),
error_message="الاستجابة تذكر منتجات المنافسين"
)
]
خط أنابيب التحقق
دمج جميع المدققات:
class ValidationPipeline:
def __init__(self):
self.validators = [
("schema", SchemaValidator()),
("safety", ContentValidator()),
("facts", FactChecker(knowledge_base)),
("business", BusinessValidator(business_rules))
]
def validate(self, response, context):
results = {"passed": True, "checks": []}
for name, validator in self.validators:
is_valid, details = validator.validate(response, context)
results["checks"].append({
"name": name,
"passed": is_valid,
"details": details
})
if not is_valid:
results["passed"] = False
return results
def process(self, response, context):
validation = self.validate(response, context)
if not validation["passed"]:
# الخيار 1: إعادة التوليد
# الخيار 2: إرجاع نسخة منقحة
# الخيار 3: إرجاع مع تحذيرات
return self.handle_failure(response, validation)
return response
أفضل الممارسات
| تحقق من | لماذا |
|---|---|
| تنسيق المخرج | منع أخطاء التحليل |
| سلامة المحتوى | حماية المستخدمين |
| الدقة الواقعية | بناء الثقة |
| قواعد العمل | الحفاظ على الامتثال |
التالي: تعلم استراتيجيات التصحيح لأنظمة الوكلاء. :::