Инструменты, память и планирование – примитивы агента

Автор: Николай СапуновОбновлено: август 202616 мин чтения
Содержание статьи +

Кратко

Модель превращается в агента, когда вы даёте ей три способности, которых у неё изначально нет: инструменты для взаимодействия с внешним миром, память для сохранения знаний между шагами и сессиями, а также планирование – чтобы превратить цель в последовательность действий. Работа с инструментами осуществляется через структурированный вызов: модель указывает нужный инструмент и заполняет JSON-форму, ваш код выполняет запрос и возвращает результат. С конца 2024 года протокол Model Context Protocol стандартизирует способ подключения инструментов.

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

Планирование реализуется тремя проверенными подходами – ReAct, plan-and-execute и reflection – и выбор подходящего метода для конкретной задачи напрямую влияет на скорость, стоимость и надёжность работы агента.

Зачем это нужно

В прошлом уроке мы нарисовали цикл агента – восприятие, рассуждение, действие, наблюдение – и объяснили, почему видеопродукты строятся вокруг него. Этот урок раскрывает «двигатель» цикла и выделяет три ключевые компоненты, которые его запускают. Если вы разрабатываете агентную функцию для видеосвязи, видеонаблюдения, OTT, e-learning или телемедицины, именно эти три части станут предметом споров с поставщиками или инженерами, на них будут закладывать бюджет и в них – допускать ошибки. Писать код вам не придётся, но важно понимать, что такое «инструмент», «хранилище памяти» и «паттерн планирования», чтобы оценить, подходит ли предложенный дизайн под вашу задачу. К концу урока вы сможете взглянуть на любое предложение по агенту и проверить: присутствуют ли все три примитива, правильно ли они сбалансированы и не перегружены ли излишними деталями.

Три способности, которых нет у обычной модели

Языковая модель сама по себе – это закрытая система. Она читает текст, который вы ей передаёте, и генерирует ответ. Она не может открыть файл, запустить детектор на видео, вспомнить, что делала вчера, или решить выполнить пять шагов вместо одного. Чтобы превратить такую «закрытую коробку» в агента – систему, способную самостоятельно достигать цели, – ей добавляют три ключевые способности. Каждая из них закрывает определённый пробел.

Первая способность – использование инструментов (tool use) – позволяет модели действовать в мире за пределами собственного текста. Вторая – память (memory) – даёт возможность хранить и вспоминать информацию, выходящую за рамки одного текущего текста. Третья – планирование (planning) – позволяет разбить цель на шаги и определить их последовательность. Уберите любую из них – и агент перестаёт работать: без инструментов он может только говорить; без памяти он забывает всё, как только задача становится длинной; без планирования он не справляется ни с чем, что требует более одного действия. Всё остальное в инженерии агентов – фреймворки, оркестрация, оценка – строится именно на этих трёх основах.

Рисунок 1. Три примитива стоят под циклом агента из урока 7.1: инструменты взаимодействуют с миром, память хранит знания, планирование организует последовательность действий. Уберите любой – и агент перестанет работать.

Использование инструментов: как агент взаимодействует с внешним миром

Инструмент – это любая функция, которую агент может вызвать, чтобы выполнить действия, недоступные модели при генерации текста: запустить детектор объектов, расшифровать аудио, обратиться к базе данных, отправить webhook, найти фрагменты в архиве. Механизм, обеспечивающий это, называется технически, но описывает простую вещь: вызов функций (function calling), или, как его ещё называют, tool calling.

Вот вся идея в одном проходе. Вы описываете каждый инструмент модели так же, как заполняете анкету для нового сотрудника: имя (run_person_detector), краткое описание его назначения и список необходимых входных данных с указанием типов – ID камеры (текст), время начала и окончания (таймкоды), порог уверенности (число от 0 до 1). Это описание входов оформлено в формате под названием JSON Schema – это просто точный способ сказать: «это поле – число, это – текст, а это обязательно». Когда модель решает использовать инструмент, она сама ничего не запускает. Она лишь заполняет анкету – выдаёт небольшой блок структурированного текста, в котором указан инструмент и заданы значения для каждого входного параметра. Ваш код читает этот блок, запускает реальную функцию и возвращает результат модели как следующее наблюдение. Модель никогда не взаимодействует с детектором напрямую – она только заполняет анкету и читает полученный ответ.

Надёжность здесь обеспечивается тем, что модель корректно заполняет анкету, и к 2026 году эта задача в значительной степени решена. И OpenAI, и Anthropic предлагают режим структурированного вывода (structured outputs), который ограничивает генерацию на уровне токенов – так что модель не может пропустить обязательное поле или сгенерировать недопустимое значение. Anthropic сообщает о валидности схемы выше 99% при constrained decoding. Для видеопайплайна это особенно важно: неверный таймкод не просто даёт плохое предложение – он направляет детектор в неправильный момент записи и тратит GPU-минуту впустую. Практическое правило: у каждого инструмента должна быть строгая схема, но ваш код всё равно должен проверять результат перед выполнением действий.

Почти всю короткую историю этой технологии подключение инструмента к агенту означало написание отдельного адаптера для каждого – одна интеграция для детектора, другая для сервиса расшифровки, третья для базы данных. Это изменил Model Context Protocol (MCP) – открытый стандарт, представленный Anthropic в ноябре 2024 года, чтобы инструменты могли общаться на одном общем языке. Теперь вместо создания самописного адаптера для каждого инструмента он один раз публикуется как MCP-«сервер», и любой MCP-совместимый агент может его обнаружить, прочитать схему и вызвать. Принятие протокола пошло быстро: OpenAI внедрила MCP в марте 2025 года, а к началу 2026 года было уже около десяти тысяч публичных MCP-серверов. В декабре 2025 года Anthropic передала протокол нейтральному фонду под крылом Linux Foundation, созданному совместно с Block и OpenAI – это сигнал, что MCP стал общей отраслевой инфраструктурой, а не решением одного вендора. Для продуктовой команды вывод очевиден: узнайте, использует ли предлагаемый агент MCP для своих инструментов, потому что ответ покажет, сколько самописного интеграционного кода вам придётся поддерживать.

Рисунок 2. Анатомия вызова инструмента. Модель формирует запрос (имя инструмента + JSON-аргументы); среда исполнения запускает соответствующую функцию; результат возвращается как следующее наблюдение. MCP обеспечивает стандартизацию подключения инструментов.

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

Память: почему модель забывает и что с этим делать

Модель обрабатывает всё содержимое одного текстового блока, который называют контекстным окном (context window) – это объём слов, который она может удерживать «на виду» одновременно. Что попадает в окно – то модель знает в данный момент; что вышло за его пределы – становится недоступным. Это рабочая память модели: она работает быстро, но очень ограничена по сравнению с объёмом реальной видеонагрузки. Именно этот фактор определяет любые решения, касающиеся памяти при проектировании агента.

Посчитайте один раз – и проблема станет очевидной. Модель измеряет текст в токенах (tokens), где один токен – примерно три четверти слова, то есть одно слово составляет около 1,33 токена. Часовая встреча, расшифрованная при обычном темпе речи – около 150 слов в минуту, – даёт 150 × 60 = 9 000 слов, то есть 9 000 × 1,33 ≈ 12 000 токенов. Крупная модель 2026 года с окном в 200 000 токенов может вместить примерно 200 000 ÷ 1,33 ≈ 150 000 слов, или около шестнадцати часов расшифровки. Звучит много – пока вы не попробуете обработать неделю записанных встреч: сорок часов, или около 480 000 токенов, что превышает окно более чем вдвое. «Вставить всё целиком» не масштабируется. Записи и расшифровки реального видеопродукта всегда превышают размер окна.

Выход – держать в окне только активную задачу, а всё остальное хранить вне модели и подгружать нужный кусок, когда он понадобится. Исследователи разделили память агента на четыре вида, заимствованных из того, как в когнитивной науке картировали память человека, и формализованных для языковых агентов в рамках фреймворка CoALA 2023 года из Принстона. Определим каждый простыми словами – до ярлыка:

Память о том, что происходит прямо сейчас – текущая цель, последние наблюдения, текущий план – это рабочая память (working memory). Она существует в контекстном окне и исчезает, когда задача завершена. Память о конкретных прошлых событиях – «во вторник камера погрузочной зоны зафиксировала человека в 23:14» – это эпизодическая память (episodic memory). Она сохраняется во внешнем хранилище и доступна между сессиями. Память об общих фактах, не привязанных к отдельному событию – карта камер объекта, список известных лиц сотрудников, каталог объектов, которые система способна распознавать, – это семантическая память (semantic memory), обычно хранящаяся в поисковой базе. А память о том, как выполнять действия – стандартная процедура расследования, правила, которым агент всегда следует, – это процедурная память (procedural memory), заложенная в системные инструкции агента или приобретённая в процессе обучения.

Тип памятиЧто хранитГде живётСрок жизниПример в видео
РабочаяТекущую задачу, цель, последние шагиКонтекстное окноТолько эта задачаТекущее расследование
ЭпизодическаяКонкретные прошлые событияВнешнее хранилище (часто vector DB)Между сессиями«Человек у камеры 3, 23:14 во вторник»
СемантическаяОбщие факты и знанияПоисковая базаДолгоживущаяКарта камер, известные лица, каталог объектов
ПроцедурнаяКак выполнять задачуСистемный промпт или веса моделиПостояннаяПостоянная процедура расследования

Инженерный паттерн, объединяющий всё это, – извлечение (retrieval). Долгосрочные виды памяти хранятся во внешнем хранилище; когда они нужны агенту, поиск извлекает лишь несколько релевантных элементов и помещает их в рабочее окно на текущий ход. Это та же технология извлечения, что используется для видеоархивов и подробно рассмотрена в уроке про video RAG по архиву – память и retrieval-расширенная генерация – это одна и та же идея, применяемая к разным данным. Одна из влиятельных систем 2023 года, MemGPT, описала всю задачу как операционную систему: контекстное окно – это быстрая «оперативная память», внешнее хранилище – медленный «диск», а агент подгружает информацию между ними по мере необходимости. Чтобы запомнить эту аналогию, не нужен сложный дизайн – достаточно самой идеи: небольшая быстрая память плюс большая медленная, и механизм, определяющий, что загрузить.

Ошибка, которой стоит избегать, – это «зеркало перегрузки инструментами»: переполнение контекста (context stuffing), стремление втиснуть в окно весь архив, все прошлые расшифровки и длинную инструкцию «чтобы у агента было всё». Это вредит дважды. Во-первых, это стоит денег – вы платите за токен на каждом вызове. Во-вторых, это снижает точность: модели хуже работают с информацией, затерянной в слишком длинном контексте. Держите окно лёгким – задача и несколько фактов, непосредственно к ней относящихся, – а всё остальное пусть хранится во внешнем хранилище.

Планирование: превращаем цель в упорядоченные шаги

Планирование – это способность взять цель, сформулированную одним предложением – «скажи, входил ли кто-нибудь в погрузочную зону после 22:00 прошлой ночью», – и составить упорядоченную последовательность действий, которая на неё отвечает. На практике доказали свою эффективность три формы планирования, которые различаются по времени, когда происходит обдумывание.

Первая, ReAct, чередует размышление и действие по одному шагу за раз: агент сначала размышляет о следующем шаге, выполняет его, наблюдает результат и затем анализирует, что делать дальше. Этот подход формализован в статье ReAct 2022 года и является выбором по умолчанию для интерактивной работы, где следующий шаг действительно зависит от результатов предыдущего. Примером может служить расследование по видеозаписям с камер наблюдения: невозможно заранее спланировать, какой фрагмент рассмотреть подробно, пока детектор не определит, какие фрагменты вообще присутствуют.

Вторая стратегия – plan-and-execute – разделяет обдумывание и исполнение: планировщик заранее составляет полный список шагов, после чего исполнитель последовательно их выполняет, перепланируя только в случае сбоя. Поскольку дорогую модель рассуждений не нужно вызывать перед каждым действием, на задачах с заранее известной структурой этот подход оказывается дешевле и быстрее. Ночная задача, которая принимает, расшифровывает, размечает и индексирует пакет записей, – типичный пример «спланировать, потом исполнить»: шаги одинаковы для каждого файла, поэтому их достаточно определить один раз.

Третья стратегия – reflection (паттерн, представленный в статье Reflexion 2023 года) – добавляет этап самокритики: агент выдаёт результат, оценивает свою работу по отношению к цели, фиксирует, что пошло не так, и пробует снова, учитывая эту обратную связь. Этот подход самый затратный, поскольку требует дополнительных итераций, поэтому его применяют только в задачах, где ошибка дорого обходится, а качество можно однозначно проверить – например, при составлении отчёта о соответствии нормативным требованиям, где каждое утверждение можно сверить с исходными фрагментами.

Паттерн планированияКогда происходит обдумываниеЛучше всего дляОтносительная стоимостьПример в видео
ReActПеред каждым шагом, по одномуИнтерактивные задачи; следующий шаг зависит от прошлогоСредняяЖивое расследование в архиве
Plan-and-executeВсё заранее, потом исполнениеИзвестные повторяемые многошаговые задачиНижеНочной пакетный приём и разметка
ReflectionПосле результата, затем повторОтветственный вывод с проверкой качестваВышеОтчёт о соответствии по записи

Под всеми тремя лежит один общий навык: декомпозиция задачи (task decomposition) – разбиение большой цели на достаточно мелкие части, с которыми можно работать. «Расследовать погрузочную зону» превращается в «перечислить камеры, покрывающие зону», затем – «прогнать детектор людей по каждой из них с 22:00 до 06:00», далее – «осмотреть фрагменты-кандидаты» и, наконец, «написать вывод». Паттерн планирования определяет, выдаются ли эти шаги сразу все или по одному, но именно декомпозиция делает расплывчатую цель выполнимой. Полезная проверка при ревью дизайна агента – попросить показать декомпозицию реальной задачи. Если никто не может выписать шаги, агент тоже не справится.

Рисунок 3. Три паттерна планирования. ReAct решает задачу шаг за шагом; plan-and-execute заранее составляет полный план и выполняет его; reflection анализирует результат и при необходимости повторяет процесс. Выбор подходящего зависит от того, является ли задача интерактивной, повторяющейся или ответственной.

Как три примитива работают вместе

Примитивы – не независимые гаджеты; они тесно связаны на каждом шаге цикла агента. Пройдём один ход расследования на основе видеонаблюдения и увидим, как работают все три. Агент хранит цель и прогресс в рабочей памяти. Его паттерн планирования – здесь ReAct – определяет, что следующим шагом будет запуск детектора людей на камере в зоне погрузки. Он выполняет этот шаг с помощью инструментов, заполняя JSON-форму с ID камеры и временным интервалом. Детектор возвращает три кандидата, которые сохраняются обратно в рабочую память как новое наблюдение. Прежде чем анализировать их, агент сверяется с семантической памятью – картой расположения камер на объекте, чтобы убедиться, что выбранный канал действительно охватывает нужную зону, – и с эпизодической памятью, чтобы проверить, не было ли у этой камеры ложных срабатываний на прошлой неделе. Цикл повторяется снова. Каждый примитив выполнил свою часть работы, и ни один из них не справился бы с задачей в одиночку.

Вот почему порядок этих уроков важен. Урок о цикле агента дал вам основу цикла. Этот урок раскрывает его составляющие. Следующий – об агентных фреймворках – рассказывает об инструментах, с помощью которых инженеры собирают эти компоненты, не создавая всё с нуля: LangGraph, CrewAI и другие существуют именно для управления вызовами инструментов, хранилищами памяти и циклами планирования, чтобы команде не приходилось реализовывать все три элемента вручную.

Рисунок 4. Один ход расследования на видеонаблюдении. Планирование выбирает шаг, инструменты его исполняют, рабочая память хранит состояние, а долговременная память сверяется перед повтором цикла – все три примитива задействованы на каждом проходе.

Когда стоит оставить всё простым

Каждый примитив оправдан только тогда, когда задача в нём действительно нуждается, а самый эффективный агент – тот, что использует их минимально. Если задаче не требуется информация сверх объёма одного окна, ей не нужна внешняя память – не запускайте vector DB ради задачи, которая создаёт краткое содержание десятиминутного видео. Если задача представляет собой фиксированную последовательность шагов, ей не нужен открытый планировщик – просто закодируйте эти шаги, как описано в предыдущем уроке в разделе workflow. Если задача вызывает один сервис один раз, ей нужен один инструмент, а не целый фреймворк. Дисциплина, которая предотвращает крах агентных проектов под тяжестью собственных издержек, – это точное соответствие примитива потребностям: добавляйте память, когда задача выходит за пределы одного окна, планирование – когда шаги заранее неизвестны, а инструменты – по одному, по мере реальной необходимости.

Где здесь Фора Софт

Мы создаём видеопродукты для видеосвязи, стриминга, OTT, видеонаблюдения, e-learning, телемедицины и AR/VR, и когда в функции нужен агент, именно в этих трёх базовых компонентах реализуется проектная работа. В видеонаблюдении это означает дать агенту-исследователю ограниченный набор инструментов и эпизодическую память о прошлых инцидентах, чтобы он не фиксировал одну и ту же тень каждую ночь. В видеосвязи – это агент-копилот встречи, чья семантическая память хранит контекст команды, а рабочая память отслеживает текущий звонок, не пытаясь проанализировать годовой архив расшифровок. В OTT и e-learning – это асинхронные ревьюеры, которые следуют заранее заданной последовательности «принять и разметить», а не начинают с нуля при обработке каждого файла. Наша задача – подобрать подходящий примитив под конкретную задачу и исключить всё, что ей не требуется.

Ключевые выводы

  • Инструменты, память и планирование – три ключевые способности, превращающие модель в агента.
  • Использование инструментов – это заполнение структурированной формы; MCP теперь обеспечивает стандартизированный интерфейс подключения.
  • Контекстное окно – это ограниченная рабочая память; долговременная память должна храниться за пределами модели.
  • У агента четыре типа памяти: рабочая, эпизодическая, семантическая и процедурная.
  • Применяйте ReAct для интерактивных задач, plan-and-execute – для повторяющихся, reflection – для ответственных.
  • Добавляйте каждый примитив только тогда, когда задача выходит за рамки более простого решения.

Что почитать дальше

Строите такую систему?

Подберём параметры кодирования под ваш контент и посчитаем стоимость доставки до старта разработки.