Security Lab

Как выбрать ИИ для программирования: шесть задач для сравнения моделей

276
Как выбрать ИИ для программирования: шесть задач для сравнения моделей

GPT-6.1 Sol стоит в пять раз дешевле GPT-6 Astra, а в рейтинге Artificial Analysis уступает ей всего один балл. Справится ли дешевая модель именно с вашим кодом, рейтинг не покажет.

Ниже разберем шесть небольших задач на Python, JavaScript и SQL с заранее известным ответом. На них видно, какой ИИ для программирования подходит для повседневной работы. В каждой задаче спрятана типичная ловушка: округление копеек, гонка запросов, задвоение строк в отчете или двойное списание.

Какие модели сравнивать и почему важна среда

Для первого прогона хватит двух моделей от каждого разработчика, повседневной и более дорогой. Состав на 5 ноября 2026 года:

Разработчик Повседневная модель Модель для сложных изменений
OpenAI GPT-6.1 Sol GPT-6 Astra
Anthropic Claude Sonnet 5.5 Claude Opus 5.5
Google Gemini 3.8 Flash Gemini 4 Argon

Флагман Anthropic сейчас Claude Fable 5.1. Для кода компания рекомендует начинать с Opus 5.5 и переходить на Fable, если Opus не справляется даже на высокой настройке рассуждения.

Точные цены приведены в анонсе OpenAI: GPT-6.1 Sol стоит $2 и $10 за миллион входных и выходных токенов, GPT-6 Astra $10 и $50. При оплате через API разница копится с каждым обращением агента к файлам проекта.

Codex, Claude Code и Antigravity сами читают файлы проекта и запускают тесты. Обычный чат видит только вставленный фрагмент и в сравнении с агентом заранее проигрывает на задачах, где нужен весь проект.

Рядом с каждым результатом нужна пометка о настройке рассуждения. Уровень High у OpenAI, Anthropic и Google задает разные условия, и без пометки цифры разных прогонов перестают быть сравнимыми.

Python, JavaScript и SQL: три задачи про данные

Первые три задачи проверяют обращение с данными: деньгами в CSV, ответами сервера в браузере и суммами в SQL-отчете.

Python. Модель считает сумму платежей из файла. Пустое поле по условию пропускается и учитывается отдельно, мусор вроде abc останавливает импорт с номером строки.

id,amount
 1,0.10
 2,0.20
 3,
 4,-0.05

Правильный ответ: сумма 0.25 и один пропуск. Расчет через float копит двоичную погрешность, которую округленный вывод прячет:

>>> 0.1 + 0.2
 0.30000000000000004
  • Decimal из строки или расчет в копейках вместо float.
  • Ошибка с номером строки на значении abc.
  • Проверка is_finite(): без нее Decimal примет NaN и Infinity.

JavaScript. Поиск по мере ввода отправляет запрос на каждую букву. Пользователь набрал py, затем pyt, и ответ на py пришел последним.

input.addEventListener("input", async () => {
   const res = await fetch("/search?q=" + encodeURIComponent(input.value));
   render(await res.json()); // запоздавший ответ затирает свежий
 });
  • Модель замечает гонку ответов. Задержка перед отправкой порядок ответов не исправляет.
  • Устаревший ответ отбрасывается по номеру запроса или отменяется через AbortController.
  • Очистка поля, поздняя ошибка и индикатор загрузки не ломают новый поиск.

SQL. В orders два заказа, на 1000 и 500, в refunds два возврата по первому заказу, 100 и 50. Отчет должен показать продажи 1500, возвраты 150 и остаток 1350.

SELECT SUM(o.amount) AS sales,
        SUM(r.amount) AS refunds
 FROM orders o
 LEFT JOIN refunds r ON r.order_id = o.id;
 -- sales = 2500: первый заказ попал в две строки
  • Возвраты сначала собираются в одну строку на заказ, либо итоги считаются раздельно.
  • Нет SUM(DISTINCT o.amount): с ним два заказа одинаковой стоимости схлопнутся в один.
  • Пустые таблицы учтены: SUM по пустому набору в PostgreSQL дает NULL, ноль подставляет COALESCE.

Рефакторинг, отладка и чужой код

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

Рефакторинг. Функция возвращает идентификаторы в исходном порядке и с повторами, модель выносит дублирующуюся логику в помощник. Для входа [2, 1, 2] ответ остается [2, 1, 2]. Сортировка, удаление повторов или возврат генератора ломают вызывающий код, даже если новая версия короче.

Отладка. Ноль в конфиге отключает таймер, отсутствующий ключ или None означают 30 секунд. Строка ниже превращает ноль в 30, потому что ноль в Python ложный:

timeout = config.get("timeout") or 30

Ожидаемое исправление проверяет именно None и приходит вместе с тестами для нуля, отсутствующего ключа и положительного числа:

timeout = config.get("timeout")
 if timeout is None:
     timeout = 30

Чужой код. Модель прослеживает платеж от обработчика до шлюза и сохранения ответа. Проверка кэша перед оплатой защищает от повторного вызова после записи результата, но два одновременных запроса проходят проверку до первой записи, и клиент платит дважды. Обещание единственного списания без разбора блокировок и идемпотентности платежного API выдает поверхностное чтение.

Полезное объяснение ссылается на файлы и строки и отделяет прочитанный код от догадок. Найденную ошибку подтверждает тест, падающий до исправления и проходящий после.

Как сравнить результат

Каждой модели нужен одинаковый старт: те же исходники, зависимости, условия и команды проверки и отдельная копия проекта на каждый прогон. Для SQL указываются СУБД и схема, для JavaScript версия среды и фреймворк. Без единых условий разница окружений выглядит как разница моделей.

В таблицу результатов попадают прохождение проверок с первой попытки, число уточнений, время до принятой правки и расходы. В API считается весь сеанс с повторными запросами и чтением файлов, в подписке расход лимита. Быстрый ответ с получасовой ручной починкой обходится дороже самостоятельного решения.

Отдельная проверка нужна новым зависимостям. В исследовании 2026 года пять моделей выдумывали от 4,6 до 6,1% названий пакетов. 127 имен придумали все пять, и 53 из них оставались свободны для регистрации, то есть для подмены вредоносным кодом. Наличие пакета в реестре ничего не гарантирует, значение имеют официальный проект и издатель.

Повторный прогон со скрытыми от модели проверками выявляет подгонку под условие. В поиске меняется порядок ответов, в отчете появляются одинаковые суммы, в рефакторинге пустой список. Отключенный тест тоже создает видимость успеха, и изменения в тестах просматриваются отдельно.

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

Вопросы и ответы

Можно ли выбрать лучшую модель только по рейтингу?

Рейтинг помогает составить список кандидатов. Окончательный выбор требует задач из своего проекта, одинаковых условий и учета времени на проверку. Общий балл не гарантирует качество конкретного SQL-запроса или рефакторинга.

Когда достаточно обычного чата?

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

Можно ли доверить ИИ проверку собственного решения?

Дополнительная проверка полезна, но результат сверяется с условиями задачи, независимыми тестами и изменениями файлов. Совпадение ответов двух помощников правильность программы не доказывает.

Как проверять ИИ на закрытом рабочем проекте?

Через согласованный компанией сервис и рабочий аккаунт. Для предварительного сравнения подойдет отдельный пример без ключей и клиентских данных, а права на файлы и команды ограничиваются потребностями задания.

Claude Opus 5.5 Gemini 4 Argon GPT-6.1 Sol JavaScript Python SQL ИИ код нейросеть поиск ошибок программирование рефакторинг
Alt text
Обращаем внимание, что все материалы в этом блоге представляют личное мнение их авторов. Редакция SecurityLab.ru не несет ответственности за точность, полноту и достоверность опубликованных данных. Вся информация предоставлена «как есть» и может не соответствовать официальной позиции компании.
12.1111:00 SECURITM | вебинарПДн есть. А контроль где?Знаете, где обрабатываются ПДн и кто за них отвечает? На вебинаре 12.11 покажем, как связать процессы, системы и требования, найти пробелы.Регистрируйтесь! Реклама: ООО «СЕКЪЮРИТМ», ИНН 7820074059, 18+