Программирование с ИИ
ENRU
1.3

Что ИИ делает хорошо, а что плохо

и почему по его тону этого не определить

Что это

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

Но главное в этой статье другое. Тон ответа не зависит от того, насколько ИИ прав. Он одинаково уверенно пишет типовую функцию, которую видел тысячу раз, и выдумывает метод библиотеки, которого не существует.

Как выглядит в коде

Схема из книги — будет перерисована для сайта
Уверенность ИИ не меняется, надёжность — меняется. Чем дальше задача от типовой, тем шире расхождение между тем, как звучит ответ, и тем, каков он на самом деле.

Где ИИ силён

ЧтоПочему
Типовой код: CRUD, парсинг, форматытакого в обучении было очень много
Обвязка и рутина: конфиги, аргументы, логированиескучно человеку, легко машине
Перевод между языкамиструктура сохраняется, меняется синтаксис
Объяснение чужого кодазадача на понимание, а не на изобретение
Первый черновикбыстрее, чем с пустого листа, даже если переписывать
Поиск своих же опечатоккогда указать, где искать

Общее у всего списка: задача распространённая, правильный ответ один, и проверить его легко.

Где ИИ слаб

ЧтоПочему
Твой проект и твои данныеон их не видел (статья 3.1, причина 2)
Свежие версии библиотекв обучении больше старого кода
Редкие библиотекимало примеров — больше выдумок
Решения с компромиссамине знает, что для тебя важнее
Всё, что требует помнить предыдущие решенияв новой сессии контекста нет
Оценка собственной работызащищает свой код (статья 3.8)

Почему уверенность не помогает

ИИ не сообщает, что он не уверен, — ни тоном, ни оговорками. Ответ про библиотеку, которую он знает назубок, и ответ про библиотеку, которую он видел дважды, звучат одинаково.

Отсюда практическое следствие: степень проверки определяешь ты, по характеру задачи, а не по тому, насколько убедительно звучит ответ.

Как сказать ИИ

Уверенность можно вытащить прямым вопросом — на него ИИ отвечает честнее, чем подразумевает тоном:

Запрос
Насколько ты уверен в этом коде? Отдельно скажи, какие места
ты бы проверил в первую очередь и почему.

Для незнакомой библиотеки стоит спросить прямо:

Запрос
Ты уверен, что метод session.fetch_all() существует
в aiohttp 3.9? Если не уверен — скажи, и я проверю
в документации.

Такая формулировка работает: прямо разрешив сказать «не уверен», ты получаешь гораздо более честный ответ, чем если спросить «этот метод существует?».

На что смотреть

Чем специфичнее задача, тем внимательнее читай. Типовой код можно просмотреть по диагонали; код для редкой библиотеки — построчно.

Уверенный тон на редкой теме — повод насторожиться, а не расслабиться.

«Это распространённая практика» — не аргумент. Распространённая где? В твоём проекте может быть иначе, и ИИ об этом не знает.

Задача на компромисс отдана ИИ. «Что лучше — SQLite или Postgres?» без указания твоих условий даст средний ответ, а не твой.

Шпаргалка

  • Решает распространённость задачи, а не её сложность.

  • Силён: типовой код, рутина, перевод, объяснение, черновик.

  • Слаб: твой проект, свежие версии, редкие библиотеки, компромиссы.

  • Тон ответа не зависит от того, насколько ИИ прав.

  • Степень проверки выбираешь ты, по характеру задачи.

  • Разреши сказать «не уверен» — и услышишь честный ответ.