How to improve the system for identifying AI cheaters onКак улучшить систему выявления AI читеров на Codeforces?
Разница между ru1 и ru2, 84 символ(ов) изменены
Привет всем участникам Codeforces и [user:MikeMirzayanov,2025-03-18]!↵

Последнее время очень часто сталкиваюсь с обсуждениями использования AI на соревнованиях. Решил поделиться мыслями и личным опытом по этому вопросу, а также внести несколько предложений, которые могли бы помочь бороться с проблемой нечестной игры более эффективно.↵

В качестве эксперимента я протестировал несколько моделей ChatGPT на платной основе, чтобы понять, насколько они способны эффективно решать контестные задачи на различные алгоритмы с точки зрения правильности решений и оптимизации.↵

- **o3-mini** отлично справляется с задачами уровня div2 A–C, но, начиная с div2 D модель без явно заданной идеи решения зачастую генерирует неоптимальный код, неверно определяя оптимальную асимптотику алгоритма. Особенно заметны проблемы в задачах на динамическое программирование при составлении рекуррентной формулы и в интерактивных задачах.↵
- **o3-mini-high** показывает лучшее понимание задач, глубже рассуждает, но тоже допускает ошибки на сложных задачах div2 E–F, особенно связанных с динамическим программированием. Зачастую для получения правильного и оптимального решения приходится вручную описывать модельный алгоритм с указанием точной формулы и асимптотики.↵

На своём опыте, разумеется, в исключительно экспериментальном и научных целях заметил одну интересную вещь — ChatGPT в стандартных условиях без подробных объяснений алгоритма обычно генерирует однотипный паттерн кода, содержащий примерно одинаковую структуру функций и их названия, схожий стиль переменных и повторяющиеся комментарии, частое использование одних и тех же заготовок и шаблонов, особенно для типовых алгоритмов. Да, безусловно обычный пользователь может написать подобный алгоритм, но будет явное отличие от ИИ в оформлении кода и структуре кода.↵

Именно это, на мой взгляд, можно использовать как один из уровней защиты для автоматической модерации решений на платформе. Уже сейчас модерация на Codeforces иногда успешно обнаруживает подозрительно похожие решения именно по такому признаку. Но это на самом деле контрится сейчас очень легко _путём обфускации кода, добавления "мусорных" и не нужных функций, из-за чего в конечном итоге код будет сложно прочесть_. На этот счёт можно продумать ещё несколько уровней защиты, которые будут работать параллельно с основным.↵

Основная идея заключается в поведенческом анализе действий пользователя в реалтайме. Можно внедрить следующий функционал:↵

1. Анализ в реальном времени разницы между моментом открытия условия задачи и первой отправкой решения↵
2. Отслеживание резких изменений в скорости решения задач, например, слишком быстрое решение сложной задачи после долгого простоя без активности↵
3. Фиксация абсолютно всех действий пользователя на странице контеста с пакетной отправкой зашифрованных данных на сервер для модуля антифрода, без которого дальнейшее действие на сайте будет невозможно, будем учитывать особо внимательно события копирования условия задачи со страницы↵

Отдельным и ключевым решением будет реализация клиентского приложения **Client <-> Server**. Основной его задачей будет мониторинг подозрительных действий. Чем-то его логика будет схожа с работой проктора при проведении, например, онлайн-экрамена.↵

1. Анализ процессов, запущенных во время контеста↵
2. Анализ входящего/исходящего траффика для контроля запросов к ИИ-сервисам↵
3. Создание и отправка на сервер случайных скриншотов экрана пользователя только при подозрительной активности↵

Конечно, с точки зрения конфиденциальности, такое решение будет не очень верным, поэтому стоит ещё подумать, как правильно его можно реализовать.↵

Пишите в комментариях ваши мысле и идеи, будет интересно послушать!

История

 
 
 
 
Правки
 
 
  Rev. Язык Кто Когда Δ Комментарий
ru7 Русский Sunb1m 2025-03-18 21:10:44 5 Мелкая правка: 'формлении кода и структу' -> 'формлении и структу'
ru6 Русский Sunb1m 2025-03-18 21:08:36 59
ru5 Русский Sunb1m 2025-03-18 21:05:58 4
ru4 Русский Sunb1m 2025-03-18 21:04:50 4 Мелкая правка: 'риментальном и научных' -> 'риментальных и научных'
ru3 Русский Sunb1m 2025-03-18 21:04:05 18 Мелкая правка: 'ой нечестной игры более эфф' -> 'ой нечестных соревнований более эфф'
ru2 Русский Sunb1m 2025-03-18 21:02:24 84
ru1 Русский Sunb1m 2025-03-18 21:01:59 3790 Первая редакция перевода на Русский
en1 Английский Sunb1m 2025-03-18 20:45:49 3842 Initial revision (published)