Skip to content

تقييم المسار بثلاثة أجزاء (eval_trace)

يقسّم عرض eval_trace مسار وكيل واحد إلى ثلاثة أجزاء متزامنة (الاستدلال، واستدعاءات الدوال، والإجابة النهائية) حتى يرى المُقيِّم ما فكّر فيه الوكيل وما فعله وما أنتجه في لمحة واحدة. مُصمَّم للتقييم المستمر.

يقسّم عرض eval_trace مسار وكيل واحد إلى ثلاثة أجزاء متزامنة: الاستدلال، واستدعاءات الدوال، والإجابة النهائية. يرى المُقيِّم ما فكّر فيه الوكيل وما فعله وما أنتجه جنبًا إلى جنب، وهو ما يناسب التقييم المستمر حيث تصل مسارات جديدة ويجب الحكم عليها بسرعة.

على عكس عرض مسار الوكيل العمودي الذي يكدّس مسارًا متشابكًا في عمود واحد، يفكّك eval_trace مسارًا واحدًا إلى مكوّناته الدلالية الثلاثة، فتصبح بنية سلوك الوكيل مرئية دون الحاجة إلى التمرير.

عرض eval_trace بثلاثة أجزاءمسار وكيل مقسَّم إلى أجزاء الاستدلال واستدعاءات الدوال والإجابة النهائية

بداية سريعة

شغّل المثال المرفق من جذر المستودع:

bash
python potato/flask_server.py start examples/agent-traces/continuous-eval/config.yaml -p 8000

يأتي المثال أيضًا بنسخة لمراقبة الدليل (config-watch.yaml) لاستيعاب ملفات المسارات المُلقاة فيه.

الإعداد

yaml
instance_display:
  layout:
    direction: vertical      # task header above the (internally horizontal) panes
    gap: 12px
  fields:
    - key: task_description
      type: text
      label: "Task"
 
    - key: trace             # the field holding the agent trace
      type: eval_trace
      label: "Agent Trace"
      display_options:
        pane_labels: ["Reasoning", "Function Calls", "Final Answer"]
        show_step_numbers: true
        collapse_long_outputs: true
        max_output_lines: 12
        link_steps: true

الخيارات

الخيارالافتراضيالوصف
pane_labels["Reasoning", "Function Calls", "Final Answer"]عناوين الأجزاء الثلاثة.
show_step_numberstrueإظهار أرقام الخطوات #N على بطاقات الاستدلال والاستدعاء.
collapse_long_outputstrueطيّ نتائج الأدوات الأطول من max_output_lines في كتلة قابلة للتوسيع.
max_output_lines20عتبة عدد الأسطر لطيّ النتائج.
link_stepstrueالتظليل عبر الأجزاء: النقر على بطاقة يُظلّل البطاقات المرتبطة بها في الأجزاء الأخرى.
compactfalseحشو وتباعد أكثر إحكامًا.

صيغة البيانات

يقبل eval_trace صيغ المسار نفسها التي يقبلها عرض مسار الوكيل. الأكثر شيوعًا هو قائمة من خطوات {speaker, text}:

json
{
  "id": "eval_001",
  "task_description": "Find a vegan lasagna recipe.",
  "trace": [
    {"speaker": "Agent (Thought)",      "text": "I'll search for a highly-rated recipe."},
    {"speaker": "Agent (Action)",       "text": "web_search(query='vegan lasagna')"},
    {"speaker": "Environment",          "text": "10 results found..."},
    {"speaker": "Agent (Final Answer)", "text": "Here's a great recipe: ..."}
  ]
}

كما أن صيغتَي thought/action/observation وstep_type/content مدعومتان أيضًا.

كيف تنطبق الخطوات على الأجزاء

الخطوة (يُستنتج النوع من speaker أو label)الجزء
Thought، الاستدلال، التخطيط، systemالاستدلال
Action، tool، function، callاستدعاءات الدوال (يتداخل Environment/النتيجة المجاورة أسفل الاستدعاء)
Final Answer، send_message، respond، finish، أو آخر إجراء إن لم يطابق أيٌّ منهاالإجابة النهائية

لتعيين إجابة نهائية صريحة، أنهِ المسار بخطوة يطابق speaker الخاص بها نمط إجابة (مثل "Agent (Final Answer)") أو بإجراء send_message(...).

ربط الخطوات

تُجمَّع الخطوات في دورات منطقية: تتشارك فكرةٌ والاستدعاءاتُ التي تطلقها فهرس الخطوة نفسه. مع link_steps: true، يؤدي النقر على أي بطاقة إلى تظليل كل بطاقة تتشارك ذلك الفهرس عبر الأجزاء، فيمكنك تتبّع فكرة وصولًا إلى الإجراء الذي أنتجته.

التقييم المستمر

اقرن eval_trace بأي من وسائل الاستيعاب أثناء التشغيل في Potato حتى تُقيَّم المسارات فور وصولها:

  • Webhook وSSE — يكشف trace_ingestion: {enabled: true} نقطة نهاية webhook ويبثّ المسارات الجديدة إلى المُعلِّقين.
  • استطلاع Langfuse — أضف مصدر langfuse ضمن trace_ingestion.sources.
  • مراقبة الدليل — يستوعب data_directory مع watch_data_directory: true ملفات .json و.jsonl المُلقاة.

تصبح المسارات المُضافة أثناء التشغيل قابلة للإسناد إلى المُعلِّقين فورًا. اجمع هذا مع قائمة الفرز لدفع المسارات الخاطئة أو منخفضة الدرجات إلى المقدمة.

ملاحظات وقيود

  • eval_trace للعرض فقط؛ فهو لا يجمع أي تعليقات بنفسه. اقرنه بمخططات تعليق مثل reasoning_quality أو tool_use_correctness أو answer_helpfulness، كما في المثال.
  • تعليق النطاق غير مدعوم في eval_trace. استخدم عرض مسار وكيل أو عرض code إذا احتجت إلى تظليل النطاقات على نص المسار.

مواضيع ذات صلة

للاطلاع على تفاصيل التنفيذ، راجع وثائق المصدر.