📝 Агентская память - немного теории
Начнем шарить контент с созвона. Поговорим немного о памяти для агентов - чего это такое в целом. Довольно глобальная тема!
▶️ При работе LLM все что есть в распоряжении модели - это контекст. Наверное, можно считать это текущей операционной памятью модели, где содержатся все сведения для выполнения текущей задачи. Создание "правильного" контекста - самое главное дело для обеспечения качественной работы модели и агентской системы. Но вот живёт контекст на время сессии работы с моделью, и он не бесконечен: кончился контекст, надо начинать новую сессию. Но новая сессия - все как в первый раз.
Когда мы помещаем модель в окружение, поддерживающее инструменты (tools, через functional calling), такая система становится агентом и получает возможность выполнения некоторых действий. Например, сохранения и извлечения необходимой информации, что даёт нам возможность создания системы памяти агента.
▶️ Название "память агента" довольно условное, потому что модель также владеет огромным объёмом информации "внутри" своих весов, но это "неизменная" память, она не меняется от задачи к задаче.
Для текущей задачи модель всегда использует свой контекст.
Роль памяти - помогать в формировании контекста. Безусловно, контекст можно сформировать и "руками", для каждой задачи промпты вводить, и все нужные сведения в контекст положить. Но память как раз и помогает избавится от необходимости каждый раз растолковывать агенту все заново - "каждый раз - как в первый раз!". Память позволяет сохранить сведения для бьудущего использования, и извлекать нужную для текущей задачи информацию.
🟢 Осознание роли памяти важно, когда решаешь - чего бы в этой памяти сохранить. Нужно ли агенту сведения об истории изменения файла? Для работы было бы полезно, но зачем они именно в памяти - ведь эти сведения у нас и так сохранены в истории коммитов git репозитория, и модель про это знает. Получается, хранение информации в памяти агента- дублирование, эти сведения несложно будет получить и без запоминания. Единственный момент: если эти сведения сохранены "заодно", например, в jsdoc шапке файла - экономим время/запрос модели с тулюзом.
🟢 Применяем фокусирование: память призвана обеспечить выполнение будущих задач. Например, сведения о легаси коде, который образовался в ходе рефакторинга. В будущих задачах он не участвует, поэтому из памяти все связанное с ним убираем: у нас не летопись, за летописью идём в git, вестимо! У нас своя фокусная задача.
☝️ Итак, важно понимать домен термина "память":
- память - это про контекст инжиниринг
- память = механизм сохранения + загрузки сведений
- фокусная цель: обеспечить выполнение будущих задач
- способ: предоставить необходимые сведения в контекст для выполнения задач моделью
#post
@deksden_notes
Post #76
484
- 👍 9
- 🔥 5
- ❤ 2