Запись архива

IFEval: как объективно проверить, что AI-агент выполняет ваши инструкции

Разбираемся, как работает бенчмарк IFEval от Google Research, и показываем, как с его помощью протестировать, насколько точно AI-агент следует заданным инструкциям — от форматирования до ограничений по длине ответа. Подробное руководство с установкой, запуском и интерпретацией результатов.

Категории инструкций бенчмарка IFEval от Google Research для оценки следования инструкциям LLM
Категории инструкций бенчмарка IFEval от Google Research для оценки следования инструкциям LLM
Lyrical Time Wastr : Take a Picture by Filter | by Beer30 | openverse | by

Любой разработчик, работавший с современными 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]», можно добавить такое условие.

Для этого нужно:

  1. Создать функцию-валидатор (принимает строку ответа, возвращает bool).
  2. Добавить её в словарь в validation_instructions.py.
  3. Прописать в промпте явное требование.

Пример собственного валидатора:

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).

Источники