Последние годы активно использую LLM и агентов для разработки продуктов и автоматизации рабочих процессов. Накопился значительный опыт – как позитивный, так и откровенно сложный. LLM полезны, но работа с ними – отдельная инженерная дисциплина, которой приходится учиться буквально на ходу. Вопреки громким обещаниям никакой магии не происходит – чаще наоборот. Попытки интегрировать ИИ-агентов в существующие процессы часто приводят к тому, что софт становится менее предсказуемым и начинает отнимать больше времени, чем экономить. За кажущейся простотой скрываются серьёзные инженерные вызовы.
Недавно посмотрел выступление Андрея Карпаты о том, как меняется программирование под влиянием ИИ. Нашёл в нём много точек пересечения с собственными наблюдениями. Поделюсь ключевыми идеями, которые меня зацепили.
**Три поколения программного обеспечения**
Карпаты разделяет развитие ПО на три этапа. Software 1.0 – классический код, который пишут разработчики вручную. Software 2.0 – нейросети, где вместо написания кода разработчик занимается подготовкой данных для обучения. Software 3.0 – текущий этап, где программировать начинают с помощью промптов на естественном языке.
**Антероградная амнезия LLM и её последствия**
Карпаты подчёркивает важный недостаток LLM – своеобразную амнезию. Современные модели практически лишены долговременной памяти: каждое новое обращение к ним начинается практически с чистого листа. На практике это требует специальных инженерных решений. Если заранее не проектировать механизмы памяти и контекста, разработчикам придётся постоянно «нянчить» модель.
**Human-in-the-loop вместо полной автономии**
Очень близка идея «Human-in-the-loop (HITL)». Сейчас модно говорить про автономных агентов, которые сами выполняют задачи от начала до конца. Карпаты справедливо предостерегает, что до полной автономии далеко, и приводит пример автопилота Tesla – 12 лет назад технология выглядела «почти готовой», но полной автономности так и нет.
Ставить человека «в цикл» – разумный подход. Проверка, контроль и корректировка – неотъемлемые этапы нормальной работы с LLM.
**Почему важен интерфейс**
Ещё один важный тезис – критическая роль UI. Хороший интерфейс помогает быстро контролировать результаты работы модели. Вместо бесконечного чтения текста пользователь должен сразу визуально видеть изменения и принимать решения. Мой опыт это полностью подтверждает. Без качественного интерфейса работа с LLM превращается в утомительный процесс.
**Проектировать ПО для агентов**
Сегодня появляется новая инженерная задача – делать цифровые продукты понятными не только людям, но и агентам. Документацию нужно писать иначе, так, чтобы её могли «прочесть» и люди, и LLM. Приходится заранее продумывать архитектуру хранения и обмена данными, иначе проект завязнет в бесконечных доработках.
Возникает необходимость создавать API, которые раньше не пришли бы в голову – специальные интерфейсы для ИИ. Речь идёт о переходе к AI-first архитектуре, в которой агенты и модели – не дополнительный слой, а фундамент системы.
Мне близок подход Карпаты именно отсутствием лишнего оптимизма и чёткой фиксацией реальности. До эпохи автономных суперагентов ещё далеко, и это нормально. Сейчас намного важнее научиться правильно интегрировать LLM и обычный софт, решая реальные задачи с человеком в центре этого процесса.
За месяцы написания кода с LLM у меня сформировалась собственная рабочая рутина и даже небольшие ритуалы управления процессом. Я перепробовал множество инструментов – от Codex, Aider, Claude и ChatGPT до Perplexity и Google AI Studio. В итоге постепенно сложилось понимание того, как лучше всего строить рабочий процесс, чтобы модель «помнила» и знала проект. Цель – нивелировать амнезию, превратить кодинг с LLM из сценария фильма «Мементо» в более предсказуемый «День сурка». Если интересно – могу отдельно написать об этом пост или небольшой гайд по работе с LLM.