Все уроки · 44
Что такое AI-агенты?
Модель в цикле с инструментами: думает, действует, наблюдает, повторяет. Что такое агенты, чем они отличаются от чат-ботов и почему стали практичными только недавно.
От ответов к действиям
Чат-бот отвечает на вопросы. Вы печатаете, он отвечает, разговор заканчивается. AI-агент делает нечто другое: он работает ради цели и для этого может действовать во внешнем мире — искать в интернете, читать файлы, вызывать API, запускать код. Какие шаги предпринять и в каком порядке, он решает сам.
Именно агенты отличают инструмент, который говорит о вашей работе, от инструмента, который выполняет её часть. Ассистенты для кода, которые чинят упавший тест, боты поддержки, которые оформляют возврат, исследовательские задания, которые заканчиваются отчётом со ссылками на источники, — всё это агенты. А идея, на которой они держатся, достаточно проста, чтобы уместиться в голове за две минуты.
Если нужна одна картинка, то вот она: шеф-повар с командой помощников. Шеф никогда сам не режет лук. Он смотрит на заказ, решает, что нужно дальше, и командует: «Нарежь две луковицы кубиками». Помощник выполняет и кладёт результат на стол, шеф смотрит на результат и называет следующий шаг. Шеф здесь — модель, помощники — инструменты, а стол — контекст. Так повторяется, пока блюдо не уйдёт в зал.
Суть умещается в одну фразу: возьмите модель, дайте ей инструменты и поместите её в цикл — думать, действовать, наблюдать, повторять. Остальная часть урока пересказывает этот единственный цикл тремя разными способами, пока всё не станет очевидным.
Ничего не «запущено»: каждый шаг — это один вызов
Здесь новички теряются чаще всего, поэтому разберём по шагам.
Внутри модели не работает никакой процесс. Там не исполняется код, не тикают часы, не запланировано никаких задач и ничто не ждёт в фоне. Языковая модель — это ящик, который принимает текст и выдаёт текст. Один вызов — один ответ. Это весь интерфейс; второго нет.
Работа агента держится на том, что ваш код вызывает этот ящик снова и снова:
- Ваш код собирает список сообщений — цель, правила, меню инструментов — и вызывает модель один раз. В ответ приходит одно сообщение.
- Если в этом ответе сказано «запусти
searchс такими-то аргументами», то поиск запускает ваш код. Модель пока только написала запрос, в мире ничего не изменилось. - Ваш код вставляет результат обратно в список сообщений как ещё одно сообщение и вызывает модель снова — отправляя весь разговор, который теперь на одно сообщение длиннее.
- Повторяйте. На каждом шаге модель перечитывает всё с самого начала, потому что между вызовами она ничего не помнит. Разговор и есть её память.
А цикл заканчивается потому, что так решает ваш код, — обычно когда в ответе модели нет запроса к инструменту и есть только сам ответ. Модель не останавливается сама — она просто перестаёт просить. Аккуратный цикл останавливается и по лимиту шагов или бюджету токенов, чтобы запутавшийся агент не мог бесконечно ходить по кругу.
Одной фразой: модель пишет, ваш код действует, модель читает, что вернулось, а ваш код решает, когда остановиться.
Пройдитесь по одному циклу целиком и посмотрите, где принимаются решения:
Пользователь просит о том, чего одним текстом не сделать.
«Найди три проектора с лучшими оценками дешевле 600 долларов и сравни их в таблице.»
Обратите внимание: именно шаг после первого результата делает это агентом. Чат-бот ответил бы уже после первого вызова. Этот же посмотрел на то, что вернулось, и изменил план.
Тот же цикл — так, как сообщения выглядят на самом деле
Ниже — тот же цикл в виде списка сообщений, который ваш код отправляет снова и снова. Пройдите по нему и следите, как растёт счётчик токенов в углу: модель перечитывает всё — каждый раз.
Из этого можно сделать три вывода:
- Второй вызов отправил всё заново. Модель получила тот же разговор, только длиннее, и прочитала его с начала. Поэтому длинная задача становится дорогой и поэтому важен размер окна контекста.
- Результаты инструментов — это просто текст. JSON, число, сообщение об ошибке — для модели всё это ещё один текст для чтения, ничем не отличающийся от вашего сообщения.
- Одного числа не хватало, и цикл это заметил. Такое восстановление и составляет всю ценность шаблона.
Ещё две вещи, на которых люди спотыкаются. Во-первых, инструменты запускает ваш код, а модель только просит о них. Во-вторых, фиксированного плана нет: каждый шаг существует потому, что предыдущий вернул новую информацию. Цикл реагирует на то, что модель только что увидела, и готового сценария у него нет.
Агент и чат-бот
Модель в обоих случаях может быть одной и той же. Разница в том, кто ведёт разговор:
- Чат-бот: один запрос — один ответ. Каждый следующий шаг решает человек. Подходит для объяснений, черновиков и мозговых штурмов.
- Агент: много запросов, которыми управляет сама модель, пока цель не достигнута. Подходит для задач из нескольких шагов, где важен результат, а не процесс.
Полезный тест: если задачу можно закончить за один ответ, берите чат-бота. Если нужно «найди это, а потом, исходя из этого, сделай то» — и так несколько раз, — вам нужен агент. Ассистенты для кода вроде Claude Code или Cursor в агентном режиме — именно это: модель, которая читает файлы, редактирует их, запускает тесты и продолжает, пока сборка не пройдёт.
Классические сценарии
Одни и те же схемы будут встречаться снова и снова:
- Агенты для кода — читают репозиторий, реализуют новую возможность, запускают тесты, дорабатывают при сбоях. Сегодня это самый коммерчески успешный тип агентов.
- Исследование и краткие обзоры — ищут, читают десяток источников и сводят их в отчёт со ссылками.
- Поддержка клиентов — находят заказ в базе данных, проверяют API доставки, оформляют возврат через внутренний инструмент — и всё это в одном разговоре.
- Работа с данными — берут CSV, пишут и запускают Python, чтобы очистить его, строят график результата и описывают, что он показывает.
- Эксплуатация и автоматизация — следят за панелью мониторинга, сортируют оповещения по важности, готовят исправление и открывают pull request, чтобы человек его утвердил.
Почему именно сейчас?
Идея агента старая: исследователи писали статьи о циклах с инструментами за годы до того, как они заработали хорошо. Изменились три вещи:
- Вызов инструментов стал полноправной возможностью API. Раньше модели сочиняли текст в надежде, что ваш парсер справится; теперь их обучают выдавать структурированный вызов инструмента (имя функции плюс аргументы в JSON). Это самый важный из факторов, сделавших агентов возможными.
- Модели стали достаточно хороши. Агент принимает много мелких решений подряд. Если каждый шаг надёжен на 90 процентов, десятишаговая задача удаётся лишь примерно в трети случаев. Современные модели повышают надёжность одного шага настолько, что многошаговые задачи доходят до конца.
- Интеллект подешевел. Агент может сделать 20 или 50 вызовов модели ради одной задачи, и каждый несёт растущий разговор. По вчерашним ценам это было нерентабельно, по сегодняшним для большинства компаний это погрешность округления.
Цена самостоятельности
Агенты меняют надёжность на самостоятельность. Чат-бот ничего не может сломать, потому что он только производит текст. Агент вызывает инструменты с реальными последствиями, поэтому возможны и реальные ошибки: неверный вызов API, удалённый файл, неудачная покупка. Поэтому в серьёзных агентных системах есть разрешения и белые списки, а всё разрушительное одобряет человек — модель предлагает, код решает.
Кто запускает инструменты в цикле агента?
Чем агент отличается от чат-бота?
Задача из десяти шагов, каждый шаг надёжен на 90 процентов. Как часто примерно удаётся вся задача?
Кто решает, что цикл закончен?
Что получает модель при втором вызове цикла?
Итог
Теперь вы знаете, что такое агент: это модель, которую вызывают снова и снова, каждый раз с растущим разговором и результатами инструментов, а действует и решает, когда остановиться, ваш код.
Углублённую версию этого цикла — рефлексию, память и список случаев, когда агент избыточен, — читайте в уроке AI-агенты 101, подробно. Дальше на этом пути ещё три остановки. SDK для агентов оборачивают этот цикл повторными попытками, трассировкой и реестром инструментов. Мультиагентные системы — то, что получается, когда одного цикла не хватает. А MCP — открытый стандарт подключения инструментов к моделям.