Skip to content

تحرير المسارات من أجل SFT/DPO

يعيد المُعلِّقون كتابة خطوات أثر الوكيل لإصلاح خطوة استدلال خاطئة أو تصحيح استدعاء أداة أو تقوية الإجابة النهائية، ويصدّر Potato كل زوج أصلي/مُصحَّح كأهداف للضبط الدقيق الخاضع للإشراف وأزواج تفضيل DPO.

يتيح مخطط trajectory_edit للمُعلِّقين إعادة كتابة خطوات أثر الوكيل، ويصدّر كل تصحيح كبيانات تدريب. أصلِح خطوة استدلال خاطئة، أو صحِّح استدعاء أداة به خطأ مطبعي، أو قوِّ الإجابة النهائية، وسيحفظ Potato المسار المُصحَّح بجوار المسار الأصلي. ثم يحوّل المُصدِّر trajectory_correction كل زوج (original, corrected) إلى أهداف الضبط الدقيق الخاضع للإشراف (SFT) وأزواج تفضيل تحسين التفضيل المباشر (DPO).

هذا يجعل Potato أداة لإنتاج بيانات التدريب، وليس أداة تقييم فحسب. إنه النظير التحريري للتقييم على مستوى الخطوة: فبدلاً من تقييم المسار، يقوم المُعلِّقون بإصلاحه، ويصبح الإصلاح إشارة تعلُّم.

محرر تصحيح المسار مع فرق مباشرخطوة وكيل معروضة مع نسخة أصلية للقراءة فقط وصندوق مُصحَّح قابل للتحرير مع فرق على مستوى الكلمة

البدء السريع

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

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

كيف يعمل

تُعرَض كل خطوة وكيل كبطاقة تُظهر النص الأصلي (للقراءة فقط) وصندوقًا مُصحَّحًا قابلًا للتحرير ومعبَّأ مسبقًا بالنص الأصلي. عندما يكتب المُعلِّق:

  • يُبرز فرق مباشر على مستوى الكلمة الإضافات (بالأخضر) والحذف (بخط أحمر مشطوب)،
  • تُحصى الكلمات والأحرف التي تغيّرت، و
  • تظهر علامة "تم التحرير" على الحقول المُغيَّرة.

يستعيد زر "إعادة تعيين" النص الأصلي لكل حقل. مع edit_final_answer: true تحصل الإجابة النهائية على محرر خاص بها. لا شيء مطلوب: فالأثر غير المُحرَّر لا ينتج عنه أي زوج تدريب ببساطة.

التهيئة

yaml
annotation_schemes:
  - annotation_type: trajectory_edit
    name: corrected_trajectory
    description: "Fix any wrong steps, then correct the final answer"
    steps_key: steps          # instance field holding the step list
    step_text_key: action     # the default per-step editable field
    editable_fields:          # which fields get an editor
      - action
      # - thought             # add to also edit reasoning
    show_diff: true
    show_edit_distance: true
    allow_reset: true
    require_reason_on_edit: false   # add a per-field "reason" input
    edit_final_answer: true
    final_answer_key: final_answer
الخيارالافتراضيالوصف
steps_keystepsحقل المثيل الذي يحمل قائمة الخطوات.
step_text_keyactionالحقل الافتراضي القابل للتحرير لكل خطوة.
editable_fields[step_text_key]أي حقول الخطوة تحصل على محرر، مثلًا [action, thought].
show_difftrueإظهار الفرق المباشر على مستوى الكلمة.
show_edit_distancetrueإظهار الكلمات والأحرف التي تغيّرت.
allow_resettrueزر "إعادة التعيين إلى الأصل" لكل حقل.
require_reason_on_editfalseحقل إدخال "سبب التحرير" لكل حقل.
edit_final_answerfalseإضافة محرر للإجابة النهائية.
final_answer_keyfinal_answerحقل المثيل الذي يحمل الإجابة النهائية.

تنسيق البيانات

يقرأ المخطط الخطوات من المثيل تحت steps_key. كل خطوة هي كائن يمكن تحرير حقوله (action وthought وما إلى ذلك)؛ أما الخطوات النصية المجردة فتُحرَّر كحقل step_text_key.

json
{
  "id": "traj_001",
  "task_description": "Find the weather in San Francisco.",
  "steps": [
    {"thought": "Look it up.", "action": "web_search(queyr='SF weather')"},
    {"thought": "Open it.",    "action": "open_url(results[0])"}
  ],
  "final_answer": "It is sunny."
}

التصدير

شغِّل المُصدِّر trajectory_correction. يكتب ثلاثة ملفات:

  • trajectory_corrections.json — كل سجل: original_trace، وcorrected_trace المُعاد بناؤه، وedits لكل حقل مع مسافات التحرير والأسباب.
  • trajectory_sft.jsonl — سطر واحد لكل أثر مُحرَّر: {"prompt": <task>, "completion": <corrected_trace>}.
  • trajectory_dpo.jsonl — سطر واحد لكل أثر مُحرَّر: {"prompt": <task>, "chosen": <corrected_trace>, "rejected": <original_trace>}.

تُحصى الآثار غير المُحرَّرة لكنها تُستبعَد من SFT/DPO، لأن التدريب على مسار لم يتغيّر لا يضيف شيئًا؛ ويظهر عدد المتخطى في إحصاءات التصدير. مع وجود عدة مُعلِّقين، يُنتج كل مُعلِّق حرَّر أثرًا سجلًا واحدًا من SFT/DPO.

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

  • الفرق على مستوى الكلمة. بالنسبة لاستدعاءات الأدوات الشبيهة بالشيفرة والخالية من المسافات، قد يظهر رمز واحد على أنه مُغيَّر بالكامل حتى لإصلاح من حرف واحد؛ وعدّاد مسافة الأحرف هو الإشارة الدقيقة.
  • اقرنه بالتقييم على مستوى الخطوة إذا أردت أيضًا صحة لكل خطوة أو تصنيفًا للأخطاء على الأثر نفسه.

ذات صلة

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