Files
OmniRoute/docs/i18n/or/docs/frameworks/EVALS.md
Diego Rodrigues de Sa e Souza 8feea123bb feat(docs): mirror every docs/ page in all 65 locales (#14106)
* feat(docs): mirror every docs/ page in all 65 locales

Extends the documentation mirrors from the 22-page core set (#13940) to
every Markdown page under docs/: 152 sources x 65 locales = 9,880 mirrors
(6,208 new), language bars rewritten for the full locale list, state
adopted so the blocking drift gate now covers all 152 pages.

run-translation.mjs: an oversized block made only of table rows or list
items (PROVIDER_REFERENCE.md 244-row table, FREE_TIERS.md 71-item list) is
cut at item boundaries and rejoined without a blank line — the single
16-40 KB request outlived the backend socket for verbose scripts. 48
older mirrors whose tables had lost rows were retranslated with --force.

* docs(i18n): refresh mirrors for the sources the base changed since the branch cut

Section-level retranslation of the 29 docs (and README.md) whose source
or mirrors moved on release/v3.8.51 during the run, then state adoption;
the drift gate is green again on the merged tree.
2026-09-18 13:16:46 -03:00

27 KiB

Evaluations (Evals) (ଓଡ଼ିଆ)

🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW


ସତ୍ୟର ମୂଳ ଉତ୍ସ: src/lib/evals/, src/lib/db/evals.ts, src/app/api/evals/ ଶେଷ ଅଦ୍ୟତନ: 2026-06-28 — v3.8.40

OmniRoute ଏକ ସାଧାରଣ ମୂଲ୍ୟାଙ୍କନ ଫ୍ରେମୱର୍କ ସହ ଆସେ, ଯାହାକୁ ଆପଣ ରାଉଟିଂ ବିନ୍ୟାସ, ଏକକ ପ୍ରଦାତା/ମଡେଲ୍ କିମ୍ବା ବଣ୍ଡଲ୍ କରାଯାଇଥିବା "golden set" ସୁଇଟ୍ଗୁଡ଼ିକର ମାନଦଣ୍ଡ-ଭିତ୍ତିକ ମୂଲ୍ୟାଙ୍କନ ପାଇଁ ବ୍ୟବହାର କରିପାରିବେ। ରାଉଟିଂ ପରିବର୍ତ୍ତନଗୁଡ଼ିକ ଯାଞ୍ଚ କରିବା, ନୂଆ ପ୍ରଦାତାମାନଙ୍କୁ ବୈଧ କରିବା ଏବଂ ପ୍ରଡକ୍ସନ୍ ଟ୍ରାଫିକ୍କୁ ପ୍ରୋତ୍ସାହିତ କରିବା ପୂର୍ବରୁ ରିଲିଜ୍ଗୁଡ଼ିକୁ ନିୟନ୍ତ୍ରଣ କରିବା ପାଇଁ ଏହାକୁ ବ୍ୟବହାର କରନ୍ତୁ।

ଫ୍ରେମୱର୍କଟି ନିମ୍ନଲିଖିତ ଭାବେ କାର୍ଯ୍ୟକାରୀ କରାଯାଇଛି:

  • ଏକ ବିଶୁଦ୍ଧ ରନର୍ (src/lib/evals/evalRunner.ts), ଯାହା ଇନ୍-ମେମୋରି ବିଲ୍ଟ-ଇନ୍ ସୁଇଟ୍ଗୁଡ଼ିକୁ ପଞ୍ଜୀକୃତ କରେ, ଆଶାକରାଯାଇଥିବା ମାନଦଣ୍ଡ ବିପରୀତରେ ଆଉଟପୁଟ୍ଗୁଡ଼ିକୁ ମୂଲ୍ୟାଙ୍କନ କରେ ଏବଂ ସ୍କୋରକାର୍ଡଗୁଡ଼ିକୁ ସମାହାର କରେ।
  • SQLiteରେ କଷ୍ଟମ୍ (ଉପଯୋଗକର୍ତ୍ତା-ନିର୍ଦ୍ଧାରିତ) ସୁଇଟ୍ ଏବଂ ଐତିହାସିକ ରନ୍ଗୁଡ଼ିକ ପାଇଁ ଏକ ସ୍ଥାୟୀ ସଂରକ୍ଷଣ ସ୍ତର (src/lib/db/evals.ts)।
  • ଏକ ଅର୍କେଷ୍ଟ୍ରେସନ୍ ସ୍ତର (src/lib/evals/runtime.ts), ଯାହା POST /v1/chat/completionsକୁ ପ୍ରକୃତ କଲ୍ଗୁଡ଼ିକ ପ୍ରେରଣ କରି ପ୍ରତ୍ୟେକ କେସ୍ ନିଷ୍ପାଦନ କରେ, ବିଳମ୍ବତା ଏବଂ ଆଉଟପୁଟ୍ଗୁଡ଼ିକୁ କ୍ୟାପ୍ଚର୍ କରେ ଏବଂ ରନ୍ଟିକୁ ସ୍ଥାୟୀ ଭାବେ ସଂରକ୍ଷଣ କରେ।
  • /api/evals/* ଅଧୀନରେ REST ଏଣ୍ଡପଏଣ୍ଟଗୁଡ଼ିକ (କେବଳ ପରିଚାଳନା-ପ୍ରାମାଣୀକରଣ)।
  • Dashboard → Usage → Evalsରେ ଏକ ଡ୍ୟାଶବୋର୍ଡ ପୃଷ୍ଠ (EvalsTab.tsx)।

ଧାରଣାଗୁଡ଼ିକ

ସୁଇଟ୍

ଏକ ସୁଇଟ୍ ହେଉଛି ଗୋଟିଏ description ଏବଂ ଏକ କିମ୍ବା ଅଧିକ କେସ୍ ସହିତ ପରୀକ୍ଷଣ କେସ୍ଗୁଡ଼ିକର ଏକ ନାମିତ ସଂଗ୍ରହ। ସୁଇଟ୍ଗୁଡ଼ିକ ଦୁଇଟି ଉତ୍ସରୁ ଆସେ:

ଉତ୍ସ କେଉଁଠାରେ ନିର୍ଦ୍ଧାରିତ ରନ୍ଟାଇମ୍ରେ ପରିବର୍ତ୍ତନଯୋଗ୍ୟ?
built-in ବୁଟ୍ ସମୟରେ registerSuite() ମାଧ୍ୟମରେ ପଞ୍ଜୀକୃତ ନା (କୋଡ୍-ନିର୍ଦ୍ଧାରିତ)
custom SQLite eval_suites + eval_casesରେ ସଂରକ୍ଷିତ ହଁ (API/UI ମାଧ୍ୟମରେ)

ବର୍ତ୍ତମାନର ବିଲ୍ଟ-ଇନ୍ ସୁଇଟ୍ଗୁଡ଼ିକ (src/lib/evals/evalRunner.ts ଦେଖନ୍ତୁ):

  • golden-set — ଅଭିବାଦନ/ଗଣିତ/ଅନୁବାଦ/ନିରାପତ୍ତା ବ୍ୟାପୀ 10ଟି ମୌଳିକ କେସ୍
  • coding-proficiency — Python/JS/SQL/TS/ତ୍ରୁଟି ଚିହ୍ନଟ
  • reasoning-logic — ନ୍ୟାୟବାକ୍ୟ, ଶବ୍ଦ ସମସ୍ୟା, ପାଟର୍ନ ଚିହ୍ନଟ
  • multilingual — ଅନୁବାଦ ଏବଂ ଭାଷା ଚିହ୍ନଟ
  • safety-guardrails — PII, jailbreak, ପ୍ରତ୍ୟାଖ୍ୟାନ, ପକ୍ଷପାତ ସଚେତନତା
  • instruction-following — କେବଳ JSON, କ୍ରମାଙ୍କିତ ତାଲିକା, ଭାଷା ସୀମାବଦ୍ଧତା
  • codex-comparison — ତୁଳନା ମୋଡ୍ ପାଇଁ ଉଦ୍ଦିଷ୍ଟ ପ୍ରତ୍ୟକ୍ଷ କୋଡିଂ କାର୍ଯ୍ୟଗୁଡ଼ିକ

କେସ୍

ପ୍ରତ୍ୟେକ କେସ୍ରେ ନିମ୍ନଲିଖିତ ଥାଏ:

ଫିଲ୍ଡ ବିବରଣୀ
id ସ୍ଥିର ପରିଚାୟକ (ଆଉଟପୁଟ୍ ଏବଂ ମେଟ୍ରିକ୍ସକୁ କୀ ଦେବା ପାଇଁ ବ୍ୟବହୃତ)
name ମଣିଷ-ପଠନୀୟ ଲେବଲ୍
model ରନ୍ଟି suite-default ଟାର୍ଗେଟିଂ ବ୍ୟବହାର କରିବା ବେଳେ ଡିଫଲ୍ଟ ମଡେଲ୍
input { messages, max_tokens? }/v1/chat/completionsକୁ ପଠାଯାଏ
expected { strategy, value } — ସ୍କୋରିଂ ନିର୍ଦ୍ଦେଶିକା (ନିମ୍ନରେ ଦେଖନ୍ତୁ)
tags ଇଚ୍ଛାଧୀନ ଲେବଲ୍ଗୁଡ଼ିକ (ଯଥା safety, pii, jailbreak)

ଟାର୍ଗେଟ୍

ସମାନ ସୁଇଟ୍କୁ ଭିନ୍ନ ଟାର୍ଗେଟ୍ଗୁଡ଼ିକ ବିପରୀତରେ ଚଲାଯାଇପାରିବ। ଟାର୍ଗେଟ୍ ସ୍କିମାଟି src/shared/validation/schemas.tsରେ ଥିବା evalTargetSchema:

ଟାର୍ଗେଟ୍ ପ୍ରକାର id ଆଚରଣ
suite-default null ପ୍ରତ୍ୟେକ କେସ୍ ଏହାର ବିଲ୍ଟ-ଇନ୍ model ଫିଲ୍ଡ ବ୍ୟବହାର କରେ
model ମଡେଲ୍ର ନାମ ପ୍ରତ୍ୟେକ କେସ୍କୁ ଗୋଟିଏ ପ୍ରତ୍ୟକ୍ଷ ମଡେଲ୍ ମାଧ୍ୟମରେ ବାଧ୍ୟତାମୂଳକ ଭାବେ ପଠାନ୍ତୁ (ଯଥା gpt-4o)
combo କମ୍ବୋର ନାମ ପ୍ରତ୍ୟେକ କେସ୍କୁ ଗୋଟିଏ କମ୍ବୋ ମାଧ୍ୟମରେ ଚଲାନ୍ତୁ (ରାଉଟିଂ ଇଞ୍ଜିନ୍କୁ ଅଭ୍ୟାସ କରାଏ)

model ଏବଂ combo ପାଇଁ id ଫିଲ୍ଡ ଆବଶ୍ୟକ (superRefine ଦ୍ୱାରା Zodରେ ବାଧ୍ୟତାମୂଳକ କରାଯାଇଛି)। compareTarget ପ୍ରଦାନ କରାଗଲେ, ଉଭୟ ଟାର୍ଗେଟ୍ ନିଶ୍ଚିତ ଭାବେ ଭିନ୍ନ ହେବା ଆବଶ୍ୟକ — A/B ତୁଳନା ପାଇଁ ରନର୍ ଉଭୟ ରନ୍କୁ ସମାନ runGroupId ଅଧୀନରେ ସ୍ଥାୟୀ ଭାବେ ସଂରକ୍ଷଣ କରେ।

ସ୍କୋରିଂ ମାନଦଣ୍ଡ

evaluateCase() (evalRunner.ts)-ରେ କାର୍ଯ୍ୟକାରୀ କରାଯାଇଛି:

କୌଶଳ ଉତ୍ତୀର୍ଣ୍ଣ ହେବାର ସର୍ତ୍ତ…
exact actualOutput === expected.value
contains actualOutput.toLowerCase().includes(expected.value.toLowerCase())
regex new RegExp(expected.value).test(actualOutput) ସତ୍ୟ ହେଲେ
custom expected.fn(actualOutput, evalCase) ସତ୍ୟ ଫେରାଇଲେ (କେବଳ ବିଲ୍ଟ-ଇନ୍)

ଟିପ୍ପଣୀ: କଷ୍ଟମ୍-ଫଙ୍କସନ୍ ସ୍କୋରିଂ କୋଡ୍ରେ ପରିଭାଷିତ (ବିଲ୍ଟ-ଇନ୍) ସୁଇଟ୍ଗୁଡ଼ିକ ପାଇଁ ସଂରକ୍ଷିତ, କାରଣ ଫଙ୍କସନ୍ଗୁଡ଼ିକୁ API ମାଧ୍ୟମରେ ସିରିଆଲାଇଜ୍ କରାଯାଇପାରେ ନାହିଁ। ବ୍ୟବହାରକାରୀଙ୍କ ଦ୍ୱାରା ସୃଷ୍ଟ ସୁଇଟ୍ଗୁଡ଼ିକ ପାଇଁ evalCaseBuilderSchema କେବଳ contains | exact | regex ଗ୍ରହଣ କରେ।

ବର୍ତ୍ତମାନ କୌଣସି LLM-as-judge କିମ୍ବା embedding-ଆଧାରିତ ସାଦୃଶ୍ୟ ସ୍କୋରର୍ ନାହିଁ — ଏହା evaluateCase()-ରେ ଏକ ସୁବ୍ୟବସ୍ଥିତ ବିସ୍ତାର ବିନ୍ଦୁ ହୋଇପାରିବ।

ଡାଟାବେସ୍ ସ୍କିମା

ତିନୋଟି ଟେବୁଲ୍ (ମାଇଗ୍ରେସନ୍ 030_create_eval_runs.sql ଏବଂ 031_create_eval_suites.sql):

ଟେବୁଲ୍ ଉଦ୍ଦେଶ୍ୟ
eval_suites କଷ୍ଟମ୍ ସୁଇଟ୍ ମେଟାଡାଟା (id, name, description)
eval_cases ପ୍ରତ୍ୟେକ ସୁଇଟ୍ର କେସ୍ — input_json, expected_*, tags_json
eval_runs ଐତିହାସିକ ରନ୍ — pass_rate, total, passed, failed, avg_latency_ms, summary_json, results_json, outputs_json

ବିଲ୍ଟ-ଇନ୍ ସୁଇଟ୍ଗୁଡ଼ିକ DB-ରେ ସଂରକ୍ଷିତ ହୁଏ ନାହିଁ। ସେଗୁଡ଼ିକ ମେମୋରିରେ ରହେ ଏବଂ evalRunner.ts ଇମ୍ପୋର୍ଟ ହେବା ପ୍ରତ୍ୟେକ ଥର ପୁନଃ ପଞ୍ଜୀକୃତ ହୁଏ।

REST API

ସମସ୍ତ ଏଣ୍ଡପଏଣ୍ଟ ପାଇଁ ପରିଚାଳନା ପ୍ରମାଣୀକରଣ (requireManagementAuth) ଆବଶ୍ୟକ — ସେଗୁଡ଼ିକ ସାର୍ବଜନୀନ ପ୍ରକ୍ସି ପୃଷ୍ଠର ଅଂଶ ନୁହେଁ।

ଏଣ୍ଡପଏଣ୍ଟ ପଦ୍ଧତି ବର୍ଣ୍ଣନା
/api/evals GET ସୁଇଟ୍ + ସାମ୍ପ୍ରତିକ ରନ୍ + ସ୍କୋରକାର୍ଡ + ଟାର୍ଗେଟ୍ + କୀ ତାଲିକାଭୁକ୍ତ କରେ
/api/evals POST ଏକ ସୁଇଟ୍ ଚଲାଏ (ଏକକ କିମ୍ବା ତୁଳନା) — ସ୍କିମା evalRunSuiteSchema
/api/evals/{suiteId} GET ଗୋଟିଏ ସୁଇଟ୍ ଆଣେ (ବିଲ୍ଟ-ଇନ୍ କିମ୍ବା କଷ୍ଟମ୍)
/api/evals/suites POST ଏକ କଷ୍ଟମ୍ ସୁଇଟ୍ ସୃଷ୍ଟି କରେ — ସ୍କିମା evalSuiteSaveSchema
/api/evals/suites/{suiteId} GET ଏକ କଷ୍ଟମ୍ ସୁଇଟ୍ ଆଣେ
/api/evals/suites/{suiteId} PUT ଏକ କଷ୍ଟମ୍ ସୁଇଟ୍ ପ୍ରତିସ୍ଥାପନ କରେ (କେସ୍ଗୁଡ଼ିକ ପୁନଃ ଇନ୍ସର୍ଟ ହୁଏ)
/api/evals/suites/{suiteId} DELETE ଏକ କଷ୍ଟମ୍ ସୁଇଟ୍ ଏବଂ ଏହାର କେସ୍ଗୁଡ଼ିକ ବିଲୋପ କରେ

ଏକ ସୁଇଟ୍ ଚଲାଇବା

curl -X POST http://localhost:20128/api/evals \
  -H "Cookie: auth_token=..." \
  -H "Content-Type: application/json" \
  -d '{
    "suiteId": "golden-set",
    "target": { "type": "combo", "id": "my-combo" },
    "apiKeyId": "optional-api-key-uuid"
  }'

ଇଚ୍ଛାଧୀନ ଫିଲ୍ଡଗୁଡ଼ିକ:

  • outputs — ପୂର୍ବରୁ ଗଣନା କରାଯାଇଥିବା ଆଉଟପୁଟ୍ର Record<caseId, string>। ଏହା ପ୍ରଦାନ କରାଗଲେ, ରନର୍ ଡିସ୍ପ୍ୟାଚ୍ ଏଡ଼ାଇଯାଏ ଏବଂ କେବଳ କ୍ୟାଶ୍ ହୋଇଥିବା ଆଉଟପୁଟ୍ଗୁଡ଼ିକୁ ସ୍କୋର୍ କରେ (ଅଫ୍ଲାଇନ୍ ମୂଲ୍ୟାଙ୍କନ ପାଇଁ ଉପଯୋଗୀ)।
  • compareTarget — ସମାନ୍ତରାଳ ଭାବେ ଚଲାଇବା ପାଇଁ ଦ୍ୱିତୀୟ ଟାର୍ଗେଟ୍; ମୁହାଁମୁହିଁ ଭାବେ ଦେଖିବା ପାଇଁ ଉଭୟ ରନ୍ ଏକ ଉତ୍ପନ୍ନ runGroupId ସହଭାଗ କରନ୍ତି।
  • apiKeyId — ଡିସ୍ପ୍ୟାଚ୍ ହୋଇଥିବା /v1/chat/completions କଲ୍ଗୁଡ଼ିକୁ ପ୍ରମାଣିତ କରିବା ପାଇଁ ବ୍ୟବହୃତ ଆଭ୍ୟନ୍ତରୀଣ API କୀ। REQUIRE_API_KEY ସକ୍ଷମ ଥିବାବେଳେ ଏହା ଆବଶ୍ୟକ।

ଏକ କଷ୍ଟମ୍ ସୁଇଟ୍ ସୃଷ୍ଟି କରିବା

curl -X POST http://localhost:20128/api/evals/suites \
  -H "Cookie: auth_token=..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Production smoke",
    "description": "Quick sanity check before deploy",
    "cases": [
      {
        "name": "JSON shape",
        "model": "gpt-4o",
        "input": { "messages": [{ "role": "user", "content": "Reply with {\"ok\": true}" }] },
        "expected": { "strategy": "regex", "value": "\"ok\"\\s*:\\s*true" }
      }
    ]
  }'

ଡିସ୍ପାଚ୍ ପାଇପଲାଇନ୍

runEvalSuiteAgainstTarget() (src/lib/evals/runtime.ts):

  1. ସୁଇଟ୍ଟିକୁ (ବିଲ୍ଟ-ଇନ୍ କିମ୍ବା କଷ୍ଟମ୍) ରିଜଲ୍ଭ କରେ।
  2. ପ୍ରତ୍ୟେକ କେସ୍ ପାଇଁ, କେସ୍ର messages, ରିଜଲ୍ଭ ହୋଇଥିବା model, stream: false, ଏବଂ max_tokens: 512 (କିମ୍ବା କେସ୍ର ଓଭରରାଇଡ୍) ସହିତ /v1/chat/completions ପାଇଁ ଏକ Request ନିର୍ମାଣ କରେ।
  3. ଚାଟ୍ ହ୍ୟାଣ୍ଡଲର୍କୁ ସିଧାସଳଖ କଲ୍ କରେ (ଇନ୍-ପ୍ରୋସେସ୍ — କୌଣସି ଅତିରିକ୍ତ HTTP ହପ୍ ନାହିଁ)।
  4. ବିଳମ୍ବତା କ୍ୟାପ୍ଚର୍ କରେ ଏବଂ choices[0].message.content କିମ୍ବା Responses-APIର output[] ପେଲୋଡ୍ରୁ ଟେକ୍ସଟ୍ ବାହାର କରେ।
  5. runSuite() ମାଧ୍ୟମରେ ସମସ୍ତ ଆଉଟ୍ପୁଟ୍ର ସ୍କୋର୍ କରେ, ତା’ପରେ saveEvalRun() ମାଧ୍ୟମରେ ସ୍ଥାୟୀ ଭାବେ ସଂରକ୍ଷଣ କରେ।

କେସ୍ଗୁଡ଼ିକ କ୍ରମାନୁସାରେ ଚାଲେ। ବର୍ତ୍ତମାନ କୌଣସି କନ୍କରେନ୍ସି ଫ୍ଲାଗ୍ ନାହିଁ।

ଡ୍ୟାସ୍ବୋର୍ଡ

UIଟି Dashboard → Usage → Evals (src/app/(dashboard)/dashboard/usage/components/EvalsTab.tsx)ରେ ରହିଛି। ସେଠାରୁ ଆପଣ:

  • କେସ୍-ବାଇ-କେସ୍ ପ୍ରିଭ୍ୟୁ ସହିତ ବିଲ୍ଟ-ଇନ୍ ଏବଂ କଷ୍ଟମ୍ ସୁଇଟ୍ଗୁଡ଼ିକ ବ୍ରାଉଜ୍ କରିପାରିବେ।
  • କେସ୍ ବିଲ୍ଡର୍ ବ୍ୟବହାର କରି କଷ୍ଟମ୍ ସୁଇଟ୍ ସୃଷ୍ଟି/ସମ୍ପାଦନା/ବିଲୋପ କରିପାରିବେ।
  • ଏକ ଟାର୍ଗେଟ୍ (ସୁଇଟ୍ ଡିଫଲ୍ଟ୍ଗୁଡ଼ିକ / ମଡେଲ୍ / କମ୍ବୋ), ଇଚ୍ଛାଧୀନ ଭାବେ ଦ୍ୱିତୀୟ compareTarget, ଇଚ୍ଛାଧୀନ ଭାବେ ଏକ API କୀ ବାଛି, ତା’ପରେ ଚାହିଦା ଅନୁସାରେ ଚଲାଇପାରିବେ।
  • ରନ୍ ଇତିହାସ, ପ୍ରତ୍ୟେକ କେସ୍ର ପାସ୍/ଫେଲ୍, ବିଳମ୍ବତା ଏବଂ କ୍ୟାପ୍ଚର୍ ହୋଇଥିବା ଆଉଟ୍ପୁଟ୍ଗୁଡ଼ିକ ଯାଞ୍ଚ କରିପାରିବେ।
  • ପ୍ରତ୍ୟେକ (suite, target) ସ୍କୋପ୍ର ସର୍ବଶେଷ ରନ୍ ଆଧାରରେ ସମାହୃତ ରୋଲିଂ ସ୍କୋର୍କାର୍ଡ ଦେଖିପାରିବେ।

Auto-Assessment RFC ସହିତ ସମ୍ପର୍କ

ଏକ ପୃଥକ, ଅଧିକ ସୀମିତ ଆସେସ୍ମେଣ୍ଟ ସବ୍ସିଷ୍ଟମ୍ src/domain/assessment/ରେ ରହିଛି (ଲାଇଭ୍ ସ୍କୋରିଂ ଇଞ୍ଜିନ୍ ପାଇଁ AUTO-COMBO.md ମଧ୍ୟ ଦେଖନ୍ତୁ)। ସେହି ସବ୍ସିଷ୍ଟମ୍ Auto Combo ଇଞ୍ଜିନ୍କୁ ଲକ୍ଷ୍ୟ କରେ — ପ୍ରୋଭାଇଡର୍ ଏବଂ ମଡେଲ୍ଗୁଡ଼ିକୁ ସ୍ୱୟଂଚାଳିତ ଭାବେ ସ୍କୋର୍ କରେ, ଯାହାଦ୍ୱାରା ଅପ୍ଷ୍ଟ୍ରିମ୍ ବିଫଳ ହେଲେ କମ୍ବୋଗୁଡ଼ିକ ସ୍ୱୟଂ-ପୁନରୁଦ୍ଧାର କରିପାରିବ। ଏହା ନିଜସ୍ୱ ରନର୍, ନିଜସ୍ୱ ବର୍ଗୀକରଣକାରୀ ଏବଂ ନିଜସ୍ୱ ସ୍କୋରିଂ ଲଜିକ୍ ବ୍ୟବହାର କରେ।

ଏଠାରେ ଡକ୍ୟୁମେଣ୍ଟ କରାଯାଇଥିବା Evals ଫ୍ରେମ୍ୱର୍କ ହେଉଛି ଅଧିକ ବ୍ୟାପକ, ସାଧାରଣ-ଉଦ୍ଦେଶ୍ୟର ପରୀକ୍ଷଣ ପୃଷ୍ଠ। ଯେକୌଣସି ରିଗ୍ରେସନ୍ ସୁଇଟ୍, A/B ତୁଳନା ଏବଂ ପ୍ରତ୍ୟେକ ରିଲିଜ୍ର ସ୍ମୋକ୍ ଟେଷ୍ଟ ପାଇଁ ଏହାକୁ ପ୍ରାଧାନ୍ୟ ଦିଅନ୍ତୁ। ରାଉଟିଂ ନିଷ୍ପତ୍ତିଗୁଡ଼ିକୁ ପ୍ରଭାବିତ କରିବା ପାଇଁ ରିଅଲ୍-ଟାଇମ୍ ପ୍ରୋଭାଇଡର୍ ସ୍ୱାସ୍ଥ୍ୟ ଆବଶ୍ୟକ ହେଲେ Auto-Assessment ସବ୍ସିଷ୍ଟମ୍ ବ୍ୟବହାର କରନ୍ତୁ।

CI ସମନ୍ୱୟ

ବର୍ତ୍ତମାନ କୌଣସି ଉତ୍ସର୍ଗୀକୃତ eval:ci npm ସ୍କ୍ରିପ୍ଟ ନାହିଁ। ଯଦି ଆପଣ eval ଫଳାଫଳ ଆଧାରରେ ରିଲିଜ୍ଗୁଡ଼ିକୁ ଗେଟ୍ କରିବାକୁ ଚାହାନ୍ତି, ତେବେ ଦୁଇଟି ପଥ ଅଛି:

  • HTTP ପଥ: ସର୍ଭର୍ଟି ଚାଲୁ କରନ୍ତୁ, ଏକ ଜଣାଶୁଣା suiteId + target ସହିତ POST /api/evalsକୁ ହିଟ୍ କରନ୍ତୁ, ଏବଂ ରେସ୍ପନ୍ସରେ runs[].summary.passRate >= N ଅଛି ବୋଲି ଆସର୍ଟ କରନ୍ତୁ।
  • ଇନ୍-ପ୍ରୋସେସ୍ ପଥ: ଏକ ସ୍କ୍ରିପ୍ଟରେ @/lib/evals/runtimeରୁ runEvalSuiteAgainstTarget() ଇମ୍ପୋର୍ଟ କରନ୍ତୁ, ଏକ ଟେଷ୍ଟ DB ବିପକ୍ଷରେ ଚଲାନ୍ତୁ ଏବଂ ଫେରସ୍ତ ହୋଇଥିବା PersistedEvalRun.summary ଯାଞ୍ଚ କରନ୍ତୁ।

ରୁଟ୍ ଏବଂ ଇତିହାସକୁ କଭର୍ କରୁଥିବା ଟେଷ୍ଟଗୁଡ଼ିକ tests/unit/evals-route.test.ts ଏବଂ tests/unit/evals-history.test.tsରେ ରହିଛି।

ବିସ୍ତାର ବିନ୍ଦୁଗୁଡ଼ିକ

ସାଧାରଣ ପରିବର୍ତ୍ତନ ଏବଂ ସେଗୁଡ଼ିକ କେଉଁଠାରେ କରିବେ:

  • ନୂଆ ସ୍କୋରିଂ କୌଶଳevaluateCase() (evalRunner.ts)ରେ ଥିବା switch (evalCase.expected.strategy) ବ୍ଲକ୍କୁ ବିସ୍ତାର କରନ୍ତୁ ଏବଂ src/lib/db/evals.tsରେ EvalCaseStrategy ସହିତ schemas.tsରେ evalCaseBuilderSchemaକୁ ବ୍ୟାପକ କରନ୍ତୁ।
  • ନୂଆ ବିଲ୍ଟ-ଇନ୍ ସୁଇଟ୍ — ଏକ ସୁଇଟ୍ ଅବଜେକ୍ଟ୍ ପରିଭାଷିତ କରନ୍ତୁ ଏବଂ evalRunner.tsର ଶେଷରେ registerSuite() କଲ୍ କରନ୍ତୁ। ଏହା listSuites() ଦ୍ୱାରା ସ୍ୱୟଂଚାଳିତ ଭାବେ ଆବିଷ୍କୃତ ହେବ।
  • କନ୍କରେନ୍ସି ସହିତ ଚଲାନ୍ତୁrunEvalSuiteAgainstTarget()ର କ୍ରମିକ for ଲୁପ୍କୁ ଏକ ସୀମାବଦ୍ଧ Promise.allରେ ପରିବର୍ତ୍ତନ କରନ୍ତୁ (ବର୍ତ୍ତମାନ କୌଣସି କନ୍କରେନ୍ସି ନିୟନ୍ତ୍ରଣ ନାହିଁ)।
  • ଷ୍ଟ୍ରିମ୍/ଟୁଲ୍-କଲ୍ କେସ୍ଗୁଡ଼ିକ — ବର୍ତ୍ତମାନ ରନର୍ stream: falseକୁ ବାଧ୍ୟତାମୂଳକ କରେ। ଷ୍ଟ୍ରିମିଂ କିମ୍ବା ଟୁଲ୍-ସଚେତନ ମୂଲ୍ୟାୟନ ପାଇଁ runtime.tsରେ ପରିବର୍ତ୍ତନ ଆବଶ୍ୟକ ହେବ (ସ୍କୋରିଂ ପୂର୍ବରୁ SSE ଚଙ୍କ୍ଗୁଡ଼ିକୁ କ୍ୟାପ୍ଚର୍ ଏବଂ ସମାହୃତ କରନ୍ତୁ)।

ଏହା ମଧ୍ୟ ଦେଖନ୍ତୁ

  • USER_GUIDE.md — ସମଗ୍ର ଉତ୍ପାଦର ପଦକ୍ରମିକ ମାର୍ଗଦର୍ଶିକା
  • ARCHITECTURE.md — ଅନୁରୋଧ ପାଇପଲାଇନ୍ ସନ୍ଦର୍ଭ
  • AUTO-COMBO.md — Auto Combo ସ୍କୋରିଂ ଇଞ୍ଜିନ୍ (ସକ୍ରିୟ ରନ୍ଟାଇମ୍)
  • ଉତ୍ସ: src/lib/evals/, src/lib/db/evals.ts, src/app/api/evals/
  • UI: src/app/(dashboard)/dashboard/usage/components/EvalsTab.tsx