# Что такое ИИ-агент и как он работает

Автор: Ермолаев Тимофей Владимирович  
Оригинал: https://timofei-ermolaev.ru/llm/chto-takoe-ii-agent/  
Опубликовано: 2026-10-16  
Обновлено: 2026-10-16

Представьте обычную рабочую просьбу: нужно подобрать Анне, Борису и Вере общие полчаса для созвона и подготовить текст приглашения. Когда говорят, что такую задачу поручили ИИ-агенту, за этим названием часто смешивают саму языковую модель, окно чата и программу, которая обращается к внешним данным. В такой задаче ИИ-агент — это система, где языковая модель сама выбирает нужные действия по условиям просьбы, программа выполняет их с помощью доступных инструментов, а полученный результат определяет следующий шаг ([Anthropic](<https://www.anthropic.com/engineering/building-effective-agents>)). Здесь мы говорим именно о современных системах на базе языковых моделей.

В разных областях и продуктах этот термин определяют по-своему. Чтобы не собирать абстрактные формулировки, разберём один учебный подбор встречи на вымышленных календарных сведениях. На этой задаче последовательно видно, за что отвечают чат, языковая модель и агентная система, откуда берутся данные о расписании и чем подготовленный ответ отличается от состоявшейся встречи.

## Коротко

- В агентной системе языковая модель выбирает следующий шаг, программа выполняет запрос к инструменту, а результат возвращается модели для нового решения.
- Чат — интерфейс общения. Возможность читать календарь или выполнять другие внешние действия даёт программная интеграция.
- Остановка цикла ещё не означает выполнения задачи. В примере со встречей проверяют найденное время и черновик приглашения; событие не создавалось, приглашения не отправлялись.

## Что в этой задаче делают модель, чат и агент

Зафиксируем полные условия нашей учебной задачи. Нужно найти общее окно на 30 минут для Анны, Бориса и Веры в рабочую неделю с 19 по 23 октября 2026 года, в промежутке с 18:00 до 20:00 по времени UTC+07. Среда предпочтительна, но если в среду общего получаса не найдётся, подойдёт другой будний день той же недели. По итогам нужно только подготовить черновик приглашения — без создания встречи в календаре и без рассылки участникам.

Обычно человек пишет такую просьбу в знакомое окно переписки и там же ждёт результат. Из-за этого легко принять видимый экран за всю систему, хотя в работе участвуют разные уровни ([Anthropic](<https://www.anthropic.com/engineering/building-effective-agents>)).

**Чат** — это способ общения и пользовательский интерфейс. Он принимает сообщение от человека и показывает ответ. При этом чат и агент не исключают друг друга: за обычным окном переписки может стоять как простое текстовое общение с моделью, так и полноценная агентная система с подключёнными инструментами ([Anthropic](<https://www.anthropic.com/engineering/building-effective-agents>)). По одному внешнему виду чата нельзя определить, как система устроена внутри.

**Большая языковая модель (LLM)** — это компонент, который обрабатывает переданный вход и порождает правдоподобный текст ([Google for Developers](<https://developers.google.com/machine-learning/crash-course/llm>)). Всё, что передают модели на каждом шаге — исходную просьбу, правила доступных операций, историю уже сделанных шагов и полученные сведения, — составляет её контекст (подробнее о том, [как собирают контекст для модели](<https://timofei-ermolaev.ru/llm/context-engineering/>)). Если к системе подключены инструменты, модель по этому контексту может выдать не сразу готовый ответ человеку, а структурированный запрос действия: какую операцию нужно вызвать и с какими параметрами ([Tool use with Claude](<https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview>)).

При этом сама модель не открывает календари и не выполняет команды. Она только формирует запрос, а реальную операцию исполняет код приложения или внешний сервис, после чего возвращает полученные данные обратно ([Tool use with Claude](<https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview>)). Доступ к расписанию даёт именно программная интеграция, а не наличие языковой модели.

**Агентная система** объединяет эти части в рабочий цикл. В современных системах на базе LLM агентом называют такую организацию работы, где модель сама направляет последовательность действий: выбирает запрос к инструменту, получает от программы результат и на его основе решает, какой шаг сделать следующим ([Anthropic](<https://www.anthropic.com/engineering/building-effective-agents>)).

В нашей задаче свободное время участников заранее неизвестно, поэтому сработать в один приём не получится: системе нужно сначала запросить расписание и по ответу решить, что делать дальше.

## Как ответ инструмента меняет следующий шаг

Чтобы проверить расписание, языковой модели нужен инструмент — заранее описанная операция, которую умеет выполнять внешняя программа ([Tool use with Claude](<https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview>)). Для нашей учебной задачи мы провели один пробный запуск на подготовленных вымышленных расписаниях: это не подключение к настоящим корпоративным календарям, но внутри этого прогона система действительно по шагам запрашивала данные и получала ответы.

По условию задачи среда, 21 октября 2026 года, указана как предпочтительный день. Разберём полный оборот работы на этой первой проверке:

1. **Выбор запроса.** Опираясь на текст просьбы и описание доступного инструмента, модель не пишет ответ человеку, а формирует запрос на получение свободных интервалов за 21 октября ([Tool use with Claude](<https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview>)).
2. **Исполнение кодом.** Сама модель не читает файлы и не исполняет внешнюю операцию. Запрос принимает программа-обвязка — код приложения, который связывает модель с инструментами: она запускает нужный инструмент, получает расписание на выбранную дату и возвращает эти данные модели ([Tool use with Claude](<https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview>)).
3. **Возврат сведений.** Программа возвращает расписание на среду: Анна свободна с 18:00 до 18:30 и с 19:00 до 19:30; Борис — с 18:30 до 19:00 и с 19:30 до 20:00; Вера — с 18:00 до 19:00.
4. **Следующий вход модели.** Полученные интервалы добавляются к контексту и передаются модели на новом витке цикла ([OpenAI Agents SDK](<https://openai.github.io/openai-agents-python/running_agents/>), [Tool use with Claude](<https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview>)).

Когда эти сведения попадают в контекст, становится видно, что в среду общих тридцати минут для всех троих нет. С 18:00 до 18:30 свободны только Анна и Вера, а Борис занят. С 18:30 до 19:00 свободны Борис и Вера, но уже занята Анна. После 19:00 у Веры свободного времени нет совсем.

Здесь проявляется роль обратной связи. Разумеется, один вызов инструмента сам по себе ещё не означает, что система свободно планирует сложную деятельность. Но в такой архитектуре возвращённый результат меняет продолжение работы: на следующем шаге модель получает не только исходную просьбу, но и ответ инструмента за среду ([OpenAI Agents SDK](<https://openai.github.io/openai-agents-python/running_agents/>)). Поскольку среда была лишь предпочтительным вариантом, а условия разрешают выбрать другой будний день с 19 по 23 октября, работа продолжается.

В нашем пробном прогоне после проверки среды система последовательно запросила понедельник 19 октября и вторник 20 октября. Каждый раз цикл повторялся: модель формировала запрос на новую дату, программа возвращала интервалы, и выяснялось, что получасового пересечения снова не хватает. Только четвёртое обращение к инструменту — на четверг 22 октября — принесло интервалы, в которых нашлось общее окно.

Получив подходящие данные за четверг, система прекращает поиск и переходит к подготовке ответа ([OpenAI Agents SDK](<https://openai.github.io/openai-agents-python/running_agents/>)).

Ответ инструмента возвращается к модели

**Поручение человека через чат**

Найти общие 30 минут и подготовить черновик приглашения. Среда предпочтительна; допустим другой будний день 19–23 октября 2026.

Просьба и условия → контекст модели

**Языковая модель**

Выбирает инструмент и параметры запроса.

Получить свободные интервалы за **21 октября**

Запрос модели
→ приложению

**Код приложения**

Принимает запрос и запускает указанную операцию.

Приложение вызывает инструмент

**Чтение расписания**

Инструмент возвращает приложению подготовленные интервалы за среду.

**Приложение → контекст модели**

Ответ инструмента добавляется к исходной просьбе и условиям. Модель получает их вместе на следующем шаге.

**Следующее решение модели**

В среду общих 30 минут нет.

Продолжение зависит от результата и условий задачи:

- **Запросить другой день**

  Если условия позволяют продолжить поиск, новый запрос снова получает код приложения. Цикл повторяется.
- **Ответить человеку через чат**

  Сообщить результат или препятствие. Остановка цикла сама по себе не означает успех.

Получить расписание и записать встречу — разные операции. В этом учебном прогоне инструмент только читал вымышленные интервалы: событие не создавалось, приглашения не отправлялись.

## Что получилось и почему работа остановилась

Четвёртый запрос принёс расписание на четверг, 22 октября 2026 года: Анна свободна с 18:00 до 19:30, Борис — с 18:30 до 20:00, а Вера — с 18:00 до 19:00. Если наложить эти отрезки друг на друга, все трое одновременно свободны с 18:30 до 19:00.

Где есть общие полчаса

Учебные расписания · UTC+07
Два дня для сравнения; полосы показывают свободное время.

**Среда**21 октября 2026

- **Анна**18:00–18:30 и 19:00–19:30
- **Борис**18:30–19:00 и 19:30–20:00
- **Вера**18:00–19:00

Пересечение трёх расписаний

**Общих 30 минут нет**Нет интервала для всех троих

**Четверг**22 октября 2026

- **Анна**18:00–19:30
- **Борис**18:30–20:00
- **Вера**18:00–19:00

Пересечение трёх расписаний

**18:30–19:00**Общее окно — 30 минут

Шаг шкалы — 30 минут. Найденное окно подходит для черновика приглашения: событие в календаре не создавалось.

Проверим этот интервал по условиям исходной просьбы:

- **Участники и длительность.** Окно с 18:30 до 19:00 подходит Анне, Борису и Вере одновременно и длится ровно 30 минут.
- **Дата и день недели.** Четверг 22 октября входит в заданную неделю с 19 по 23 октября. Среда была указана как предпочтительный день, а не как жёсткое условие, поэтому переход к четвергу укладывается в правила задачи.
- **Часы и часовой пояс.** Интервал полностью помещается в разрешённое вечернее время с 18:00 до 20:00 UTC+07.
- **Формат результата.** Зафиксированный ответ системы содержит подходящий слот и готовый черновик приглашения для Анны, Бориса и Веры на четверг, 22 октября 2026 года, с 18:30 до 19:00 UTC+07 на 30 минут.

Получив данные, которых достаточно для ответа, модель больше не запрашивала инструмент, а выдала итоговый текст, и рабочий цикл завершился ([OpenAI Agents SDK](<https://openai.github.io/openai-agents-python/running_agents/>)).

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

Кроме того, сам факт остановки системы не гарантирует, что цель пользователя достигнута. Конкретные правила завершения зависят от реализации, но в агентных системах цикл обычно прекращается по разным причинам. Например, в документации [OpenAI Agents SDK](<https://openai.github.io/openai-agents-python/running_agents/>) описана остановка при получении финального ответа нужного вида или при исчерпании заданного лимита шагов, а архитектурное руководство [Anthropic](<https://www.anthropic.com/engineering/building-effective-agents>) предусматривает остановку на контрольных точках или при встрече с препятствием, когда системе нужно решение человека.

В нашей задаче цикл остановился потому, что подходящее время нашлось и черновик был составлен. Но если бы в расписании не оказалось общего получаса или система упёрлась в ограничение по числу шагов, работа тоже бы прекратилась — хотя встреча так и осталась бы неподобранной. Поэтому сообщение о завершении работы или готовый текст в окне чата всегда проверяют по существу задачи: что именно найдено и какие действия действительно были выполнены.

## Нужен ли агент для такой задачи и может ли он ошибиться

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

Разница лежит в том, как именно строится маршрут выполнения ([Anthropic](<https://www.anthropic.com/engineering/building-effective-agents>)). В обычной программе переходы между шагами определяют заданные в коде правила и условия. В рассматриваемой агентной архитектуре очередной шаг — какой инструмент вызвать, с какими параметрами и когда остановиться — каждый раз выбирает языковая модель по условиям задачи и уже полученным ответам ([Anthropic](<https://www.anthropic.com/engineering/building-effective-agents>), [Tool use with Claude](<https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview>)). Сравнение здесь нужно не для того, чтобы выбрать победителя: оно просто показывает, кто управляет ходом работы.

Из такого устройства прямо следуют и ограничения. В нашем учебном запуске пересечение интервалов нашлось без сбоев, но сама архитектура не гарантирует безошибочного результата в любой ситуации. Работа модели целиком зависит от того, какие данные и инструменты ей доступны ([Tool use with Claude](<https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview>)). При формировании вызова модель может домыслить недостающие параметры запроса ([Tool use with Claude](<https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview>)). Если бы на одном из шагов модель передала неверную дату или не так истолковала ответ инструмента, начальная неточность повлияла бы на следующие решения — в многошаговом цикле ошибки могут накапливаться ([Anthropic](<https://www.anthropic.com/engineering/building-effective-agents>)).

По этой же причине важно различать текстовую просьбу в промпте и технические границы выполнения. Слова в задаче «только подготовь черновик и ничего не отправляй» направляют выбор модели, но сами по себе не создают технического запрета ([Tool use with Claude](<https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview>)). Поскольку модель лишь формирует запрос, а исполняет его внешняя программа, реальные границы зависят от того, какие операции вообще подключены к системе и как настроен их вызов ([Tool use with Claude](<https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview>)). Одно дело — попросить модель не трогать почту и календарь текстом, и совсем другое — когда у программы в принципе нет инструмента для отправки писем или создания событий.

Вернёмся к исходной просьбе созвониться втроём. На этой одной задаче видно всё устройство целиком: окно чата передаёт слова человека, языковая модель выбирает действие по текущему контексту, а программа-обвязка исполняет запрос к данным и возвращает результат для следующего шага. Так же наглядно видны и границы: черновик приглашения в ответе не равен созданной встрече в календаре, остановка цикла не заменяет проверку по условиям, а передача управления модели не отменяет возможных ошибок. Чтобы закрепить эту картину, достаточно мысленно разобрать любую похожую рабочую просьбу по трём вопросам: какие внешние сведения понадобятся по ходу дела, кто именно выбирает следующий шаг и по какому признаку вы поймёте, что задача действительно решена.

## Частые вопросы

### Может ли за обычным окном чата работать ИИ-агент?

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

### Откуда ИИ-агент получает сведения из календаря?

Доступ к расписанию даёт программная интеграция. Модель формирует запрос к доступному инструменту, а код приложения или внешний сервис выполняет операцию и возвращает данные модели. В примере статьи программа читала заранее подготовленные вымышленные интервалы; подключения к настоящим корпоративным календарям не было.

### Обязательно ли нужен ИИ-агент, чтобы подобрать общее время встречи?

Нет. Обычная программа может пересекать интервалы расписаний и проверять следующие дни по заранее заданным правилам. В рассматриваемой агентной системе следующий запрос и момент остановки выбирает языковая модель по условиям задачи и полученным ответам. Само продолжение поиска после неудачной проверки ещё не доказывает преимущества агента над обычным алгоритмом.

### Означает ли завершение работы агента, что задача выполнена?

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

### Достаточно ли написать агенту «ничего не отправляй», чтобы запретить отправку?

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

## По теме

- [Обвязка ИИ-агента](<https://timofei-ermolaev.ru/llm/harness-engineering/>) — Как программа организует инструменты, состояние и проверки работы модели.
- [Память LLM и ИИ-агентов](<https://timofei-ermolaev.ru/llm/context-engineering/pamyat-llm-i-ii-agentov/>) — Как сохраняют сведения и используют их между обращениями.
- [Контекст инжиниринг](<https://timofei-ermolaev.ru/llm/context-engineering/>) — Какие сведения получает модель при очередном шаге задачи.

## Первоисточники

1. [Building effective agents](<https://www.anthropic.com/engineering/building-effective-agents>) — Anthropic
2. [Introduction to Large Language Models](<https://developers.google.com/machine-learning/crash-course/llm>) — Google for Developers
3. [Tool use with Claude](<https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview>) — Anthropic
4. [Running agents](<https://openai.github.io/openai-agents-python/running_agents/>) — OpenAI
