SFT/DPO के लिए ट्रैजेक्टरी संपादन
एनोटेटर किसी एजेंट ट्रेस के चरणों को फिर से लिखकर किसी गलत तर्क चरण को ठीक करते हैं, किसी टूल कॉल को सुधारते हैं, या अंतिम उत्तर को मज़बूत करते हैं, और Potato प्रत्येक मूल/सुधारित जोड़ी को पर्यवेक्षित फाइन-ट्यूनिंग लक्ष्यों और DPO प्राथमिकता जोड़ियों के रूप में निर्यात करता है।
trajectory_edit स्कीमा एनोटेटरों को किसी एजेंट ट्रेस के चरणों को फिर से लिखने देता है, और प्रत्येक सुधार को प्रशिक्षण डेटा के रूप में निर्यात करता है। किसी गलत तर्क चरण को ठीक करें, किसी टाइपो वाली टूल कॉल को सुधारें, या अंतिम उत्तर को मज़बूत करें, और Potato सुधारित ट्रैजेक्टरी को मूल के बगल में सहेज लेता है। फिर trajectory_correction निर्यातक प्रत्येक (original, corrected) जोड़ी को पर्यवेक्षित फाइन-ट्यूनिंग (SFT) लक्ष्यों और प्रत्यक्ष प्राथमिकता अनुकूलन (DPO) प्राथमिकता जोड़ियों में बदल देता है।
इससे Potato केवल एक मूल्यांकन उपकरण नहीं, बल्कि एक प्रशिक्षण-डेटा उत्पादन उपकरण बन जाता है। यह चरण-स्तरीय स्कोरिंग का संपादन समकक्ष है: किसी ट्रैजेक्टरी को आँकने के बजाय, एनोटेटर उसे ठीक करते हैं, और वह सुधार एक सीखने का संकेत बन जाता है।
एक एजेंट चरण जो एक केवल-पठनीय मूल और एक संपादन-योग्य सुधारित बॉक्स के साथ शब्द-स्तरीय डिफ़ सहित दिखाया गया है
त्वरित शुरुआत
रिपॉज़िटरी की रूट से शामिल उदाहरण चलाएँ:
python potato/flask_server.py start examples/agent-traces/trajectory-correction/config.yaml -p 8000यह कैसे काम करता है
प्रत्येक एजेंट चरण एक कार्ड के रूप में रेंडर होता है जो मूल पाठ (केवल-पठनीय) और मूल से पहले से भरा एक संपादन-योग्य सुधारित बॉक्स दिखाता है। जैसे-जैसे एनोटेटर टाइप करता है:
- एक लाइव शब्द-स्तरीय डिफ़ प्रविष्टियों (हरा) और हटाए गए हिस्सों (लाल काट लगा हुआ) को उजागर करता है,
- बदले गए शब्द और वर्ण गिने जाते हैं, और
- बदले गए फ़ील्ड पर एक "संपादित" चिह्न दिखाई देता है।
एक "रीसेट" बटन प्रत्येक फ़ील्ड के लिए मूल को बहाल कर देता है। edit_final_answer: true के साथ अंतिम उत्तर को उसका अपना संपादक मिलता है। कुछ भी अनिवार्य नहीं है: एक असंपादित ट्रेस बस कोई प्रशिक्षण जोड़ी उत्पन्न नहीं करता।
कॉन्फ़िगरेशन
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_key | steps | चरण सूची धारण करने वाला इंस्टेंस फ़ील्ड। |
step_text_key | action | प्रति चरण डिफ़ॉल्ट संपादन-योग्य फ़ील्ड। |
editable_fields | [step_text_key] | किन चरण फ़ील्ड को संपादक मिलता है, जैसे [action, thought]। |
show_diff | true | लाइव शब्द-स्तरीय डिफ़ दिखाएँ। |
show_edit_distance | true | बदले गए शब्द और वर्ण दिखाएँ। |
allow_reset | true | प्रति फ़ील्ड "मूल पर रीसेट करें" बटन। |
require_reason_on_edit | false | प्रति फ़ील्ड "संपादन का कारण" इनपुट। |
edit_final_answer | false | अंतिम उत्तर के लिए एक संपादक जोड़ें। |
final_answer_key | final_answer | अंतिम उत्तर धारण करने वाला इंस्टेंस फ़ील्ड। |
डेटा प्रारूप
स्कीमा इंस्टेंस से steps_key के अंतर्गत चरण पढ़ता है। प्रत्येक चरण एक ऑब्जेक्ट है जिसके फ़ील्ड (action, thought, इत्यादि) संपादित किए जा सकते हैं; मात्र-स्ट्रिंग वाले चरण step_text_key फ़ील्ड के रूप में संपादित होते हैं।
{
"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 रिकॉर्ड देता है।
टिप्पणियाँ और सीमाएँ
- डिफ़ शब्द-स्तरीय है। बिना स्पेस वाली कोड जैसी टूल कॉल के लिए, एक ही वर्ण के सुधार पर भी एक टोकन पूरी तरह बदला हुआ दिख सकता है; वर्ण-दूरी काउंटर ही सटीक संकेत है।
- यदि आप उसी ट्रेस पर प्रति-चरण शुद्धता या एक त्रुटि वर्गीकरण भी चाहते हैं, तो इसे चरण-स्तरीय स्कोरिंग के साथ जोड़ें।
संबंधित
- तीन-पैनल ट्रेस मूल्यांकन — केवल-पठनीय तर्क, कॉल, और उत्तर दृश्य
- एजेंटिक एनोटेशन — एजेंट-ट्रेस प्रदर्शन और मूल्यांकन पैटर्न
- निर्यात प्रारूप — संपूर्ण निर्यातक संदर्भ
कार्यान्वयन विवरण के लिए, स्रोत दस्तावेज़ देखें।