> ## Documentation Index
> Fetch the complete documentation index at: https://docs.befailproof.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# एक मूल्यांकन लिखें

> वर्णन करें कि क्या मापना है और सहायक को एक होस्टेड Python मूल्यांकन का मसौदा तैयार करने दें, या कोड स्वयं लिखें। LLM जजों को आपके अपने worker में चलाया जाता है।

होस्टेड मूल्यांकन छोटे, नियतात्मक Python होते हैं, जो डैशबोर्ड में लिखे जाते हैं और Failproof AI के evaluator fleet पर चलाए जाते हैं। भारी तर्क — एक LLM judge, एक पैकेज, एक secret, एक नेटवर्क कॉल — इसके बजाय [आपके अपने worker](#इसे-अपने-worker-में-लिखें) में चलता है।

## विवरण से मसौदा तैयार करें

1. **Analyze → eval authoring** पर जाएं और **new eval** चुनें।
2. सादी English में मापने के लिए क्या है यह बताएं, या **start from an example…** से चुनें, और **draft** को चुनें।
3. Fields और code की समीक्षा करें, फिर इसे [test करें](/hi/evaluations/test) और [deploy करें](/hi/evaluations/deploy)।

<img src="https://mintcdn.com/exosphere/k_s8fY_jSxA_m1d_/images/dashboard/eval-authoring-draft.png?fit=max&auto=format&n=k_s8fY_jSxA_m1d_&q=85&s=7738fc3dd02d1e9b1792ce401a400149" alt="eval authoring पेज एक मसौदा मूल्यांकन के साथ: विवरण, मसौदे पर सहायक की नोट्स, और नाम, कुंजी, संस्करण, परिणाम, timeout, लेबल्स, और condition fields।" width="1456" height="892" data-path="images/dashboard/eval-authoring-draft.png" />

मसौदा आपके संगठन की अपनी events पर आधारित है: पेज पढ़ता है कि आपके sessions ने पिछले सात दिनों में कौन सी payload keys ले जाई हैं, इसलिए code उन keys को पढ़ता है जो मौजूद हैं अनुमान लगाने के बजाय। मसौदे को सौंपने से पहले, सहायक इसे आपके हाल के पांच sessions के साथ परीक्षण करता है, कुछ भी ठीक करता है जो वह साबित कर सकता है कि टूटा हुआ है — तीन राउंड तक — और एक बार जांच करता है कि code आपने जो पूछा था वह मापता है। विवरण को विशिष्ट रखें: व्यापक prompts धीमे हो सकते हैं और timeout हो सकते हैं। किसी भी तरह से code की समीक्षा करें; deploying कभी भी blocked नहीं होता है।

## Fields सेट करें

| Field           | यह क्या है                                                                                         |
| --------------- | -------------------------------------------------------------------------------------------------- |
| name            | जो लोग देखते हैं। बाद में editable                                                                 |
| key             | स्थिर identifier जिसके तहत इसके परिणाम chart होते हैं, जैसे `code_assistant_quality_gate`          |
| version         | कोई भी संस्करण string बिना spaces के, जैसे `1.0.0`                                                 |
| result          | **score** (0 से 1), **metric** (एक संख्या एक इकाई के साथ), या **assertion** (पास किया गया या नहीं) |
| timeout seconds | Default 30। Sandbox किसी भी एकल run को 60 पर रोकता है                                              |
| labels          | 20 तक, comma-separated। बाद में editable                                                           |
| condition       | Optional। एक Python expression; मूल्यांकन केवल उन sessions पर चलता है जहां यह `True` है            |

एक मूल्यांकन को उन agents और environments तक सीमित करने के लिए condition का उपयोग करें जिसके लिए यह meant है:

```python theme={null}
session.agent_id == "code-assistant" and session.environment == "production"
```

Key, version, result type, condition, और code deployment के बाद immutable हैं: इनमें से कोई भी बदलने के लिए, एक नया version publish करें। Name, labels, और क्या यह enabled है यह editable रहता है।

## कोड स्वयं लिखें

**evaluator code** एक Python expression है जो `EvalResult(...)` return करता है, जिसमें `session` in scope है। यह tool results के share को score करता है जो ok आए:

```python theme={null}
EvalResult(
    score=Score(
        len([e for e in session.events_of_type("tool_result") if e.payload.get("status") == "ok"])
        / max(1, session.count("tool_result"))
    ),
    metrics={"tool_calls": Metric(session.count("tool_use"), unit="calls")},
    reasoning="Share of tool results that came back ok.",
)
```

एक result मूल्यांकन की अपनी key के साथ शुरू होता है, अपने declared type में: score evaluation के लिए `score=`, या एक metric या assertion evaluation के लिए key के नाम से एक `metrics` या `assertions` entry। अन्य metrics और assertions इसके साथ ride करते हैं, एक run में 25 परिणाम तक।

| In scope       | आपको देता है                                                                                                                                            |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `session`      | `session_id`, `agent_id`, `environment`, `started_at`, `ended_at`, `event_count`, और `events`, plus `count(event_type)` और `events_of_type(event_type)` |
| प्रत्येक event | `id`, `ts`, `event_type`, और `payload`                                                                                                                  |
| Result types   | `EvalResult`, `Score`, `Metric`, `Assertion`, और एक condition के लिए `ConditionResult`                                                                  |
| Builtins       | `abs`, `all`, `any`, `bool`, `dict`, `float`, `int`, `len`, `list`, `max`, `min`, `range`, `round`, `set`, `sorted`, `str`, `sum`, `tuple`              |

कुछ भी और reachable नहीं है: कोई imports नहीं, और session data और plain string और dictionary methods जैसे `get`, `lower`, और `split` से परे कोई attributes नहीं, जिन्हें reference किए जाने के बजाय called होना चाहिए। Payload keys वह हैं जो आपके agents भेजते हैं — `status` ऊपर केवल एक example है — इसलिए उन्हें एक real session से पढ़ें। **format** code को tidy करता है और **fix** सहायक को इसे repair करने के लिए कहता है। Code 128 KiB तक हो सकता है, और condition 16 KiB तक हो सकता है।

<img src="https://mintcdn.com/exosphere/k_s8fY_jSxA_m1d_/images/dashboard/eval-authoring-code.png?fit=max&auto=format&n=k_s8fY_jSxA_m1d_&q=85&s=a93c24f30a7a1f37a251a2a048c31710" alt="evaluator code editor, format और fix के साथ, एक मसौदा मूल्यांकन की assertions दिखा रहा है।" width="1502" height="879" data-path="images/dashboard/eval-authoring-code.png" />

## इसे अपने worker में लिखें

जब एक मूल्यांकन को एक model, एक पैकेज, एक secret, या नेटवर्क की आवश्यकता होती है, तो इसे [Evaluator SDK](/hi/reference/evaluator-sdk) के साथ लिखें और इसे अपने infrastructure पर चलाएं। यह same result types का उपयोग करता है, और इसके परिणाम hosted ones के बगल में दिखाई देते हैं, **customer** tagged:

```python theme={null}
@app.eval("answer_relevance", version="judge-v1", labels=["llm_judge"], timeout_seconds=30)
async def answer_relevance(session):
    value, reasoning = await ask_judge(session)  # your LLM call: a 0-1 score and why
    return EvalResult(score=Score(value, passed=value >= 0.7), reasoning=reasoning)
```
