पाठ 4 / 25

Evaluator-Optimizer Loops

स्पष्ट रुकने के नियम के साथ generate, critique, revise loop से output सुधारें।

बनाएँ, परखें, सुधारें

एक call draft बनाती है, दूसरी उसे स्पष्ट मानदंडों पर परखती है, और प्रतिक्रिया संशोधन के लिए लौटती है। यह तब काम करता है जब आप बता सकें कि "अच्छा" का मतलब क्या है, जैसे "सभी tests पास" या "style guide के अनुसार"। साफ़ मानदंड के बिना loop सिर्फ़ ख़र्च बढ़ाता है।

सीमित loop

Rounds की संख्या हमेशा सीमित रखें। यहाँ evaluator के मंज़ूर करने पर या तीन प्रयासों के बाद loop रुकता है।

def refine(task: str, max_rounds: int = 3) -> str:
    draft = llm(task)
    for _ in range(max_rounds):
        verdict = llm(f"Does this meet the criteria? Reply OK or list problems:\n{draft}")
        if verdict.strip().startswith("OK"):
            break
        draft = llm(f"Revise to fix these problems:\n{verdict}\n\nDraft:\n{draft}")
    return draft

वस्तुनिष्ठ जाँच चुनें

Test suite या linter, दूसरे model की राय से ज़्यादा भरोसेमंद evaluator है। Model judge सिर्फ़ उन गुणों के लिए रखें जिन्हें कोड माप नहीं सकता।

त्वरित जाँच: हर evaluator-optimizer loop में क्या होना ही चाहिए?

  • अधिकतम rounds की सीमा
  • असीमित retries
  • कोई मानदंड नहीं
  • हर round में अलग भाषा
Answer

अधिकतम rounds की सीमा — सीमा, मानदंड कभी पूरे न होने पर अनंत loops और बेकाबू ख़र्च को रोकती है।