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 |
| 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-запроса или рефакторинга.
Когда достаточно обычного чата?
Когда задача умещается в небольшой самостоятельный фрагмент. Изменения в нескольких модулях требуют среды, где ассистент читает нужные файлы, показывает изменения и запускает проверки.
Можно ли доверить ИИ проверку собственного решения?
Дополнительная проверка полезна, но результат сверяется с условиями задачи, независимыми тестами и изменениями файлов. Совпадение ответов двух помощников правильность программы не доказывает.
Как проверять ИИ на закрытом рабочем проекте?
Через согласованный компанией сервис и рабочий аккаунт. Для предварительного сравнения подойдет отдельный пример без ключей и клиентских данных, а права на файлы и команды ограничиваются потребностями задания.