Skip to content

प्रोग्रामेटिक इवैल्यूएटर

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 (निर्धारक)

एजेंट के टूल-कॉल अनुक्रम की किसी संदर्भ से तुलना करता है।

python
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), प्रति-टूल ओवरराइड के साथ।

टूल-उपयोग शुद्धता

python
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, …)।

python
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 में कॉन्फ़िगर किया जा सके (प्रयोग रनर और ऑटोमेशन इंजन इसका उपयोग करते हैं):

python
from potato.evaluators import build_evaluator, list_evaluators
 
ev = build_evaluator("trajectory_match", {"mode": "unordered"})
result = ev.evaluate(outputs=trace, reference_outputs=gold)

संबंधित