
Любой разработчик, работавший с современными AI-агентами, рано или поздно сталкивается с одной и той же проблемой: агент вроде бы отвечает по делу, но игнорирует часть инструкций. Просишь ответить в два абзаца — приходит простыня. Просишь перечислить ровно пять пунктов — получаешь три. Просишь не использовать маркдаун — агент всё равно вставляет код.
Эта проблема не субъективна. Её можно измерить. В 2024 году команда Google Research опубликовала IFEval (Instruction Following Evaluation) — открытый бенчмарк, который позволяет объективно оценить, насколько хорошо модель или агент следует явным инструкциям. Метод уже стал стандартом де-факто: его используют при выпуске новых моделей (от GPT-4 до Llama 3), и он легко воспроизводится локально.
Разбираемся, как устроен IFEval, как запустить его для своего агента и что делать с результатами.
Что измеряет IFEval и почему это важно для агентов
IFEval оценивает не качество ответа в целом, а точность выполнения вероятностно проверяемых инструкций (verifiable instructions). Это такие инструкции, выполнение которых можно проверить автоматически — например, «в ответе должно быть ровно 500–600 символов» или «перечисли пункты, каждый с новой строки, используя дефис». Для каждого примера в датасете авторы вручную прописали код проверки.
На первый взгляд, это кажется тривиальным. Но практика показывает обратное: даже самые мощные модели регулярно проваливают такие простые ограничения. Для AI-агентов, которые действуют автономно — генерируют код, заполняют формы, пишут отчёты — цена ошибки следованию инструкциям напрямую влияет на пригодность результата.
IFEval покрывает 25 типов инструкций: от ограничения длины (symbols, words, paragraphs) до требований к форматированию (JSON, YAML, Markdown), пунктуации, количеству элементов и наличию определённых ключевых слов. Всего в датасете 541 пример, разбитый на категории.
Почему речь идёт об агентах, а не просто LLM? Потому что агенты получают инструкции не только от пользователя, но и от системы (system prompt) и от промежуточных шагов. Если агент игнорирует часть иерархии инструкций, он может сломать весь пайплайн. IFEval позволяет оценить этот срез систематически.
Архитектура IFEval: как устроен тест
Бенчмарк состоит из трёх компонентов:
- Промпты с инструкциями — каждый пример содержит инструкцию (например, «Напиши краткое эссе на 200–250 слов о вреде сахара») и перечень проверяемых условий.
- Руководства по валидации — для каждого условия написан Python-код, который проверяет ответ. Например, для условия «длина от 200 до 250 слов» — функция считает слова.
- Метрики — два основных показателя: strict accuracy (все условия выполнены) и loose accuracy (усреднённое выполнение отдельных условий). Авторы рекомендуют loose как более стабильную.
Датасет включает два набора промптов (prompt-level) и один — с перемешанными инструкциями (prompt+instruction-level). Второй вариант сложнее, так как модель должна одновременно удерживать основную задачу и все ограничения.
Для агентов имеет смысл использовать именно prompt+instruction-level версию: она ближе к реальности, где агент получает многослойные указания.
Как запустить IFEval на своём агенте
Всё необходимое есть в открытом репозитории. Мы покажем минимальный рабочий пайплайн с использованием Hugging Face и API любой LLM.
Шаг 1. Установка
git clone https://github.com/google-research/ifeval
cd ifeval
pip install -r requirements.txt
Шаг 2. Загрузка датасета
from datasets import load_dataset
dataset = load_dataset("google-research-datasets/ifeval", split="train")
print(dataset[0]) # пример
Шаг 3. Запуск инференса
У каждого примера есть поле prompt (основной промпт) и instruction (инструкция к выполнению). Для агента объединяйте их в один запрос. Важно: IFEval рассчитан на ответы «с нуля» — агент не должен иметь доступа к внешним инструментам, если только это не часть теста.
Пример интеграции с OpenAI API:
import openai
from tqdm import tqdm
client = openai.OpenAI()
def predict(prompt, instruction):
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": prompt + "\n\n" + instruction}],
temperature=0
)
return response.choices[0].message.content
# Сохраняем ответы в список
outputs = []
for item in tqdm(dataset):
outputs.append(predict(item["prompt"], item["instruction"]))
Шаг 4. Оценка
В репозитории есть скрипт main.py, который сравнивает ответы с эталонными и выводит метрики. Пример запуска:
python main.py --input_path your_results.json
На выходе вы получите два числа: числитель и знаменатель для каждой метрики. Их удобно нормализовать до процентов.
Что вы узнаете из результатов: разбор показателей
Таблица ниже показывает типичные интерпретации:
| Метрика | Значение > 90% | 70–90% | < 70% |
|---|---|---|---|
| Strict accuracy | Модель почти всегда выполняет все инструкции — подходит для production агентов. | Хорошо для базовой версии, но единичные сбои могут накапливаться в цепочках вызовов. | Модель часто пропускает или искажает часть инструкций — требует доработки системного промпта. |
| Loose accuracy | Отлично: в среднем каждая инструкция выполнена. | Приемлемо, но нужен анализ выпадающих категорий. | Системные проблемы с пониманием формальных ограничений — рассмотрите смену модели. |
| Покатегорийная точность | Выводится детализация по 25 типам. Например, модель может быть отличной в ограничении длины, но плохой в требовании JSON. Это указывает на конкретную слабость агента. | ||
Важно: IFEval — не тест на здравый смысл или качество контента. Модель может дать бессмысленный ответ, но при этом точно выполнить все инструкции. Поэтому IFEval нужно комбинировать с другими метриками (например, ответ на вопрос или полезность).
Ограничения IFEval, которые нужно знать
Бенчмарк не лишён слабых мест, и мы обязаны их перечислить:
- Проверка только поверхностная. IFEval не оценивает, поняла ли модель инструкцию — только выполнила ли её формально. Например, если модель должна перечислить пять стран Африки и пишет пять случайных названий, это засчитывается как успех.
- Датасет относительно невелик — 541 пример. Для некоторых категорий всего по 20–30 запросов, что снижает статистическую значимость покомпонентных выводов.
- Отсутствие контекстных инструкций. Все примеры — единичные диалоги. В реальной работе агент может получать инструкции постепенно или переопределять их. IFEval не покрывает этот сценарий.
- Перекос в сторону API-моделей. Датасет создавался на основе типичных инструкций для LLM, а не для агентов с тулзами. Некоторые инструкции (например, «используй LaTeX») нерелевантны для coding-агентов.
- Возможность «подглядывания». Поскольку код проверки открыт, модель могла встретить примеры в обучающих данных. Для закрытых моделей это риск завышения оценок.
Тем не менее, на данный момент IFEval — лучший открытый стандарт для быстрой проверки instruction following. Его используют сами разработчики API (OpenAI, Anthropic, Meta), и он хорошо коррелирует с человеческой оценкой во многих сценариях.
Как адаптировать IFEval для своего агента
Вы можете расширить тест, добавив собственные проверяемые инструкции. Например, если ваш агент должен всегда подписывать ответ строкой «[END]», можно добавить такое условие.
Для этого нужно:
- Создать функцию-валидатор (принимает строку ответа, возвращает bool).
- Добавить её в словарь в
validation_instructions.py. - Прописать в промпте явное требование.
Пример собственного валидатора:
def check_ends_with_end_flag(response: str) -> bool:
return response.strip().endswith("[END]")
Такой подход позволяет построить тест именно под ваш use case, не отвлекаясь на универсальные категории.
Ещё один вариант — использовать IFEval как базовую проверку перед сложными сценариями. Если агент проваливает простые инструкции вроде «не более 100 слов», нет смысла проверять его способность планировать мультиагентные взаимодействия.
Практические выводы
- IFEval — бесплатный, открытый и воспроизводимый способ оценить instruction following вашего AI-агента. Запуск занимает около часа.
- Используйте loose accuracy как основной показатель, а покомпонентную разбивку — для точечных улучшений системного промпта.
- Не полагайтесь на IFEval как на единственный критерий — он измеряет только формальное выполнение, не качество ответа.
- Для агентов, работающих в production, рекомендуется помесячный прогон IFEval при смене модели или обновлении промптов.
Что дальше? Загрузите датасет, запустите тест на своей модели и посмотрите, по каким категориям она проседает. Часто достаточно добавить одну фразу в system prompt — например, «читай и выполняй все ограничения в инструкции» — чтобы поднять strict accuracy на 10–15 процентных пунктов.
Полные исходные коды, датасет и документация — в репозитории google-research/ifeval и на Hugging Face.
Изображение: схема категорий инструкций из оригинальной работы Google Research (arxiv:2310.11453).