تقييم المسار بثلاثة أجزاء (eval_trace)
يقسّم عرض eval_trace مسار وكيل واحد إلى ثلاثة أجزاء متزامنة (الاستدلال، واستدعاءات الدوال، والإجابة النهائية) حتى يرى المُقيِّم ما فكّر فيه الوكيل وما فعله وما أنتجه في لمحة واحدة. مُصمَّم للتقييم المستمر.
يقسّم عرض eval_trace مسار وكيل واحد إلى ثلاثة أجزاء متزامنة: الاستدلال، واستدعاءات الدوال، والإجابة النهائية. يرى المُقيِّم ما فكّر فيه الوكيل وما فعله وما أنتجه جنبًا إلى جنب، وهو ما يناسب التقييم المستمر حيث تصل مسارات جديدة ويجب الحكم عليها بسرعة.
على عكس عرض مسار الوكيل العمودي الذي يكدّس مسارًا متشابكًا في عمود واحد، يفكّك eval_trace مسارًا واحدًا إلى مكوّناته الدلالية الثلاثة، فتصبح بنية سلوك الوكيل مرئية دون الحاجة إلى التمرير.
مسار وكيل مقسَّم إلى أجزاء الاستدلال واستدعاءات الدوال والإجابة النهائية
بداية سريعة
شغّل المثال المرفق من جذر المستودع:
python potato/flask_server.py start examples/agent-traces/continuous-eval/config.yaml -p 8000يأتي المثال أيضًا بنسخة لمراقبة الدليل (config-watch.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_numbers | true | إظهار أرقام الخطوات #N على بطاقات الاستدلال والاستدعاء. |
collapse_long_outputs | true | طيّ نتائج الأدوات الأطول من max_output_lines في كتلة قابلة للتوسيع. |
max_output_lines | 20 | عتبة عدد الأسطر لطيّ النتائج. |
link_steps | true | التظليل عبر الأجزاء: النقر على بطاقة يُظلّل البطاقات المرتبطة بها في الأجزاء الأخرى. |
compact | false | حشو وتباعد أكثر إحكامًا. |
صيغة البيانات
يقبل eval_trace صيغ المسار نفسها التي يقبلها عرض مسار الوكيل. الأكثر شيوعًا هو قائمة من خطوات {speaker, text}:
{
"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إذا احتجت إلى تظليل النطاقات على نص المسار.
مواضيع ذات صلة
- قائمة الفرز المبنية على الإشارات — تحديد أولوية المسارات الواردة التي تُراجَع
- تحرير المسارات لأجل SFT/DPO — تحويل التصحيحات إلى بيانات تدريب
- التعليق الوكيلي — إعداد حقول العرض والاستيعاب
للاطلاع على تفاصيل التنفيذ، راجع وثائق المصدر.