Это я прижал к стенке ChatGPT и заставил работать как положено, как завещал великий Сэм'
Это я прижал к стенке ChatGPT и заставил работать как положено, как завещал великий Сэм'

Несмотря на обилие моделей (а я время от времени использую четыре топовые), всё-таки на стыке моих технологий GPT-4.1 даёт лучший результат по сравнению с другими.

Всё равно главным секретом остаётся следующее:

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

Но сегодня я смог этот уже довольно-таки мощный инструмент существенно улучшить. По моим внутренним ощущениям — наверное, на 50%.

Вот что я сделал

Теперь, когда я пишу запрос, в конце всегда добавляю это:

«Пожалуйста, объясни как ты понял мою проблему, почему я считаю что это важно, как ты собираешься это решать и что будет правильным решением.»

Если задачи не слишком сложные, то я её сразу же дополняю: «Не дожидаясь следующего запроса, сразу после описания предоставь мне полное готовое решение, которое будет включать в себя весь код компонента без сокращений.»

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

Конкретный пример

Давайте расскажу на конкретном примере, чтобы вы посмотрели, как отвечает модель.

И так, у меня была проблема, связанная с анимацией badge в React-компоненте меню. При наведении badge исчезал, но текст ссылки оставался обрезанным, не занимая освободившееся место. Вот так я написал задачу:

«Исследуй проблему с неправильной анимацией ссылок, которые содержат badge. При наведении на такую ссылку badge исчезает и появляется стрелка — это правильное поведение, но текст ссылки остается укороченным, и мы не можем прочитать полное содержимое. Правильное поведение должно заключаться в том, чтобы после наведения исчезал badge, появлялась стрелка, и при этом исходный текст ссылки должен восстанавливаться до такого состояния, как будто badge в ссылке не существовал. Пожалуйста, объясни как ты понял мою проблему, почему я считаю что это важно, как ты собираешься это решать и что будет правильным решением, а потом предоставь готовое решение.»

А теперь давайте посмотрим, как мне ответила модель:

  1. Как я понял твою проблему

    Если у ссылки есть badge и длинный текст, визуально ссылка выглядит как:
    [ТЕКСТ ...] [BADGE]

    При наведении badge исчезает, появляется стрелочка (ArrowRight). Однако область текста не расширяется, она по-прежнему занимает меньше ширины, из-за чего длинный текст остаётся урезанным и не становится полностью видимым.

  2. Почему это важно для UX: пользователь получает максимум информации при наведении, похожее поведение часто реализовано в рациональных интерфейсах (боковые меню, дропдауны — см. Figma, Notion и т.д.) — бейдж не мешает чтению подробной информации.

  3. Как это буду решать

    Использовать условный рендер вместо opacity: при наведении показывать только стрелку и текст, без badge вообще (badge удаляется из DOM или заменяется на стрелку). У <span>, содержащего текст, не должно быть фиксированной ширины – оно должно автоматически занимать освободившееся место.

  4. Подходящее решение:

  • При обычном состоянии: [ТЕКСТ (укорочен)] [badge]

  • При наведении: [ТЕКСТ (полный)] [ArrowRight]

Ниже модель предоставила полностью работоспособное решение с правильным условным рендером и динамическим управлением шириной.

Делайте выводы

Лично я для себя уже сделал — буду использовать этот подход постоянно. Модель теперь не просто генерирует код, а думает над задачей структурированно, что кардинально улучшает результат.

Кстати говоря, кто за мной следит — это связано с разработкой интерфейса меню для моего open source стартера Next.js для приложений с искусственным интеллектом AIFA. Прямо сейчас я работаю над созданием второй части из четырёх для генерации красивых страниц при помощи команд — это будет одна из функций, которая будет представлять собой аналог v0 или Lovable.

P.S. Если тебе интересна тема разработки с AI и open source решения, буду рад, если подпишешься — уже сегодня покажу открытый исходный код очень интересного варианта для верхнего меню сайта и мобильной версии, которая может масштабироваться до бесконечного количества категорий и ссылок, при этом оставаясь элегантной.

AIFA NAV BAR MRGA MENU
AIFA NAV BAR MRGA MENU

Ссылки:

Комментарии (12)


  1. ninJo
    28.07.2025 21:57

    В Cline это дефолтный подход, там есть plan mode


  1. kolya7k
    28.07.2025 21:57

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


    1. bolshiyanov Автор
      28.07.2025 21:57

      Я согласен, проблема не сложная , но часто все же мне нужно точно знать как мы оба думаем, на колко синхронизировались. Мне например очень понравилось как он в скобочках показал свое восприятие задачи. В целом плоские решени вполне себе ок. А ват чуть больше чем 50 строк … не работает )))


  1. psemilanceata
    28.07.2025 21:57

    Вы начали приближаться к тому результату, который вполне стандартен у дипсика с опцией рассуждения. Пройдёт ещё немного времени и вы сможете по качеству его догнать :) А там глядишь, и выйдете на финишную прямую в борьбе с безусловным лидером по качеству разработки - Kimi.


    1. bolshiyanov Автор
      28.07.2025 21:57

      То есть борьба бесконечна)


    1. zerocool056
      28.07.2025 21:57

      который вполне стандартен у дипсика с опцией рассуждения.

      круто что дипсик так хорош :) только вот на самом деле нет


  1. Cup_KypaMoB
    28.07.2025 21:57

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


    1. bolshiyanov Автор
      28.07.2025 21:57

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


  1. Kaiea
    28.07.2025 21:57

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


    1. bolshiyanov Автор
      28.07.2025 21:57

      Я так делал раньше. Сейчас просто нужно много времени кодить с ии и прийдет понимание с кем тебе комфортно. Мой опыт такой: если есть фрагмент кода в котором нужно быстро разобраться: я использую Gemini, если нужно написать код то только 4.1. Опен Аи.


  1. LDiga
    28.07.2025 21:57

    Я себе сделал стандарт работы и все делаю только так https://github.com/Ldiga174/AIL-Assistant-Instruction-Layer посмотри может тоже что то для себя возьмёшь. Но я в курсор это все устроил .


    1. bolshiyanov Автор
      28.07.2025 21:57

      Интересно но с ходу не разобрался как это работает и как задачи решает. Буду благодарен если ты расскажешь какая стоит задача и что будут после ее решения.
      Интересно потому, что в своем. https://aifa-agi/aifa я также стремлюсь к созданию автономных агентов кодинга