Как устроен LLM-агент: контекст, инструменты и цикл обратной связи

LLM-агент — это не просто чат-бот, а система с обратной связью. Модель генерирует текст, вызывает инструменты, видит результаты (включая ошибки) и правит ход на следующей итерации. Раньше модель писала код вслепую; теперь она знает, что натворила, и может исправить. Вот базовая архитектура: • **Контекст** — вход модели размером 32K → 1M токенов (индустриальный стандарт) • **Инструменты** (harness) — описываются JSON Schema, вызываются форматом Anthropic или OpenAI Tools API • **MCP** (Model Context Protocol) — стандарт интеграции со сторонними системами через JSON-RPC 2.0 (транспорт: stdin/stdout или HTTP)

AI-обработка оригинала Habr AI; редакция Hamidun News
Как устроен LLM-агент: контекст, инструменты и цикл обратной связи
Источник: Habr AI. Коллаж: Hamidun News.
Слушать статью
Паспорт материала и цифры
ПараметрДанные
ПервоисточникHabr AI ↗
Главный редактор
Ключевой факт #1Контекст — вход модели размером 32K → 1M токенов (индустриальный стандарт)
Ключевой факт #2Инструменты (harness) — описываются JSON Schema, вызываются форматом Anthropic или OpenAI Tools API
Ключевой факт #3MCP (Model Context Protocol) — стандарт интеграции со сторонними системами через JSON-RPC 2.0 (транспорт: stdin/stdout или HTTP)

LLM-агент отличается от генеративной модели циклом обратной связи. Если чат-бот просто генерирует текст, то агент вызывает инструменты, получает результаты и уточняет ответ. Это возможно благодаря специальной архитектуре поверх LLM.

Контекст и основы работы

На вход LLM подаётся блок текста, называемый контекстом. Его размер ограничен: в начале эпохи трансформеров прорывом считались 32K токенов, сейчас 1M — индустриальный стандарт. На основе контекста модель генерирует продолжение — логически завершённый фрагмент, заканчивающийся специальным токеном <stop>. Затем контекст расширяется: к нему добавляется новый фрагмент, и цикл повторяется.

Вызов инструментов и их описание

Модель обучена использовать специальное форматирование для вызова внешних функций. Каждый провайдер реализует это по-своему: Anthropic использует свой формат, OpenAI Tools API воспроизводят Ollama и vLLM. Чтобы модель знала, какие инструменты ей доступны, нужно предварительно их описать в контексте (в «системном промпте») по стандарту JSON Schema — с указанием параметров, их типов, описания и обязательности.

Вот пример описания инструмента проверки доставки (get_delivery_status): имя, описание назначения, schema с полями order_id (обязателен, строка) и detailed (опционален, булево). Имея такие описания в контексте, модель генерирует вызовы в специальном формате (например, Anthropic).

Набор доступных инструментов называют harness («упряжь»). Для описания инструментов, не встроенных в самого агента, используют MCP (Model Context Protocol) — индустриальный стандарт для IPC между агентом и сторонними системами. Обмен идёт по JSON-RPC 2.0, с транспортом либо stdin/stdout локального процесса (аналог FastCGI), либо HTTP для внешних серверов.

Цикл агента, обратная связь и управление контекстом

API LLM-провайдера возвращает типизированные JSON-объекты. Формат различается: OpenAI Tools API — самый распространённый, Ollama и vLLM его воспроизводят, у Anthropic собственный. В ответе (модель claude-sonnet-4-5) вызов приезжает отдельным блоком в массиве content с id, именем и разобранным input-объектом. Признак незавершённого хода — stop_reason: "tool_use".

Результат выполнения возвращается новым сообщением с ролью user и блоком tool_result, который ссылается на id вызова. Если инструмент упал — возвращается флаг is_error с трейсом. Ошибка не прерывает цикл: агент видит, что натворил, и на следующем ходу исправляет. Раньше модель писала код вслепую; теперь видит обратную связь.

Контекст имеет два лимита: формальный (при превышении API вернёт ошибку) и рабочий (объём, на котором качество деградирует). На длинном контексте начало и конец остаются в фокусе, а середина выпадает. Для борьбы используют два приёма:

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

Вот и вся базовая архитектура агента. Рекомендуется для практики написать агента на сыром API: можно уложиться в 200–300 строк кода и получить инструмент, немногим уступающий Claude Code или Codex. Сила агента определяется в основном силой модели, а не набором инструментов.

Сюжет

Вопросы и ответы по материалу

Что известно по теме: контекст и основы работы?

На вход LLM подаётся блок текста, называемый контекстом. Его размер ограничен: в начале эпохи трансформеров прорывом считались 32K токенов, сейчас 1M — индустриальный стандарт. На основе контекста модель генерирует продолжение — логически завершённый фрагмент, заканчивающийся специальным токеном <stop>. Затем контекст расширяется: к нему добавляется новый фрагмент, и цикл повторяется.

Что известно по теме: вызов инструментов и их описание?

Модель обучена использовать специальное форматирование для вызова внешних функций. Каждый провайдер реализует это по-своему: Anthropic использует свой формат, OpenAI Tools API воспроизводят Ollama и vLLM. Чтобы модель знала, какие инструменты ей доступны, нужно предварительно их описать в контексте (в «системном промпте») по стандарту JSON Schema — с указанием параметров, их типов, описания и обязательности. Вот пример описания инструмента проверки доставки (get_delivery_status): имя, описание назначения, schema с полями order_id (обязателен, строка) и detailed (опционален,

Что известно по теме: цикл агента, обратная связь и управление контекстом?

API LLM-провайдера возвращает типизированные JSON-объекты. Формат различается: OpenAI Tools API — самый распространённый, Ollama и vLLM его воспроизводят, у Anthropic собственный. В ответе (модель claude-sonnet-4-5) вызов приезжает отдельным блоком в массиве content с id, именем и разобранным input-объектом. Признак незавершённого хода — stop_reason: "tool_use". Результат выполнения возвращается новым сообщением с ролью user и блоком tool_result, который ссылается на id вызова. Если инструмент упал — возвращается флаг is_error с трейсом. Ошибка не прерывает цикл: агент види

ЖХ
Жемал Хамидун — CPO Alpina Digital, продакт-менеджер AlpinaGPT. Делает AI-продукты с 2019 года. Hamidun News — pet project, который вырос в production-агрегатор с 6000+ читателей.
✦ ИИ-агенты на практике · Академия & Nomad

От чтения про ИИ-агентов — к запуску своего агента за вечер

Пошаговая сборка автономных агентов и MCP-связок в Hamidun Academy (academy.hamidun.com) (72 часа бесплатно) или мгновенный запуск готовых мультишаговых агентов в облаке Nomad.

Попробовать Академию (72ч бесплатно) →Запустить Nomad Agent
Что вы думаете?
Загружаем комментарии…