Изолированность агентов ведёт к ошибкам, а «Мечтание» находит паттерны для обновления памяти

Память системы становится целостной и актуальной: общие паттерны (например, задержка диспетчеризации из-за повторных попыток после всплеска ЦП) фиксируются в заметках, что позволяет будущим агентам автоматически учиться на опыте предыдущих сеансов; у Harvey это дало шестикратное увеличение частоты выполнения юридических задач

Видео-источник

Открыть видео на YouTube

Изолированность агентов ведёт к ошибкам, а «Мечтание» находит паттерны для обновления памяти

Связка 1

Начальное состояние: Агенты в мультиагентной системе работают изолированно в рамках конкретных задач; каждый видит только свой контекст, упуская знания и паттерны, обнаруженные другими агентами, совершая общие ошибки и не поддерживая хранилище памяти целостно
Преобразование: Внедрение пакетного асинхронного процесса «Мечтание», который вне контекста конкретного сеанса просматривает недавние транскрипты нескольких агентов, ищет распространенные ошибки (например, неудачные вызовы инструментов) и стратегии, а затем создает обновленное состояние памяти в виде diff'а
Конечное состояние: Память системы становится целостной и актуальной: общие паттерны (например, задержка диспетчеризации из-за повторных попыток после всплеска ЦП) фиксируются в заметках, что позволяет будущим агентам автоматически учиться на опыте предыдущих сеансов; у Harvey это дало шестикратное увеличение частоты выполнения юридических задач


Итак, делая шаг назад, мы начали формировать картину различных уровней, с которыми нам нужно работать при создании передовой системы памяти.

Мы говорили о уровне хранения, где данные фактически хранятся, какие метаданные и данные об атрибуции мы оставляем рядом с ними. Мы говорили о уровне структуры и контента. Это такие вещи, как наше решение моделировать файлы, память как файлы в файловой системе, а ранее — навыки как форму процедурной памяти, которая имеет довольно легковесную спецификацию, говорящую: «Эй, вот как ты можешь научиться этой новой возможности и оснастить себя новыми знаниями». И затем есть уровень процессов.

Это такие вещи, как частота обновления памяти. Что запускает обновления этой памяти и какие источники она использует для принятия решений о том, какие изменения вносить в память и чему учиться новому. И мы считаем, что память агента, API, который мы обсуждали, решает часть этой проблемы. Но когда мы начали масштабировать это до более сложных мультиагентных систем, мы также увидели ряд ограничений.

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

Поэтому последние пару месяцев мы экспериментировали с несколькими различными типами процессов, чтобы дополнить это, и остановились на одном. Мы называем этот процесс Мечтание, и сегодня мы запускаем его в режиме исследовательского предварительного просмотра в API Manage Agents.

Мечтание — это процесс, который ищет паттерны и ошибки в ваших недавних сеансах агентов и их транскриптах и автоматически создает организованный и актуальный контент памяти. Мы работали с несколькими клиентами на раннем этапе тестирования, и, например, Harvey, когда они развернули Мечтание в одном из своих юридических бенчмарков (который тестирует довольно реалистичный юридический сценарий), увидели шестикратное увеличение частоты выполнения задач для одного из своих юридических сценариев. И мы очень рады увидеть, как другие клиенты будут использовать это, когда начнут тестировать этот исследовательский предварительный просмотр.

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

Как работает Dreaming?

Это пакетный асинхронный процесс, который выполняется отдельно от вашей работы, в рамках конкретного сеанса, работающего над конкретной задачей. Вы можете запускать Dreaming периодически, используя нашу консоль или API по расписанию, или подключить его через API к существующему процессу.

Например, некоторые клиенты запускают Dreaming, когда их агенты завершили задачу, завершают работу и хотят сохранить полученные знания в состоянии памяти. Dreaming всесторонне просматривает недавние транскрипты, ищет распространенные ошибки (то, что делают несколько агентов, например неудачный вызов инструмента) или стратегии, которые работают, и находит возможности обновить состояние памяти, чтобы улучшить его в будущем.

Он создает обновленное состояние памяти, которое вы можете сразу применить к своему хранилищу памяти — или, возможно, вы захотите провести некоторые проверки и ручную рецензию, что можно сделать через API.

Конечная цель Dreaming — непрерывное самообучение и самосовершенствование, когда агенты следующего дня автоматически становятся лучше на основе знаний и опыта предыдущего дня.

Почему мы заинтересованы в Dreaming

Мы заинтересованы в Dreaming с точки зрения дизайна и исследований по нескольким причинам. Первое свойство: по сравнению с API памяти, о которых мы говорили ранее, Dreaming работает вне полосы (out of band). Он происходит вне контекста работы агента над конкретным сеансом или задачей. И это дает несколько преимуществ.

Первое: он очень хорошо подходит для мультиагентных систем.

Когда один агент читает и записывает память, он видит только себя, свой контекст и свою задачу, но «мечтание» позволяет нам подняться на уровень выше и смотреть на нескольких агентов одновременно, чтобы находить общие паттерны и знания, которые один агент может не заметить или не извлечь из своей ограниченной перспективы.

С точки зрения дизайна обвязки (harness), мы также последовательно обнаружили, что агентам важно иметь четкие и ясные цели, когда они начинают работать над задачей. «Мечтание» позволяет нам отделить эту новую цель — качество памяти, потому что, как мы считаем, в ближайшие месяцы память будет становиться все более важной и критичной для реальных результатов и работы агентов.

Это позволяет нам отделить цель качества памяти от цели выполнения задачи и производительности, которую многие агенты уже имеют сегодня.

[...]

Итак, мы говорили о памяти агентов, но давайте теперь посмотрим, как «мечтание» может сделать эту систему памяти более целостной и актуальной. Мы перейдём в Cloud Console, который на самом деле отражает точное состояние того, что мы видим в API. Это набор хранилищ памяти, которые мы создали, и мы нажмём на хранилище памяти команды SRE, которое снова отражает последнее состояние записанной нами памяти.

Если мы перейдём на вкладку «Мечтание», то сможем запустить задачу мечтания. Мы можем сказать: «Эй, я хочу обновить и создать это конкретное хранилище памяти, и я хочу просмотреть несколько сессий, которые мы просматривали за последние семь дней». Это все сессии, которые касаются этого хранилища памяти, и мы хотим запустить задачу мечтания, чтобы просмотреть их.

Я нажму на «мечтание», и мы увидим некоторую работу, которая происходит под капотом. Там написано: «Эй, вот несколько входных сессий, на которые он потратит время, просмотрит транскрипты», и он запускает в Cloud Console фактическую сессию, где вы можете увидеть, что происходит. Он просматривает конкретные записи транскриптов и запускает несколько под-агентов, которые просматривают эти транскрипты, пытаются выявить эти уроки, а затем создают обновлённое состояние памяти.

Мы перемотаем вперёд на несколько минут и посмотрим на завершённую задачу мечтания, чтобы увидеть, каким был результат. Она создаёт diff — набор обновлённых файлов, которые будут применены к этому хранилищу памяти.

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