* 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.
18 KiB
Evaluations (Evals) (Oʻzbekcha)
🌐 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 · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
Asosiy manba:
src/lib/evals/,src/lib/db/evals.ts,src/app/api/evals/Oxirgi yangilanish: 2026-06-28 — v3.8.40
OmniRoute marshrutlash konfiguratsiyalari, alohida provayderlar/modellar yoki toʻplamga kiritilgan “golden set” sinov majmualarini taqqoslab baholash uchun foydalanishingiz mumkin boʻlgan universal baholash freymvorki bilan taqdim etiladi. Undan marshrutlashdagi oʻzgarishlarni tekshirish, yangi provayderlarni sinovdan oʻtkazish va relizlarni ishlab chiqarish trafigiga chiqarishdan oldin nazoratdan oʻtkazish uchun foydalaning.
Freymvork quyidagicha amalga oshirilgan:
- Xotirada saqlanadigan ichki sinov majmualarini roʻyxatdan oʻtkazadigan, natijalarni kutilgan mezonlar asosida baholaydigan va baholash jadvallarini umumlashtiradigan mustaqil bajaruvchi (
src/lib/evals/evalRunner.ts). - Maxsus (foydalanuvchi belgilagan) sinov majmualari va SQLite ichidagi tarixiy ishga tushirishlar uchun saqlash qatlami (
src/lib/db/evals.ts). - Har bir holatni
POST /v1/chat/completionsmanziliga haqiqiy soʻrovlar yuborish orqali bajaradigan, kechikish va natijalarni qayd etadigan hamda ishga tushirishni saqlaydigan boshqaruv qatlami (src/lib/evals/runtime.ts). /api/evals/*ostidagi REST soʻnggi nuqtalari (faqat boshqaruv autentifikatsiyasi bilan).Dashboard → Usage → Evalsmanzilidagi boshqaruv paneli interfeysi (EvalsTab.tsx).
Tushunchalar
Sinov majmuasi
Sinov majmuasi — description va bir yoki bir nechta holatga ega nomlangan test holatlari toʻplami. Sinov majmualari ikkita manbadan olinadi:
| Manba | Qayerda aniqlanadi | Ishlash vaqtida oʻzgartirish mumkinmi? |
|---|---|---|
built-in |
Ishga tushishda registerSuite() orqali roʻyxatdan oʻtkaziladi |
Yoʻq (kodda aniqlangan) |
custom |
SQLiteʼdagi eval_suites + eval_cases jadvallarida saqlanadi |
Ha (API/UI orqali) |
Joriy ichki sinov majmualari (src/lib/evals/evalRunner.ts fayliga qarang):
golden-set— salomlashish/matematika/tarjima/xavfsizlik boʻyicha 10 ta bazaviy holatcoding-proficiency— Python/JS/SQL/TS/xatolarni aniqlashreasoning-logic— sillogizmlar, matnli masalalar, qonuniyatlarni aniqlashmultilingual— tarjima va tilni aniqlashsafety-guardrails— shaxsni aniqlovchi maʼlumotlar, cheklovlarni chetlab oʻtish, rad etish, tarafkashlikdan xabardorlikinstruction-following— faqat JSON, raqamlangan roʻyxatlar, til cheklovlaricodex-comparison— taqqoslash rejimi uchun moʻljallangan bevosita taqqoslanadigan dasturlash vazifalari
Holat
Har bir holat quyidagilarni oʻz ichiga oladi:
| Maydon | Tavsif |
|---|---|
id |
Barqaror identifikator (natijalar va metrikalarni kalitlash uchun ishlatiladi) |
name |
Inson oʻqishi uchun qulay yorliq |
model |
Ishga tushirish suite-default nishonidan foydalangandagi standart model |
input |
{ messages, max_tokens? } — /v1/chat/completions manziliga yuboriladi |
expected |
{ strategy, value } — baholash mezoni (quyiga qarang) |
tags |
Ixtiyoriy yorliqlar (masalan, safety, pii, jailbreak) |
Nishon
Bitta sinov majmuasini turli nishonlarga nisbatan ishga tushirish mumkin. Nishon sxemasi — src/shared/validation/schemas.ts ichidagi evalTargetSchema:
| Nishon turi | id |
Xatti-harakat |
|---|---|---|
suite-default |
null |
Har bir holat oʻzining ichki model maydonidan foydalanadi |
model |
model nomi | Har bir holatni bitta bevosita model orqali majburan oʻtkazadi (masalan, gpt-4o) |
combo |
combo nomi | Har bir holatni bitta combo orqali ishga tushiradi (marshrutlash mexanizmini sinaydi) |
model va combo uchun id maydoni majburiy (superRefine orqali Zod tomonidan nazorat qilinadi). compareTarget taqdim etilganda, ikkala nishon bir-biridan farq qilishi kerak — bajaruvchi A/B taqqoslash uchun ikkala ishga tushirishni bir xil runGroupId ostida saqlaydi.
Baholash mezonlari
evaluateCase() (evalRunner.ts) ichida amalga oshirilgan:
| Strategiya | Qachon o‘tadi… |
|---|---|
exact |
actualOutput === expected.value |
contains |
actualOutput.toLowerCase().includes(expected.value.toLowerCase()) |
regex |
new RegExp(expected.value).test(actualOutput) rost qiymat qaytarsa |
custom |
expected.fn(actualOutput, evalCase) rost qiymat qaytarsa (faqat ichki) |
Eslatma: Maxsus funksiya orqali baholash faqat kodda belgilangan (ichki)
to‘plamlar uchun mo‘ljallangan, chunki funksiyalarni API orqali serializatsiya
qilib bo‘lmaydi. evalCaseBuilderSchema foydalanuvchi yaratgan to‘plamlar uchun
faqat contains | exact | regex qiymatlarini qabul qiladi.
Hozirda LLM-as-judge yoki embedding asosidagi o‘xshashlik baholovchisi yo‘q —
buni evaluateCase() ichida bemalol kengaytirish mumkin.
Ma’lumotlar bazasi sxemasi
Uchta jadval (030_create_eval_runs.sql va 031_create_eval_suites.sql
migratsiyalari):
| Jadval | Maqsad |
|---|---|
eval_suites |
Maxsus to‘plam metama’lumotlari (id, name, description) |
eval_cases |
Har bir to‘plamdagi holatlar — input_json, expected_*, tags_json |
eval_runs |
Tarixiy ishga tushirishlar — pass_rate, total, passed, failed, avg_latency_ms, summary_json, results_json, outputs_json |
Ichki to‘plamlar DB’da saqlanmaydi. Ular xotirada turadi va evalRunner.ts
har safar import qilinganida qayta ro‘yxatdan o‘tkaziladi.
REST API
Barcha endpointlar boshqaruv autentifikatsiyasini (requireManagementAuth)
talab qiladi — ular ochiq proksi interfeysining bir qismi emas.
| Endpoint | Metod | Tavsif |
|---|---|---|
/api/evals |
GET |
To‘plamlar + so‘nggi ishga tushirishlar + natijalar jadvali + maqsadlar + kalitlarni ro‘yxatlash |
/api/evals |
POST |
To‘plamni ishga tushirish (bitta yoki taqqoslash) — evalRunSuiteSchema sxemasi |
/api/evals/{suiteId} |
GET |
Bitta to‘plamni olish (ichki yoki maxsus) |
/api/evals/suites |
POST |
Maxsus to‘plam yaratish — evalSuiteSaveSchema sxemasi |
/api/evals/suites/{suiteId} |
GET |
Maxsus to‘plamni olish |
/api/evals/suites/{suiteId} |
PUT |
Maxsus to‘plamni almashtirish (holatlar qayta kiritiladi) |
/api/evals/suites/{suiteId} |
DELETE |
Maxsus to‘plam va uning holatlarini o‘chirish |
To‘plamni ishga tushirish
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"
}'
Ixtiyoriy maydonlar:
outputs— oldindan hisoblangan natijalarningRecord<caseId, string>ko‘rinishi. Taqdim etilganda, bajaruvchi jo‘natishni o‘tkazib yuboradi va faqat keshlangan natijalarni baholaydi (oflayn baholash uchun foydali).compareTarget— parallel ishga tushiriladigan ikkinchi maqsad; ikkala ishga tushirish ham yuzma-yuz ko‘rish uchun yaratilgan umumiyrunGroupIddan foydalanadi.apiKeyId— jo‘natilgan/v1/chat/completionschaqiruvlarini autentifikatsiya qilish uchun ishlatiladigan ichki API kaliti.REQUIRE_API_KEYyoqilganda talab qilinadi.
Maxsus to‘plam yaratish
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" }
}
]
}'
Joʻnatish konveyeri
runEvalSuiteAgainstTarget() (src/lib/evals/runtime.ts):
- Toʻplamni (ichki yoki maxsus) aniqlaydi.
- Har bir holat uchun
/v1/chat/completionsmanziliga holatningmessagesqiymati, aniqlanganmodel,stream: falsevamax_tokens: 512(yoki holat uchun belgilangan qiymat) bilanRequestyaratadi. - Chat ishlov beruvchisini bevosita chaqiradi (jarayon ichida — qoʻshimcha HTTP oʻtishi yoʻq).
- Kechikishni qayd etadi va matnni
choices[0].message.contentyoki Responses APIoutput[]foydali yukidan ajratib oladi. - Barcha chiqishlarni
runSuite()orqali baholaydi, soʻngsaveEvalRun()orqali saqlaydi.
Holatlar ketma-ket bajariladi. Hozirda parallellik bayrogʻi mavjud emas.
Boshqaruv paneli
UI Dashboard → Usage → Evals
(src/app/(dashboard)/dashboard/usage/components/EvalsTab.tsx) manzilida joylashgan. U yerdan
quyidagilarni bajarishingiz mumkin:
- Ichki va maxsus toʻplamlarni holatlar boʻyicha oldindan koʻrish orqali koʻrib chiqish.
- Holat konstruktori yordamida maxsus toʻplamlarni yaratish/tahrirlash/oʻchirish.
- Maqsadni (toʻplam standartlari / model / kombinatsiya), ixtiyoriy ikkinchi
compareTargetva ixtiyoriy API kalitini tanlash, soʻng talab boʻyicha ishga tushirish. - Ishga tushirish tarixini, har bir holatning muvaffaqiyatli/muvaffaqiyatsiz natijasini, kechikishni va qayd etilgan chiqishlarni tekshirish.
- Har bir
(suite, target)doirasidagi eng soʻnggi ishga tushirish asosida jamlangan oʻzgaruvchan natijalar jadvalini koʻrish.
Auto-Assessment RFC bilan aloqasi
Alohida, torroq baholash quyi tizimi src/domain/assessment/ manzilida joylashgan
(amaldagi baholash mexanizmi uchun AUTO-COMBO.md fayliga ham qarang).
Bu quyi tizim Auto Combo mexanizmiga moʻljallangan — yuqori oqim xizmatlari ishlamay qolganda
kombinatsiyalar oʻzini tiklay olishi uchun provayderlar va modellarni avtomatik ravishda baholaydi.
U oʻzining ishga tushirgichi, turkumlagichi va baholash mantiqidan foydalanadi.
Bu yerda hujjatlashtirilgan Evals freymvorki kengroq, umumiy maqsadli sinov muhiti hisoblanadi. Ixtiyoriy regressiya toʻplamlari, A/B taqqoslashlari va har bir reliz uchun tezkor sinovlarda undan foydalanishni afzal koʻring. Marshrutlash qarorlariga real vaqt rejimidagi provayder holati taʼsir qilishi kerak boʻlsa, Auto-Assessment quyi tizimidan foydalaning.
CI integratsiyasi
Hozirda maxsus eval:ci npm skripti mavjud emas. Relizlarni baholash natijalari
asosida cheklamoqchi boʻlsangiz, ikkita yoʻl mavjud:
- HTTP yoʻli: serverni ishga tushiring, maʼlum
suiteId+targetbilanPOST /api/evalssoʻrovini yuboring va javobdagiruns[].summary.passRate >= Nekanini tasdiqlang. - Jarayon ichidagi yoʻl: skriptda
@/lib/evals/runtimemodulidanrunEvalSuiteAgainstTarget()funksiyasini import qiling, sinov maʼlumotlar bazasiga nisbatan ishga tushiring va qaytarilganPersistedEvalRun.summaryqiymatini tekshiring.
Marshrut va tarixni qamrab oluvchi testlar
tests/unit/evals-route.test.ts va tests/unit/evals-history.test.ts fayllarida joylashgan.
Kengaytirish nuqtalari
Keng tarqalgan oʻzgartirishlar va ularni qayerda amalga oshirish kerakligi:
- Yangi baholash strategiyasi —
evaluateCase()(evalRunner.ts) ichidagiswitch (evalCase.expected.strategy)blokini kengaytiring hamdasrc/lib/db/evals.tsichidagiEvalCaseStrategyvaschemas.tsichidagievalCaseBuilderSchemataʼriflarini kengaytiring. - Yangi ichki toʻplam — toʻplam obyektini belgilang va
evalRunner.tsfaylining oxiridaregisterSuite()funksiyasini chaqiring. UlistSuites()tomonidan avtomatik aniqlanadi. - Parallellik bilan ishga tushirish —
runEvalSuiteAgainstTarget()ichidagi ketma-ketforsiklini cheklanganPromise.allbilan almashtiring (hozirda parallellikni boshqarish mavjud emas). - Oqim/asbob chaqiruvi holatlari — hozirda ishga tushirgich majburiy ravishda
stream: falseqiymatini oʻrnatadi. Oqimli yoki asboblarni hisobga oluvchi baholash uchunruntime.tsfaylini oʻzgartirish (baholashdan oldin SSE qismlarini qayd etish va birlashtirish) talab etiladi.
Shuningdek qarang
- USER_GUIDE.md — mahsulot bo‘yicha umumiy qo‘llanma
- ARCHITECTURE.md — so‘rovlarni qayta ishlash konveyeri bo‘yicha ma’lumotnoma
- AUTO-COMBO.md — Auto Combo baholash mexanizmi (real vaqt ish muhiti)
- Manba:
src/lib/evals/,src/lib/db/evals.ts,src/app/api/evals/ - UI:
src/app/(dashboard)/dashboard/usage/components/EvalsTab.tsx