# Оценка LLM (evals)

> Методы измерения качества языковых моделей и LLM-приложений — бенчмарки, собственные наборы тестов, автоматические проверки, модель-судья и оценка людьми.

Источник: https://llmdocs.ru/wiki/llm-evals/ · обновлено 2026-11-09 · лицензия CC BY-SA 4.0

- **Уровни**: оценка модели (бенчмарки) и оценка приложения (свои тесты)
- **Способы проверки**: точное совпадение, код и правила, модель-судья, люди
- **Публичные бенчмарки**: MMLU, GPQA, SWE-bench, HumanEval, Chatbot Arena
- **Инструменты**: OpenAI Evals, Inspect, promptfoo, DeepEval, Ragas, lm-evaluation-harness
- **Связанная практика**: регрессионное тестирование промптов в CI
**Оценка LLM**, или **evals** (от *evaluations*), — систематическое измерение качества [языковых моделей](https://llmdocs.ru/wiki/llm.md) и построенных на них приложений. Различают два уровня: **оценку моделей** на публичных бенчмарках (насколько модель умна в целом) и **оценку приложения** на собственном наборе задач (насколько хорошо *ваша* система решает *вашу* задачу). Второе важнее на практике: без своих тестов любое изменение промпта, модели или поиска — это гадание, а [галлюцинации](https://llmdocs.ru/wiki/hallucinations.md) и регрессии обнаруживают пользователи.[4]

## Публичные бенчмарки

| Бенчмарк | Что измеряет |
|---|---|
| MMLU, MMLU-Pro | знания по десяткам предметов, вопросы с вариантами |
| GPQA | сложные научные вопросы уровня аспирантуры |
| HumanEval, LiveCodeBench | генерация кода по описанию |
| SWE-bench Verified | исправление реальных задач из GitHub-репозиториев[6] |
| AIME, MATH | математика |
| Chatbot Arena (LMArena) | слепые попарные сравнения ответов людьми, рейтинг Эло[1] |

Ограничения бенчмарков: **загрязнение** (тестовые вопросы попадают в обучающие данные), **насыщение** (лучшие модели набирают почти максимум, и различия теряются), **несоответствие** реальным задачам. Высокий балл на MMLU не гарантирует хорошей работы с вашей документацией на русском языке. Для запуска стандартных бенчмарков на своих моделях используют lm-evaluation-harness и Inspect.[2][3]

## Собственный набор тестов

Основа — **набор примеров** (eval set): входы, которые реально приходят в систему, и критерии хорошего ответа. Рекомендации:

1. Начать с 20–50 примеров из реальных логов и известных провалов; расширять по мере появления новых ошибок.
2. Покрыть типичные случаи, крайние случаи и случаи, где правильный ответ — отказ или «не знаю».
3. Сформулировать критерии заранее и измеримо: «ответ содержит номер статьи», «JSON соответствует схеме», «нет фактов вне контекста».
4. Хранить набор в репозитории и прогонять при каждом изменении промпта, модели или параметров — как регрессионные тесты в [CI/CD](https://llmdocs.ru/wiki/ci-cd.md).

## Способы проверки

- **Точное совпадение и правила** — для классификации, извлечения полей, [структурированного вывода](https://llmdocs.ru/wiki/structured-output.md); дёшево и надёжно. Метрики — как в [классическом ML](https://llmdocs.ru/wiki/classification-metrics.md).
- **Исполнение кода** — сгенерированный код запускается против тестов.
- **Модель-судья** (LLM-as-a-judge) — другая модель оценивает ответ по рубрике или сравнивает два ответа. Хорошо согласуется с людьми в среднем, но имеет перекосы: предпочитает длинные ответы, ответы на первой позиции и ответы собственного семейства.[1] Помогают чёткая рубрика с примерами, бинарные вопросы вместо шкалы 1–10, перестановка порядка и выборочная проверка судьи людьми.
- **Оценка людьми** — эталон качества, но дорого; нужна для калибровки автоматических проверок.

```yaml
# promptfoo: регрессионные тесты промпта
prompts: [file://prompts/answer.txt]
providers: [anthropic:messages:claude-sonnet-4-5, openai:gpt-5-mini]
tests:
  - vars: {question: "Какой порт у HTTPS?"}
    assert:
      - {type: contains, value: "443"}
  - vars: {question: "Сколько стоит подписка Pro?"}
    assert:
      - {type: llm-rubric, value: "Отвечает, что в документации нет этой информации, и не выдумывает цену"}
```

promptfoo, DeepEval, Inspect и OpenAI Evals позволяют описывать такие наборы декларативно и сравнивать модели в таблице.[5]

## Оценка RAG и агентов

Для [RAG](https://llmdocs.ru/wiki/rag.md) оценивают отдельно **поиск** (нашёлся ли нужный фрагмент: recall@k, MRR) и **генерацию** (опирается ли ответ на найденное — faithfulness, отвечает ли он на вопрос — relevance). Библиотека Ragas реализует эти метрики.[7] Раздельная оценка показывает, где проблема: в [чанкинге](https://llmdocs.ru/wiki/chunking.md) и поиске или в промпте. Для [агентов](https://llmdocs.ru/wiki/ai-agent.md) важны доля успешно завершённых задач, число шагов, стоимость и безопасность действий; проверяется итоговое состояние среды, а не только текст.

## В продакшене

Онлайн-оценка дополняет офлайн-наборы: явная обратная связь пользователей, косвенные сигналы (переформулировка вопроса, копирование ответа), выборочная проверка логов моделью-судьёй. Трассировку и оценку объединяют платформы вроде [MLflow](https://llmdocs.ru/wiki/mlflow.md), Langfuse и LangSmith. Неудачные случаи из продакшена пополняют eval set — так замыкается цикл улучшений.

## См. также

- [Галлюцинации LLM](https://llmdocs.ru/wiki/hallucinations.md)
- [Метрики качества классификации](https://llmdocs.ru/wiki/classification-metrics.md)
- [Промпт-инжиниринг](https://llmdocs.ru/wiki/prompt-engineering.md)
- [RAG (генерация с дополнением поиском)](https://llmdocs.ru/wiki/rag.md)
- [MLflow](https://llmdocs.ru/wiki/mlflow.md)

## Источники

1. [Zheng et al. — Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena (2023)](https://arxiv.org/abs/2306.05685)
2. [UK AISI — Inspect](https://inspect.aisi.org.uk/)
3. [EleutherAI — lm-evaluation-harness](https://github.com/EleutherAI/lm-evaluation-harness)
4. [Anthropic — Define success criteria and build evaluations](https://docs.claude.com/en/docs/test-and-evaluate/develop-tests)
5. [promptfoo — документация](https://www.promptfoo.dev/docs/intro/)
6. [Jimenez et al. — SWE-bench (2023)](https://arxiv.org/abs/2310.06770)
7. [Ragas — документация](https://docs.ragas.io/)
