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

Автор: Николай СапуновОбновлено: август 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 стандартизирует подключение инструментов.

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

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

Модель читает всё внутри одного блока текста, который называют контекстным окном (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-augmented generation – это одна идея, направленная на разные данные. Одна влиятельная система 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 – для ответственных.
  • Добавляйте каждый примитив только тогда, когда задача перерастает более простой дизайн.

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

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

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