Тест, который проверяет только примеры в подсказке, измеряет не то. Я столкнулся с этим, когда создавал небольшую оценку исправления кода для Kaggle Benchmarking Challenge. Целью было не спрашивать моделей, могут ли они определить...
Тест, который проверяет только примеры в подсказке, измеряет не то.
Я столкнулся с этим, когда создавал небольшую оценку исправления кода для Kaggle Benchmarking Challenge. Целью было не спрашивать моделей, смогут ли они обнаружить явно сломанную линию. Целью было выяснить, смогут ли они сохранить поведение, которое не было напрямую продемонстрировано в подсказке.
Неудача, которую я хотел поймать
Многие ошибки кода скрыты. Функция возвращает что-то правдоподобное, передает примеры в отчете о проблеме и при этом нарушает инвариант, который имеет значение в рабочей среде.
Созданный мной тест invariant-repair-suite содержит восемь случаев восстановления Python:
Пустые входные границы
Стабильный заказ
Пагинация курсора
Детерминированное разрешение конфликтов
Строгий анализ продолжительности
Сдерживание пути
Повторить бюджеты
Поведение LRU с сохранением состояния
Каждый случай дает модели три вещи: контракт, намеренно ошибочную реализацию и два видимых примера. Оценщик извлекает возвращенный код Python, выполняет его и проверяет как видимые, так и скрытые случаи.
Оценка намеренно скучная:
Case_score = 0,25 * видимая_регрессия_рейт + 0,75 * скрытый_край_кейс_рейт
Получается неверный или неисполняемый код