पाठ 23 / 25

Scripted Model से Loops का परीक्षण

Loop तर्क को तेज़ और निश्चित रूप से परखने के लिए असली model की जगह replies की script रखें।

Loop परखें, model नहीं

असली model calls धीमी, महँगी और दोहराने योग्य नहीं होतीं, इसलिए आपके loop के unit tests के लिए बुरी हैं। इसके बजाय नक़ली model डालें जो तैयार क्रम में replies लौटाए (दो tool अनुरोध, फिर अंतिम उत्तर)। तब आप milliseconds में जाँच सकते हैं कि loop सही रुकता है, budget पर शुल्क लगाता है और सीमाएँ लागू करता है।

Scripted model और एक test

नक़ली object में वही fields हैं जो आपका loop असली reply से पढ़ता है। पहला डेमो जैसा दिखाया वैसा चला और 3 steps गिने।

class FakeReply:
    def __init__(self, stop_reason, text=""):
        self.stop_reason, self.text = stop_reason, text

script = iter([FakeReply("tool_use"), FakeReply("tool_use"), FakeReply("end_turn", "done")])
steps = 0
for reply in script:
    steps += 1
    if reply.stop_reason != "tool_use":
        break
print(steps)

# pytest style:
# def test_stops_after_step_limit():
#     with pytest.raises(RuntimeError):
#         run(messages, call_model=lambda m: FakeReply("tool_use"), max_steps=3)

Output:

3

मुश्किल मामले परखें

ऐसे model के लिए tests लिखें जो tools बुलाना कभी बंद न करे, जो वही call दोहराए, और जिसका tool हमेशा error दे। आपके guards इन्हीं स्थितियों के लिए हैं।

त्वरित जाँच: Loop के unit tests में नक़ली model क्यों उपयोग करें?

  • यह tests को तेज़, मुफ़्त और दोहराने योग्य बनाता है
  • Tests से असली models नहीं बुलाए जा सकते
  • नक़ली models ज़्यादा बुद्धिमान हैं
  • यह model की गुणवत्ता परखता है
Answer

यह tests को तेज़, मुफ़्त और दोहराने योग्य बनाता है — Scripted replies loop का तर्क निश्चित और जाँचने में सस्ता बनाती हैं।