प्रोग्रामेटिक इवैल्यूएटर
Potato की Flask-मुक्त इवैल्यूएटर लाइब्रेरी से एजेंट ट्रैजेक्टरियों और टेक्स्ट आउटपुट को स्वचालित रूप से स्कोर करें — निर्धारक trajectory match, टूल-उपयोग शुद्धता, संदर्भ-मुक्त LLM-as-judge, और ह्यूरिस्टिक (exact match, edit distance, JSON, embeddings)।
Potato एक हल्की-निर्भरता वाली इवैल्यूएटर लाइब्रेरी के साथ आता है जो एजेंट ट्रैजेक्टरियों और टेक्स्ट आउटपुट को स्वचालित रूप से स्कोर करती है: वे निर्धारक और LLM-as-judge जाँचें जो मानव एनोटेशन की पूरक हैं। यही इवैल्यूएटर प्रयोगों, ऑटोमेशन इंजन और CI प्लगइन के भीतर चलते हैं, और स्वतंत्र रूप से भी काम करते हैं।
हर इवैल्यूएटर एक सामान्यीकृत परिणाम लौटाता है — एक score (परंपरा से 0.0–1.0, अधिक बेहतर), एक value, एक comment और metadata — इसलिए निर्धारक, ह्यूरिस्टिक और LLM-judge इवैल्यूएटर एक-दूसरे की जगह इस्तेमाल हो सकते हैं। ट्रैजेक्टरियाँ OpenAI-शैली की संदेश सूचियों, Potato के मानक conversation टर्नों, या एक CanonicalTrace के रूप में दी जा सकती हैं; सामान्यीकरण स्वचालित है।
Trajectory match (निर्धारक)
एजेंट के टूल-कॉल अनुक्रम की किसी संदर्भ से तुलना करता है।
from potato.evaluators import TrajectoryMatchEvaluator
ev = TrajectoryMatchEvaluator(
mode="unordered", # strict | unordered | subset | superset
tool_args_match_mode="subset", # exact | ignore | subset | superset
tool_args_match_overrides={"search": "ignore"},
)
result = ev.evaluate(outputs=agent_trace, reference_outputs=gold_trace)mode | कब पास होता है… |
|---|---|
strict | बिल्कुल वही टूल कॉलें, उसी क्रम में |
unordered | टूल कॉलों का वही मल्टीसेट, कोई भी क्रम |
subset | एजेंट ने केवल वही टूल कॉल किए जो संदर्भ में मौजूद हैं |
superset | एजेंट ने कम-से-कम संदर्भ वाले टूल कॉल किए (अतिरिक्त की अनुमति) |
आर्ग्युमेंट तुलना स्वतंत्र रूप से कॉन्फ़िगर होती है (exact / ignore / subset / superset), प्रति-टूल ओवरराइड के साथ।
टूल-उपयोग शुद्धता
from potato.evaluators import ToolUseEvaluator, ToolCallAccuracyEvaluator
# Did the agent call a specific tool (optionally with expected args)?
ToolUseEvaluator(expected_tool="submit", expected_args={"id": 1}).evaluate(outputs=trace)
# What fraction of reference tool calls did the agent reproduce? (partial credit)
ToolCallAccuracyEvaluator(args_match_mode="exact").evaluate(outputs=trace, reference_outputs=gold)LLM-as-judge (संदर्भ-मुक्त)
बिना गोल्ड संदर्भ के ट्रैजेक्टरी की गुणवत्ता स्कोर करता है, क्योंकि एजेंट के कई वैध रास्ते हो सकते हैं। Potato के बाक़ी हिस्सों जैसा ही ai_support एंडपॉइंट कॉन्फ़िग पुनः उपयोग करता है (OpenAI, Anthropic, Ollama, vLLM, …)।
from potato.evaluators import LLMTrajectoryJudge
judge = LLMTrajectoryJudge(config=task_config, continuous=True) # 0.0–1.0 score
result = judge.evaluate(outputs=agent_trace, inputs=task_prompt)ह्यूरिस्टिक / कोड इवैल्यूएटर
ExactMatch, Contains, RegexMatch, EditDistance, JSONValid, JSONSchemaMatch और EmbeddingDistance (आलसी ML इम्पोर्ट या इंजेक्ट किया गया embedding फ़ंक्शन)। लाइब्रेरी को इम्पोर्ट करने से ML स्टैक कभी नहीं खिंचता।
ग्राफ़-ट्रैजेक्टरी eval (LangGraph)
LangGraph नोड/ट्रांज़िशन मूल्यांकन के लिए, Potato MIT-लाइसेंस वाले agentevals पैकेज को एक आलसी एडेप्टर के ज़रिए पुनः उपयोग करता है — इसे तभी इंस्टॉल करें जब ज़रूरत हो।
इवैल्यूएटरों को घोषणात्मक रूप से कॉन्फ़िगर करना
एक रजिस्ट्री नामों को इवैल्यूएटरों से जोड़ती है ताकि उन्हें YAML में कॉन्फ़िगर किया जा सके (प्रयोग रनर और ऑटोमेशन इंजन इसका उपयोग करते हैं):
from potato.evaluators import build_evaluator, list_evaluators
ev = build_evaluator("trajectory_match", {"mode": "unordered"})
result = ev.evaluate(outputs=trace, reference_outputs=gold)संबंधित
- Read the Docs पर पूर्ण संदर्भ — हर इवैल्यूएटर और विकल्प, संस्करण-अनुरूप
- डेटासेट और प्रयोग — किसी डेटासेट पर इवैल्यूएटर चलाएँ और समय के साथ स्कोर ट्रैक करें
- CI मूल्यांकन — इवैल्यूएटर स्कोर पर अपना बिल्ड गेट करें
- ट्रैजेक्टरी मूल्यांकन — इसका मानवीय समकक्ष