التعمق في LangSmith

تقييم المحادثات متعددة الأدوار

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

المحادثات الحقيقية تمتد عبر أدوار متعددة. تقييم استجابة واحدة فقط يفوّت السياق والتماسك وتدفق المحادثة. LangSmith يدعم تقييم خيوط المحادثة الكاملة.

لماذا التقييم متعدد الأدوار؟

دور واحدأدوار متعددة
يقيّم استجابة واحدةيقيّم تدفق المحادثة
يفوّت مشاكل السياقيكتشف فقدان السياق
لا يكتشف التناقضاتيجد عدم الاتساق
يتجاهل أهداف المحادثةيقيس إكمال الهدف

هيكل المحادثة

تتبع محادثة متعددة الأدوار:

خيط المحادثة
├── الدور 1: المستخدم يطرح سؤالاً
│   └── المساعد يستجيب
├── الدور 2: المستخدم يتابع
│   └── المساعد يستجيب (باستخدام السياق)
├── الدور 3: المستخدم يطلب توضيحاً
│   └── المساعد يستجيب (محافظاً على التماسك)
└── الدور 4: المستخدم يؤكد الحل
    └── المساعد يختم بشكل مناسب

تتبع المحادثات

استخدم معرّفات الخيوط لربط أدوار المحادثة:

from langsmith import traceable
import uuid

@traceable
def chat(messages: list, thread_id: str) -> str:
    response = client.chat.completions.create(
        model="gpt-5.4-mini",
        messages=messages
    )
    return response.choices[0].message.content

# نفس thread_id يربط جميع الأدوار
thread_id = str(uuid.uuid4())

# الدور 1
response1 = chat(
    [{"role": "user", "content": "أحتاج إلى إلغاء طلبي"}],
    thread_id=thread_id
)

# الدور 2 - يتضمن السجل
response2 = chat(
    [
        {"role": "user", "content": "أحتاج إلى إلغاء طلبي"},
        {"role": "assistant", "content": response1},
        {"role": "user", "content": "طلب #12345"}
    ],
    thread_id=thread_id
)

معايير التقييم متعدد الأدوار

قيّم المحادثات على:

1. الاحتفاظ بالسياق

هل يتذكر المساعد الأدوار السابقة؟

def evaluate_context_retention(conversation: list) -> dict:
    # تحقق إذا كانت الاستجابات اللاحقة تشير للسياق السابق
    prompt = """
    راجع هذه المحادثة. هل حافظ المساعد على
    السياق من الأدوار السابقة بشكل مناسب؟

    المحادثة: {conversation}

    سجّل 1-5 واشرح.
    """
    return llm_judge(prompt, conversation=conversation)

2. إكمال الهدف

هل حققت المحادثة غرضها؟

هدف المحادثةمعايير النجاح
تذكرة دعمالمشكلة حُلت
استعلام معلوماتالسؤال أُجيب بالكامل
إكمال مهمةالإجراء أُكّد
توضيحالفهم تُحقق منه

3. التماسك

لا تناقضات بين الأدوار:

def evaluate_coherence(conversation: list) -> dict:
    prompt = """
    تحقق إذا كان المساعد تناقض مع نفسه
    في أي نقطة من هذه المحادثة.

    المحادثة: {conversation}

    أرجع: متماسك (نعم/لا)، التناقضات المُكتشفة.
    """
    return llm_judge(prompt, conversation=conversation)

4. الطول المناسب

المحادثة لا يجب أن تكون طويلة بدون داعٍ:

  • هل حُلت في عدد معقول من الأدوار؟
  • هل كانت هناك تبادلات زائدة؟
  • هل اضطر المستخدم لتكرار نفسه؟

بناء مجموعات بيانات متعددة الأدوار

هيكل بيانات التقييم الخاصة بك:

conversations:
  - id: "conv-001"
    scenario: "إلغاء طلب"
    turns:
      - role: user
        content: "أريد إلغاء طلبي"
      - role: assistant
        content: "يمكنني المساعدة في ذلك. ما رقم طلبك؟"
      - role: user
        content: "12345"
      - role: assistant
        content: "تم إلغاء الطلب #12345. الاسترداد خلال 3-5 أيام."
    expected_outcome: "تم إلغاء الطلب بنجاح"
    max_turns: 4

المقاييس الرئيسية

تتبع هذه لجودة المحادثة:

المقياسالوصف
معدل الحل% المحادثات التي تحقق الهدف
متوسط الأدوارالأدوار المطلوبة للحل
معدل التصعيد% التي تحتاج تدخل بشري
الرضاالتعليقات في نهاية المحادثة

نصيحة: ابدأ بأطول محادثاتك—غالباً تكشف أكثر المشاكل مع الاحتفاظ بالسياق.

التالي، سنتعلم كيفية بناء مقيّمين مخصصين وإدارة مجموعات بيانات التقييم في LangSmith. :::

مراجعة سريعة: كيف تجد هذا الدرس؟

اختبار

الوحدة 3: التعمق في LangSmith

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

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

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

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