Evaluation

شناسایی توهم در مدل‌های زبانی بزرگ: یک راهنمای عملی

پیشرفت سریع مدل‌های زبانی بزرگ (LLMs) تولید محتوا را متحول کرده است، اما چالشی حیاتی را نیز به همراه داشته است: توهم. در زمینه ارزیابی هوش مصنوعی، توهم زمانی رخ می‌دهد که مدل اطلاعاتی را تولید کند که از نظر فکتی نادرست، بی‌معنی یا بدون پشتیبانی از بافت ارائه‌شده باشد. برای توسعه‌دهندگانی که در حال ساخت اپلیکیشن‌های هوش مصنوعی در سطح تولید هستند، شناسایی این خطاها اختیاری نیست؛ بلکه برای حفظ اعتماد و قابلیت اطمینان ضروری است.

چرا شناسایی توهم اهمیت دارد

توهم‌ها می‌توانند در دو شکل اصلی ظاهر شوند. شکل اول وفاداری است، جایی که مدل اسناد منبع ارائه‌شده را نادیده می‌گیرد یا با آن‌ها در تضاد است (رایج در سیستم‌های RAG). شکل دوم صحت فکتی است، جایی که مدل اطلاعاتی را تولید می‌کند که در دنیای واقعی نادرست است، صرف‌نظر از بافت ورودی. بدون مکانیزم‌های شناسایی قوی، اپلیکیشن‌ها ممکن است اطلاعات نادرست را گسترش دهند که منجر به بی‌اعتمادی کاربران و مسئولیت‌های بالقوه می‌شود.

استراتژی‌های شناسایی

هیچ راه‌حل واحد و جادویی برای شناسایی توهم وجود ندارد. به جای آن، یک رویکرد چندلایه توصیه می‌شود:

  1. بررسی‌های پایه‌گذاری (Grounding): تأیید اینکه هر ادعایی در خروجی قابل ردیابی به یک جمله خاص در بافت ورودی است.
  2. بررسی‌های سازگاری: اطمینان از اینکه پاسخ مدل با بیان‌های قبلی آن یا یک پایگاه دانش شناخته‌شده سازگار است.
  3. راستی‌آزمایی فکتی خارجی: استفاده از APIها یا گراف‌های دانش برای تأیید فکت‌های حیاتی.

نمونه کد: راستی‌آزمایی ساده پایه‌گذاری

یکی از مؤثرترین راه‌ها برای شناسایی توهم‌های وفاداری، این است که خود LLM را بخواهید خروجی خود را در مقابل بافت راستی‌آزمایی کند. این تکنیک که اغلب «خودسازگاری» یا «نقد» نامیده می‌شود، به طور شگفت‌انگیزی خوب کار می‌کند.


import json

def check_hallucination(context: str, response: str, llm_client) -> dict:
    """
    Uses an LLM to check if the response is fully supported by the context.
    """
    prompt = f"""
    Context:
    {context}

    Response:
    {response}

    Task:
    Determine if the Response is fully supported by the Context.
    If any part of the Response is not found in the Context or contradicts it, mark it as a hallucination.
    
    Return a JSON object with keys:
    - is_hallucination (boolean)
    - explanation (string)
    """

    result = llm_client.chat(prompt)
    try:
        return json.loads(result)
    except json.JSONDecodeError:
        return {"is_hallucination": True, "explanation": "Parsing error in verification step"}

# Example usage
context = "The capital of France is Paris."
response = "The capital of France is Paris, and it is famous for the Eiffel Tower."
result = check_hallucination(context, response, your_llm_api)

if result["is_hallucination"]:
    print(f"Hallucination detected: {result['explanation']}")
else:
    print("Response is grounded in context.")

توجه داشته باشید که در مثال بالا، اگرچه بند دوم از نظر فکتی در دنیای واقعی درست است، اما در بافت وجود ندارد. یک سیستم RAG سخت‌گیر باید این را به عنوان یک خطای وفاداری علامت‌گذاری کند، زیرا مدل اطلاعاتی را «توهم» کرده است که ارائه نشده بود.

نکات پیاده‌سازی عملی

  • آستانه‌بندی: فقط به بررسی‌های بولین اکتفا نکنید. از امتیازات اعتماد LLM راستی‌آزمایی برای فیلتر کردن تولیدات با اعتماد پایین استفاده کنید.
  • تنوع: چندین پاسخ تولید کنید و برای سازگاری بررسی کنید. اگر مدل سه پاسخ مختلف به یک سؤال بدهد، احتمالاً مطمئن نیست و ممکن است در حال توهم باشد.
  • انسان در حلقه (Human-in-the-Loop): برای اپلیکیشن‌های پرریسک، توهم‌های علامت‌گذاری شده را قبل از انتشار به بازبینان انسانی ارجاع دهید.

نتیجه‌گیری

شناسایی توهم یک حوزه در حال تکامل است که نیازمند ترکیبی از بررسی‌های خودکار و طراحی دقیق سیستم است. با پیاده‌سازی راستی‌آزمایی پایه‌گذاری، بررسی‌های سازگاری و اعتبارسنجی خارجی، توسعه‌دهندگان می‌توانند ریسک گسترش اطلاعات نادرست توسط اپلیکیشن‌های هوش مصنوعی خود را به طور قابل توجهی کاهش دهند. با پرامپت‌های خود راستی‌آزمایی ساده شروع کنید و به تدریج با رشد نیازهای اپلیکیشن خود، خط لوله‌های ارزیابی پیچیده‌تری بسازید. به یاد داشته باشید، در دنیای LLMها، اعتماد از طریق ارزیابی دقیق کسب می‌شود.

Share: