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

Почему ИИ делает «не то»

четыре причины, и все четыре лечатся запросом

Что это

ИИ почти никогда не ошибается «сам по себе». Он точно выполняет то, что услышал, — просто услышал он не то, что ты имел в виду. Причин ровно четыре, и у каждой свой признак, по которому её видно.

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

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

Задача одна и та же: добавить в бот команду, которая показывает погоду. Ниже — четыре способа получить «не то».

Причина 1. Ты не сказал

Самая частая. Ты не назвал деталь, ИИ подставил свою.

Не так
Добавь команду погоды

Ты держал в голове: бот на aiogram, ключ в переменной окружения, ответ одной строкой. ИИ ничего этого не слышал и подставил среднее по больнице: синхронный requests, ключ строкой прямо в коде, ответ на пять строк с эмодзи.

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

Лечение: назвать то, что было в голове. Четыре части запроса — статья 3.2.

Причина 2. Он не видит

ИИ не знает твоего проекта, если ему не показать. В чате он не видит файлов вообще. Агент в терминале видит, но только то, что успел прочитать.

Не так
Сделай так же, как в соседнем хендлере

Признак: ИИ выдумывает имена функций, импортирует несуществующие модули, пишет в стиле, которого в проекте нет.

Лечение: показать. Вставить файл, назвать путь, дать команду прочитать. Если объяснять приходится каждый раз — завести файл контекста проекта (статья 3.14).

Причина 3. Он помнит другое

Модель обучена на коде, которого в интернете было больше. А больше всего там кода для старых версий: aiogram 2 против aiogram 3, классовые компоненты React против хуков, старый Navigator во Flutter.

Не так
Напиши хендлер на aiogram

Признак: код выглядит уверенно, но не запускается. В ошибках — ImportError, AttributeError, «нет такого параметра». Или библиотека ругается, что способ устарел.

Лечение: называть версию. Не aiogram, а aiogram 3. Не React, а React 18, функциональные компоненты, хуки.

Причина 4. Он услышал буквально

ИИ сделал ровно то, о чём просили. Проблема в том, что просили не то.

Не так
Убери эту ошибку

Ошибка исчезнет. Скорее всего, её завернут в try/except и подавят — формально просьба выполнена. Разница между «убрать ошибку» и «починить причину» для тебя очевидна, для ИИ — нет.

Признак: задача закрыта, симптом ушёл, а проблема осталась. Или ушла вместе с нужным поведением.

Лечение: формулировать цель, а не действие. Не «убери ошибку», а «сделай так, чтобы ошибка сервера обрабатывалась в fetch_weather».

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

Сводная таблица — по ней причина определяется за несколько секунд.

Что видишьПричинаЧто делать
Код рабочий, но решение не твоёты не сказалназвать подробности
Выдуманные имена, чужой стильон не видитпоказать файлы
Не запускается, ImportErrorпомнит другоеназвать версию
Симптом ушёл, проблема осталасьуслышал буквальноназвать цель, не действие

Когда причина непонятна, спроси у самого ИИ — он отвечает на это честно:

Запрос
Прежде чем править: на какие предположения ты опирался,
когда писал этот код? Что из этого я тебе не говорил?

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

Не чини причину 1 средствами причины 3. Типичная сцена: получил не тот результат, начинаешь дописывать в запрос всё больше подробностей, а код всё так же не запускается — потому что дело было в версии, а не в подробностях.

Одна задача — одна причина за раз. Переписав запрос, меняй что-то одно. Иначе непонятно, что помогло, и в следующий раз придётся гадать заново.

«Он тупой» — не причина. Это ощущение возникает на причине 4, когда ИИ буквально выполнил просьбу. Проверь, что ты просил, а не что имел в виду.

Шпаргалка

  • Четыре причины: не сказал · не видит · помнит другое · услышал буквально.

  • Сначала определи причину, потом переписывай запрос.

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

  • Формулируй цель, а не действие.

  • Непонятно почему — спроси, на какие предположения он опирался.