Перейти к содержимому
НейроКуб
Открытый материал · 3 мин
Марк Суть

Пустой ответ получил высший балл: проверьте метрику DSPy до оптимизации

Учебное правило для хокку пропускает пустую строку. Как проверить оценщик на антипримерах, отделить обязательные условия от качества и лишь затем сравнивать программы.

Оптимизатор DSPy может улучшать балл и при этом поощрять плохие ответы. До платных прогонов полезно проверить саму метрику: что она поставит пустой строке, обрывку и ответу, который выполняет формальное правило, но не решает задачу.

В учебном примере DSPy оценка хокку устроена предельно просто: если название сезона встречается в тексте, ответ получает ноль, иначе — единицу. Это демонстрация одного критерия, а не полная проверка стихотворения. Из самого условия следует: пустая строка тоже получит единицу, если название сезона непустое. Мы разбираем логику функции, а не результат эксперимента с моделью.

Сначала попытайтесь обмануть оценку

Возьмите несколько искусственных ответов с заранее понятным качеством: пустоту, одну строку, три бессвязные строки и короткий осмысленный текст. Пропустите их через функцию напрямую, без обращения к LLM. Такой набор проверяет оценщик; он ещё ничего не говорит о качестве генератора.

Для условной задачи «три непустые строки без буквального названия сезона» минимальная защита может выглядеть так:

def score(text, season):
    text = text.strip().lower()
    if (len(text.splitlines()) != 3
            or any(not line.strip() for line in text.splitlines())):
        return 0.0
    return float(season.lower() not in text)

assert score("", "winter") == 0.0
assert score("snow", "winter") == 0.0
assert score("snow\nquiet\nwindow", "winter") == 1.0
assert score("snow\n\nwindow", "winter") == 0.0

Последний assert намеренно показывает предел защиты. Три слова на отдельных строках проходят формальные условия. Функция не проверяет образность, связность или слоги и не должна называться оценкой качества хокку целиком. Если это обязательные свойства, нужны отдельные критерии и примеры их нарушения.

Отделите обязательное от желательного

Не складывайте все признаки без разбора. Удобный рабочий контракт: при пустом или недопустимом ответе итоговый балл равен нулю; среди допустимых вариантов оценивается содержательная полезность. Иначе высокая оценка красивого стиля может компенсировать отсутствие самого ответа. Это предложенный способ организации проверки, а не встроенное правило DSPy.

В документации метрик DSPy описывает функцию, принимающую эталонный пример и предсказание. Поэтому сначала можно проверить эту функцию на контролируемых входах, а уже затем передать её оценке или оптимизации программы. Для трудно формализуемых свойств допустим модельный судья, но его решения тоже стоит сверить с человеческой разметкой.

После исправления сохраните исходный результат программы и сравнивайте варианты на одинаковых заданиях. Примеры для подбора инструкции и окончательной проверки держите раздельно. Если меняете критерий после просмотра ошибок, прежний балл перестаёт быть прямой точкой сравнения.

Практический порог готовности: все заранее составленные недопустимые ответы отклоняются, а причины оценок понятны. Только после этого рост балла начинает отвечать на полезный вопрос — стала ли программа лучше выполнять ваш контракт.

Комментарии

Пока нет комментариев. Начните обсуждение.