# Evals

Цель: проверять качество моделей, RAG и будущих адаптеров воспроизводимым способом.

## Validate Eval Files

```powershell
python scripts/validate_evals.py
```

## Run 1C Smoke Eval Without Model

Prompt-only режим проверяет, что eval-набор читается и превращается в отчет.

```powershell
python scripts/run_1c_smoke_eval.py --print
```

Отчет пишется в:

```text
reports/evals/1c-smoke.report.json
```

Папка `reports` не коммитится.

## Run 1C Smoke Eval Against vLLM

После запуска inference:

```powershell
python scripts/run_1c_smoke_eval.py --base-url http://docker-gpu.cin.su:8000 --model qwen3-4b-instruct
```

Runner сохраняет ответы и считает автоматические проверки, если критерий задан структурно.
Строковые критерии остаются ручными.

Поддерживаемые автоматические типы:

- `contains`
- `not_contains`
- `regex`
- `max_sentences`
- `refuses`
- `requires_metadata`

Для GGUF/llama.cpp:

```powershell
python scripts/run_1c_smoke_eval.py --base-url http://docker-gpu.cin.su:8080 --model devstral-1c-q4
```

Перед evals удобно проверить endpoint:

```powershell
python scripts/check_inference_endpoint.py --base-url http://docker-gpu.cin.su:8000 --expected-model qwen3-4b-instruct --print
python scripts/check_inference_endpoint.py --base-url http://docker-gpu.cin.su:8080 --expected-model devstral-1c-q4 --print
```

## Run Live Evals For Available Models

Единая команда проверяет endpoint-ы активного GPU-профиля и запускает smoke eval только для моделей этого профиля:

```powershell
python scripts/run_live_model_evals.py --profile text --print
```

Отчет пишется в:

```text
reports/evals/live-model-evals.json
```

По умолчанию live eval использует продуктовый 1С system prompt:

```text
plugins/1c/prompts/system.md
```

Если endpoint недоступен, соответствующая модель получает статус `blocked`.
Для полной ручной проверки взаимоисключающих профилей используйте:

```powershell
python scripts/run_live_model_evals.py --all-targets --print
```

## Promotion Rule

Модель или адаптер нельзя переводить из `draft/staging` в `production`, пока smoke-evals не пройдены и отчет не просмотрен.
