Содержание статьи +
- Кратко
- Зачем это нужно
- Три способности, которых нет у обычной модели
- Использование инструментов: как агент дотягивается до внешнего мира
- Память: почему модель забывает и что с этим делать
- Планирование: превращаем цель в упорядоченные шаги
- Как три примитива работают вместе
- Когда стоит оставить всё простым
- Где здесь Фора Софт
- Ключевые выводы
- Что почитать дальше
Кратко
Модель превращается в агента, когда вы даёте ей три способности, которых у неё самой нет: инструменты, чтобы дотянуться до внешнего мира; память, чтобы переносить знания между шагами и сессиями; и планирование, чтобы превратить цель в упорядоченный список действий. Использование инструментов работает через структурированный вызов – модель называет инструмент и заполняет JSON-форму, ваш код её выполняет, а результат возвращается; с конца 2024 года протокол Model Context Protocol стандартизирует то, как инструменты подключаются. Память бывает четырёх видов, заимствованных из того, как запоминает человек, – рабочая, эпизодическая, семантическая и процедурная, – и сложность в том, что рабочая память модели крошечная, поэтому всё большее должно жить во внешнем хранилище и подгружаться по запросу. Планирование имеет три проверенные на практике формы – ReAct, plan-and-execute и reflection, – и выбор правильной для видеозадачи определяет, насколько быстрым, дешёвым и надёжным будет агент.
Зачем это нужно
В прошлом уроке мы нарисовали цикл агента – восприятие, рассуждение, действие, наблюдение – и показали, почему видеопродукты на него опираются. Этот урок открывает двигатель и называет три части, которые заставляют цикл работать. Если вы прорабатываете агентную функцию для видеосвязи, видеонаблюдения, OTT, e-learning или телемедицины, именно об этих частях будут спорить ваш поставщик или ваши инженеры, на них будут закладывать бюджет и в них же ошибаться. Писать код вам не нужно, но нужно понимать, что такое «инструмент», «хранилище памяти» и «паттерн планирования», достаточно хорошо, чтобы спросить, подходит ли дизайн под задачу. К концу вы сможете посмотреть на любое предложение по агенту и проверить, что все три примитива есть, что они верно соразмерены и не переусложнены.
Три способности, которых нет у обычной модели
Языковая модель сама по себе – закрытая коробка. Она читает текст, который вы ей даёте, и пишет текст в ответ. Она не может открыть файл, прогнать детектор по видео, вспомнить, что делала вчера, или решить сделать пять шагов вместо одного. Чтобы превратить эту закрытую коробку в агента – систему, которая сама идёт к цели, – на неё навешивают три способности. Каждая закрывает конкретный пробел.
Первая способность, использование инструментов (tool use), позволяет модели действовать в мире за пределами собственного текста. Вторая, память (memory), позволяет хранить и вспоминать информацию сверх того единственного блока текста, что у неё перед глазами. Третья, планирование (planning), позволяет разбить цель на шаги и определить их порядок. Уберите любую – и агент ломается: без инструментов он может только говорить; без памяти он забывает всё, едва задача становится длинной; без планирования он не справляется ни с чем, что требует больше одного хода. Всё остальное в инженерии агентов – фреймворки, оркестрация, оценка – строится поверх этих трёх.
Использование инструментов: как агент дотягивается до внешнего мира
Инструмент – это любая функция, которую агент может вызвать, чтобы сделать то, чего модель не может сделать, написав текст: запустить детектор объектов, расшифровать звук, обратиться к базе данных, отправить 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 для своих инструментов, потому что ответ скажет, сколько самописного интеграционного кода вам предстоит сопровождать.
Частая и дорогая ошибка здесь – перегрузка инструментами (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», затем «осмотреть фрагменты-кандидаты», затем «написать вывод». Паттерн планирования решает, выдаются эти куски все сразу или по одному, но именно декомпозиция вообще делает расплывчатую цель исполнимой. Полезная проверка при ревью дизайна агента: попросите показать декомпозицию реальной задачи. Если никто не может выписать шаги, агент тоже не сможет.
Как три примитива работают вместе
Примитивы – не независимые гаджеты; они сцеплены на каждом ходе цикла агента. Пройдём один ход расследования на видеонаблюдении и увидим, как срабатывают все три. Агент держит цель и прогресс в рабочей памяти. Его паттерн планирования – здесь ReAct – решает, что следующий шаг – прогнать детектор людей по камере погрузочной зоны. Он исполняет шаг через использование инструментов, заполняя JSON-анкету детектора ID камеры и временным окном. Детектор возвращает три фрагмента-кандидата, которые ложатся обратно в рабочую память как новое наблюдение. Прежде чем осматривать их, агент сверяется с семантической памятью о карте камер объекта, чтобы подтвердить, какой канал действительно покрывает зону, и с эпизодической памятью о том, давала ли эта камера ложные срабатывания на прошлой неделе. Затем цикл поворачивается снова. Каждый примитив сделал своё дело, и ни один не справился бы с задачей в одиночку.
Вот почему порядок этих уроков важен. Урок о цикле агента дал вам цикл. Этот урок даёт части внутри него. Следующий урок, об агентных фреймворках, – об инструментах, которыми инженеры собирают эти части, не строя всё с нуля: LangGraph, CrewAI и прочие существуют именно для того, чтобы управлять вызовами инструментов, хранилищами памяти и циклами планирования, чтобы команде не пришлось писать все три вручную.
Когда стоит оставить всё простым
Каждый примитив оправдывает себя только тогда, когда задача в нём нуждается, и самый дешёвый агент – тот, что использует их меньше всего. Если задаче не нужна информация сверх того, что влезает в одно окно, ей не нужна внешняя память – не разворачивайте vector DB ради задачи, которая делает краткое содержание одного десятиминутного ролика. Если задача – это одна фиксированная последовательность шагов, ей не нужен открытый планировщик – запишите шаги кодом, как в прошлом уроке описан workflow. Если задача вызывает один сервис один раз, ей нужен один инструмент, а не фреймворк инструментов. Дисциплина, которая удерживает агентные проекты от обрушения под собственной стоимостью, – это сопоставление примитива с потребностью: добавляйте память, когда задача перерастает окно, планирование – когда шаги нельзя знать заранее, а инструменты – по одному, по мере того как реальные задачи их требуют.
Где здесь Фора Софт
Мы делаем видеопродукты в видеосвязи, стриминге, OTT, видеонаблюдении, e-learning, телемедицине и AR/VR, и когда функции нужен агент, именно в этих трёх примитивах живёт проектная работа. В видеонаблюдении это значит дать агенту-исследователю узкий набор инструментов и эпизодическую память о прошлых инцидентах, чтобы он не отмечал одну и ту же тень каждую ночь. В видеосвязи – это агент-копилот встречи, чья семантическая память держит контекст команды, а рабочая память отслеживает живой звонок, не пытаясь проглотить годовой архив расшифровок. В OTT и e-learning – это асинхронные ревьюеры, которые планируют фиксированную последовательность «принять и разметить», а не рассуждают с нуля над каждым файлом. Наша работа – соразмерить каждый примитив задаче и оставить за бортом те, что задаче не нужны.
Ключевые выводы
- Инструменты, память и планирование – три способности, превращающие модель в агента.
- Использование инструментов – это заполнение структурированной анкеты; MCP теперь стандартизирует подключение.
- Контекстное окно – это крошечная рабочая память; долговременная память должна жить вне модели.
- У памяти агента четыре вида: рабочая, эпизодическая, семантическая, процедурная.
- Берите ReAct для интерактивных задач, plan-and-execute – для повторяемых, reflection – для ответственных.
- Добавляйте каждый примитив только тогда, когда задача перерастает более простой дизайн.