В эпоху, когда большие языковые модели (LLM) стали неотъемлемой частью разработки программного обеспечения, анализа данных и креативных процессов, возникла острая необходимость в надежных методах их оценки. Как понять, действительно ли новая модель лучше старой? Или, что еще важнее, лучше ли она справляется с конкретной задачей, например, генерацией SVG-графики или написанием хайку? Ответ на эти вопросы часто кроется в деталях конфигурации, системных промптах и используемых «поводках» (harnesses) для агентов. Именно эту проблему пытается решить новый инструмент smevals — компактный, но мощный фреймворк для оценки моделей, промптов и агентов.
Проект был разработан Саймоном Уиллисоном (Simon Willison) совместно с исследовательской лабораторией прикладного искусственного интеллекта Prime Radiant под руководством Джесси Винсента (Jesse Vincent). Это не просто еще один скрипт для бенчмарков, а продуманная экосистема, позволяющая инженерам и исследователям структурировать процесс тестирования. smevals предлагает четкую терминологию и разделение задач, что делает процесс оценки воспроизводимым и понятным даже для сложных сценариев использования.
В этой статье мы подробно разберем, как работает smevals, почему автор посвятил годы отработке его терминологии, и как вы можете использовать этот инструмент для оценки своих собственных AI-решений. Мы рассмотрим архитектуру проекта, ключевые концепции и практические шаги по запуску первых тестов.
01Зачем нужен smevals: Контекст и философия
Оценка моделей (evals) — это одна из самых сложных областей в современной разработке AI. Традиционные бенчмарки, такие как MMLU или HumanEval, дают общую картину, но часто не отражают специфику вашей задачи. Вам может быть важно не то, насколько хорошо модель знает математику, а то, насколько точно она генерирует код в специфическом формате или соблюдает ли она тон общения в чат-боте.
Саймон Уиллисон отмечает, что smevals является третьей итерацией его попыток создать удобный подход к оценке. Предыдущие попытки, вероятно, страдали от излишней сложности или, наоборот, недостаточной гибкости. smevals же предлагает баланс: он достаточно прост для быстрого старта, но достаточно гибок для сложных кастомных проверок.
Ключевая идея заключается в том, чтобы отделить процесс выполнения задачи от процесса оценки результата. Это позволяет запускать тесты на разных моделях или с разными параметрами, а затем применять к ним различные критерии качества без необходимости перезапуска самих тестов. Такой подход экономит время и вычислительные ресурсы, особенно когда речь идет о дорогих моделях, таких как GPT-5.5 или Claude Opus 4.6.
На изображении выше представлен отчет, сгенерированный smevals. Он демонстрирует, как выглядят результаты тестирования: структурированные данные, которые можно легко интерпретировать как человеку, так и машине. Это наглядно показывает, что инструмент ориентирован не только на разработчиков, но и на стейкхолдеров, которым нужно принимать решения на основе данных.
02Архитектура проекта: Терминология и структура
Одной из самых трудоемких частей разработки smevals, по словам автора, стала разработка единого словаря терминов. Четкая терминология критически важна, когда речь идет о сложных пайплайнах обработки данных. Давайте разберем основные понятия, которые использует фреймворк.
Eval (Оценка)
Eval — это коллекция вызовов (challenges), предназначенных для ответа на конкретный вопрос о возможностях модели. Например, вопрос может звучать так: «Насколько хорошо эта модель генерирует валидный SVG-код?». Eval выступает в роли контейнера, объединяющего все аспекты тестирования одной конкретной способности или качества модели.

Task (Задача)
Каждый eval состоит из набора tasks. Задача — это конкретный вызов. Если eval — это «генерация SVG», то задача может быть: «Сгенерируй SVG пеликана, едущего на велосипеде». Задачи определяют входные данные и контекст, которые передаются модели. Они хранятся в виде YAML-файлов внутри директории eval-а, что делает их легко читаемыми и редактируемыми.
Config (Конфигурация)
Когда вы запускаете eval, вы делаете это против одной или нескольких configs. Конфигурация определяет, какая именно модель будет использоваться для выполнения задачи, а также любые дополнительные параметры. Это может быть конкретная версия модели (например, GPT-5.5), системный промпт, параметры температуры или даже используемый «поводок» (agent harness). Именно через configs вы тестируете гипотезы: «Работает ли модель лучше с промптом А или с промптом Б?»
Run (Запуск)
Run — это запись того, что произошло, когда конкретный config использовался для выполнения конкретной задачи. Это сырые данные: что было отправлено модели и что она вернула. Запуски хранятся отдельно от результатов оценки, что позволяет переосмысливать результаты, не пересчитывая их заново.
Grader (Оценщик) и Check (Проверка)
После сбора запусков необходимо оценить их качество. Это делает grader, который выставляет grade (оценку). Grader запускает последовательность checks (проверок). Проверки могут быть простыми: например, проверка наличия определенной строки в ответе или валидация XML. Но они также могут быть сложными кастомными операциями, реализованными в виде скриптов-чекеров (checkers), которые могут использовать другие модели для анализа ответа. Например, можно использовать более сильную модель, чтобы оценить креативность ответа на хайку.
03Как начать работу: Пошаговое руководство
Установка и запуск smevals спроектированы так, чтобы быть максимально простыми. Инструмент распространяется через пакетный менеджер uv, что обеспечивает быструю установку и изоляцию зависимостей. Вот как выглядит типичный рабочий процесс.
Шаг 1: Изучение документации
Самый быстрый способ познакомиться с инструментом — попросить вашего AI-ассистента (coding agent) запустить документацию. Вы можете сказать агенту: run uvx smevals docs. Эта команда выведет содержимое README-файла прямо в ваш терминал, позволяя быстро ознакомиться с синтаксисом и примерами без необходимости открывать браузер.
Шаг 2: Создание набора тестов
Затем попросите агента создать для вас eval-сет. Это будет директория, содержащая YAML-файлы, описывающие задачи и конфигурации. Вы можете создать их вручную, если знаете структуру, или доверить это AI-инструменту, предоставив ему описание того, что вы хотите протестировать.
Шаг 3: Запуск тестов
После создания eval-а вы можете запустить его против различных моделей. Команда выглядит следующим образом:

uvx smevals run path-to-eval/ -m gpt-5.5 -m claude-opus-4.6Эта команда запустит все задачи из директории path-to-eval/ сначала с моделью GPT-5.5, а затем с Claude Opus 4.6. Результаты каждого запуска будут сохранены в виде отдельных записей. Обратите внимание, что вы можете указать столько моделей, сколько нужно, для сравнительного анализа.
Шаг 4: Оценка результатов
После того как запуски завершены, необходимо оценить их качество. Для этого используется команда grade:
uvx smevals grade path-to-eval/Эта команда применяет определенные вами проверки (checks) к каждому запуску. Если вы использовали кастомные скрипты-чекеры, они будут выполнены на этом этапе. Результаты оценки (grades) сохраняются вместе с данными запусков, но не перезаписывают их, что позволяет вам менять критерии оценки и пересчитывать результаты.
Шаг 5: Визуализация
Наконец, вы можете просмотреть результаты. Есть два основных способа:
- Локальный веб-сервер: Запустите
uvx smevals serve path-to-eval/. Это запустит локальный сервер, на котором вы сможете интерактивно исследовать результаты, фильтровать их и сравнивать модели. - Статический HTML-отчет: Используйте команду
smevals build, чтобы создать статический HTML-файл. Этот файл можно разместить на любом веб-хостинге, включая GitHub Pages, и делиться им с командой или клиентами.
04Пример использования: Оценка генерации хайку
Чтобы проиллюстрировать работу smevals, Саймон приводит пример eval-а, созданного для оценки способности моделей писать хайку. Это отличная задача, так как она требует от модели не только знания структуры стиха (5-7-5 слогов), но и понимания поэтики, метафор и контекста.
В таком eval-е задачи могут включать различные темы: природа, технологии, эмоции. Конфигурации могут различаться системными промптами: один промпт может требовать строгого соблюдения структуры, другой — более творческого подхода. Проверки (checks) могут включать:
- Проверку количества строк (должно быть 3).
- Проверку наличия рифмы или ритма (если это требуется).
- Использование другой LLM для оценки «поэтичности» ответа.

Результаты такого теста позволяют наглядно увидеть, какие модели лучше справляются с творческими задачами, а какие — с техническими. Это дает ценную информацию для выбора модели под конкретные бизнес-задачи.
05Гибкость и расширяемость: Кастомные чекеры
Одной из сильных сторон smevals является возможность использования кастомных скриптов-чекеров. Это означает, что вы не ограничены простыми строковыми сравнениями или проверками валидности XML. Вы можете написать скрипт на Python, который:
- Анализирует семантическое сходство ответов с эталонными.
- Использует внешние API для проверки фактов.
- Запускает другую LLM для оценки качества ответа по сложным критериям.
Это делает smevals универсальным инструментом, который можно адаптировать под практически любую задачу. Например, если вы тестируете модель для генерации SQL-запросов, вы можете написать чекер, который пытается выполнить сгенерированный запрос на тестовой базе данных и проверяет результат.
06Доступность и локальный запуск
Для пользователей из России и других стран, где могут возникать сложности с доступом к зарубежным сервисам или облачным ресурсам, важно отметить, что smevals — это локальный инструмент. Он работает через uvx, что означает, что все вычисления происходят на вашей машине или в вашем локальном окружении.
Конечно, для запуска тестов вам все равно потребуется доступ к API моделей (GPT, Claude и т.д.), но сам процесс оценки, хранения данных и генерации отчетов полностью контролируется вами. Это обеспечивает безопасность данных и гибкость в выборе провайдеров. Вы можете использовать локальные модели через Ollama или LM Studio, если хотите полностью изолировать процесс от внешних сетей.
07Что это значит на практике
Внедрение smevals в рабочий процесс разработки AI-приложений может значительно повысить качество ваших продуктов. Вот несколько сценариев, где этот инструмент будет особенно полезен:
- Выбор модели: Перед миграцией на новую модель вы можете запустить полный набор тестов, чтобы убедиться, что она не ухудшает качество работы в критических сценариях.
- Оптимизация промптов: Вы можете быстро протестировать десятки вариантов системных промптов и выбрать тот, который дает наилучшие результаты по вашим метрикам.
- Контроль качества: Включите smevals в CI/CD пайплайн, чтобы автоматически проверять изменения в коде или конфигурациях на предмет регрессий в качестве ответов модели.
- Исследования: Для исследователей это удобный инструмент для сравнения архитектур и методов обучения на стандартизированных наборах задач.
smevals — это не просто еще один инструмент в длинном списке утилит для AI. Это попытка структурировать хаос, связанный с оценкой моделей, и предложить четкий, воспроизводимый и расширяемый подход. Если вы серьезно относитесь к качеству ваших AI-решений, стоит уделить время изучению этого фреймворка. Его простота в использовании и мощь в возможностях делают его отличным выбором как для стартапов, так и для крупных исследовательских лабораторий.
Саймон Уиллисон выражает надежду на дальнейшее развитие проекта и интеграцию с собственными проектами. Это обнадеживает, так как означает, что smevals будет эволюционировать вместе с потребностями сообщества. Следите за обновлениями, экспериментируйте с тестовыми наборами и делитесь своими находками. В мире, где модели меняются каждую неделю, наличие надежного инструмента для оценки становится конкурентным преимуществом.
Источник: Simon Willison ↗
