📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

Воркшоп: формируем контекст-слой для ИИ-агентов

Codex Town Club30:00

Transcription

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

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

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

Аа вот, ну а сегодня мы поговорим о том, что такое контекстный слой для агентов, чем это вообще отличается от всяких рагов, MCP, наборов AP коннекторов и тому подобное. Поговорим про такую неочевидную, казалось бы, вещь, что файловая система может быть лучше, чем MCP. А, ну и, собственно, как нам создать собственный контекстный слой без особого труда и проблем. А тайминг, как я сказал, будет сжатым. а-а, по сути, меняю где-то 20 минут вашего времени на лекцию и готовый артефакт, который вы сможете потом полноценно сами аэ использовать. Вот.

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

Я хочу напомнить ещё раз, что работая с иагентами, то есть работая с большими языковыми моделями, мы работаем по сути только с текстом, а-а, ну, точнее, с текстовыми токенами. И всё, что мы, в принципе, можем делать, всё, о чём мы можем говорить - это только регулировать качество того контекста, который подаётся на вход, ну, и форматировать то, что уж получилось на выходе. А, и для того, чтобы агенты могли работать наиболее эффективно, нам стоит им немножко помогать, скажем так, снимать излишнюю когнитивную нагрузку. Ведь чем меньше работник думает, тем меньше он рассуждает, как ему поступить, тем, а, меньше в результате токенов он потратит и тем выше будет качество коне конечного решения. Вообще оптимальный режим работы, как сейчас складывается - это как раз вот возведённый в абсолют контекст инжениринг, когда агентускармливается, а максимально подготовленные данные, чтобы он мог уже конкретно принять своё решение, сработать там, где он может работать лучше всего. А всё, что может быть формализовано, всё, что может быть детерминировано, а должно быть, соответственно, детерминировано и нормализовано. А, и поэтому для того, чтобы отдавать агенту только лучший и свежеподготовленный контекст, нам нужен вот этот самый отдельный слой, собственно, слой контекста, где эта информация из внешних источников будет, во-первых, сохраняться, во-вторых, преобразовываться, нормализовываться, скажем так, то есть к приводиться к более-менее единому формату и, собственно, подготавливаться для наших агентов. А, и агенту достаточно теперь не обзводиться десятком коннекторов MCP и тому подобное именно для доступа к внешним данным. Ему необходим только один, а, коннектор для того, чтобы теперь работать с нашим этим хранилищем. А, но по сути это ещё один просто коннектор, ещё один слой для отказа. В общем, вот такого подхода тоже есть определённые минусы. А, и мы в будущем на других как бы встречах будем обсуждать много других способов построения этого контекстного слоя, потому что способов множество. А сегодня мы посмотрим на один из, так скажем, подходов к снаряду, который, тем не менее, пытается решить эту проблему довольно радикально и довольно успешно.

Собственно, говорить мы сегодня будем про такую вещь, как мираж. Аа Mirageж - это open sourсная утилита CLI, как сегодня говорят, а которая позволяет подключать самые разные источники данных. Как обычные файловые тома, как мы втыкаем, например, флешку в компьютер и видим появившуюся -э появившийся логический диск. Так и мираж позволяет нам создавать новые логические сущности, но при этом а на другом конце этой сущности может быть практически всё, что угодно, начиная от Google почты, Телеграма, аа Гитхаба, каких-то других внешних источников данных, других логических томов, а-а так и, например, даже полноценных баз данных можно подключить туда, например, постгрес и и тому подобное. Но самое главное, что в результате для агента получается такая рабочая среда, где все эти источники будут выглядеть как одно стандартное дерево файлов. И если агент умеет, а он уже умеет, а, в стандартные команды работы с файлами, значит, он умеет работать с таким контекстом. И вот мираж интересен именно этим. он создаёт слой, а, из разрозненного контента, а, создавая очень похожую на файловую систему, историю, с которой нам даже не нужно никого обучать. Агенты byдизаign умеют с такими данными работать. Аа и тогда нам не придётся подключать там разные SDК коннекторы и тому подобное. А при этом, да, важная оговорка здесь, что вот этот слой контекста, он автоматически вопросы качества данных у нас не решит. ровно так же, как он не решит вопросы с правами доступа, с безопасностью, а, и тому подобное. Это останется всё ещё вашей головной болью, потому что, ээ, эти решения по сути дают только форму, а-а, а решение этих задач уже можно реализовать внутри. И сделать это, опять же, довольно а удобно.

Где у нас вообще сейчас ломаются агенты? Вообще вот бывает такая типичная достаточно ситуация, когда рабочий сценарий, корпорация, а в почте приходит какое-то какая-то просьба, какая-то задача. А контекст этой задачи содержится в чате, в телеграме, а этот чат и задача сама ссылается на базу данных. А при этом правила лежат на каком-нибудь файловом диске сетевом, а сама задача фиксируется ещё в одной системе типа джиры. А и для любого нормального человека уже такой подход кажется достаточно сложным. И для агента, казалось бы, это ещё хуже, потому что каждый источник - это отдельный инструмент с отдельным интерфейсом, с отдельной семантикой и тому подобное. И проблема здесь даже не столько в том, что мало коннекторов. Коннекторов достаточно. Слабое место в том, что подключая вот эти разные коннекторы с разными интерфейсами, разной семантикой и тому подобное, у нас нету единой, а, как это, операционной модели для того, чтобы со всем этим работать. Нам нужно либо максимально подробно описывать агенту, как наша система работы с данными устроена, либо агенту приходится угадывать, где что искать, какой источник главнее, можно ли, э, записывать сюда данные, можно ли читать весь канал или там часть каких-то приватных данных и так далее и тому подобное. Аа дальше у нас появляются решения, но, как мы видим, не все из них являются полностью, ну, позволяют полностью решить эту проблему. То есть рак там полезен, когда нужно достать какие-то релевантные фрагменты, когда мы знаем, что конкретно ищем. MCP нам полезен, когда нам нужно снабдить агенты инструментами. Если нет MCP, мы можем использовать какой-то API коннектор и подключиться к сервису напрямую. А, но вот если у нас много источников, то хороший вариант - это добавить ещё один уровень, чтобы для агента это всё выглядело как, а, единая рабочая среда. А, и контекстный слой, вот это, собственно, единая рабочая среда, она здесь немножко отходит от этой тусовки, потому что а контекстный слой отвечает на немного другие вопросы. аэ, собственно, какие источники у нас в моменте смонтированы, какие права есть у каждого из этих источников, где у нас рабочая зона, где нормализованные факты и тому подобное. То есть это контекстный слой, не конкурент Рагу или MCP, это наоборот слой, который их использует, но к ним не сводится.

Собственно, главная идея мираж, как я уже сказал, это в том, чтобы не обучать агента новому интерфейсу для каждого а сервиса. Вместо этого у него есть стандартное файловое дерево, стандартная директория, в которую он может заглядывать и из в едином файловом интерфейсе видеть а и GitHub, и Slack, и Redis, и Gmail, и всё, что угодно. А при этом, э, это не означает, что файлы там, как в дропбоксе, например, локально синхронизируются или, ээ, там сохраняются, занимая место на диске. Это виртуальная файловая система. А, и отдельный, собственно, слой программы исполнителя, которая просто понимает, куда нужную команду направить. Но для нас прелесть как раз-таки в том, что эта программа детерминированная. Соответственно, агенту голову здесь ломать не нужно. Он видит единую поверхность с одной понятной командой, с одним понятным путём, с правами, которые на уровне файловой системы могут присутствовать. И, соответственно, у него меньше сложностей с работы.

Как это всё работает? Опять же, не будем закапываться глубоко внутрь. А что нам здесь важно? Важно нам здесь то, что рабочее пространство, ээ, директория, с которой мы работаем, определяется в виде одного единственного файла, а, с расширением L workspace.L, где, собственно, и описано, что мы конкретно подключаем. Дабы не быть голословным, покажу просто пример. Собственно, это тот самый артефакт, который вы получите по результатам нашей сегодняшней встречи. Я подробнее чуть попозже расскажу, из чего он состоит, но пока покажу, как выглядит, собственно, этот самый файлспейса. А, как видите, всё довольно просто. Это просто точки монтирования для различных, э, внешних данных. Это может быть там оперативная память, это может быть свой собственный диск. Мы можем разные а директории просто подключить к нашему агенту. Неважно, где бы они находились, для него это будет одна э-э файловая система. И, собственно, мы здесь записываем, где конкретно у нас, а, эти данные должны быть подмонтированы. И, соответственно, неважно, что у нас на этой стороне, там Telegram, Poгressс или, собственно, на наш же собственный диск. Для агента это будет всего лишь директорией. А вот причём мираж немножко больше, чем просто возможность для монтирования этих файлов. он ещё эти файлы может обрабатывать, нормализовывать, перекладывать и, э, в принципе, аэ, сохранять в виде, там, например, отдельных а сNпшотов, которые можно потом будет восстановить. В общем, работа достаточно широкая.

Дабы не погружаться сейчас в детали, покажу снова наш артефакт, в котором есть важная папочка документы, а внутри которой есть подробное описание и подробные гайды на русском языке, заранее подготовленные. где описано пошагово, как, а, подключать, собственно, все, а, эти коннекторы, как составлять, м, рабочее пространство, ну, и так далее, как со всем этим работать. Аа да, собственно, как, в принципе, э выглядит работа со всей этой историей. Здесь может показаться много непонятных команд. Э-э, в принципе, всё, что здесь нужно вынести - это то, что сама команда, вот примерный паттерн работы с файлами, он состоит из четырёх блоков. Сначала загружаются нужные нам переменные окружения, то есть данные о том, где у нас что лежит. А затем, собственно, создаём нужный нам workpace, выполняем команды, работаем с файлами внутри этого воркспейса, а и доведя его до какого-то полезного состояния, можем сделать спшот, то есть зафиксировать нужное состояние и дальше, например, начать работать уже с ним. А это важно в принципе, потому что во всех подобных вещах мы сначала формализуем процессы, а учимся, скажем так, управлять средой и после этого уже занимаемся, а непосредственно подключением данных. А и выглядит это, собственно, максимально просто. Э покажу это на примере. Всё, что требуется сделать - это установить, собственно, этот Mirage CLI. А после чего у нас, э, станет доступна в системе команда Mirage, которую мы можем запустить и увидеть, собственно, то, что она позволяет делать. Небольшой вывод. А, собственно, основные действия происходят у нас на уровне рабочего пространства, на уровне сессии, то есть в, э, одном одном, скажем так, процессе работы с этим, а, рабочим пространством. Дальше мы можем, э, собственно, смотреть на файлы, которые у нас здесь а находятся. Мы можем посмотреть на предварительные результаты той или иной команды. Ну и у нас есть, естественно, система помощи. Ну а дальше вся работа достаточно простая. Всё, что нам требуется - это, а, написать, собственно, изначально этот самый workсpace, который, опять же повторюсь, мы можем написать руками, либо за нас это может сделать агент. Создав этот э Workspace, всё, что нам останется сделать дальше - это запустить команду Mirage Workspace, а Create. Сейчас момент, а, и указать, собственно, созданный нами файл. А после чего у нас должны, собственно, подключиться все эти источники. А, собственно, что мы и видим, несмотря на то, что я подключаю здесь для скорости свой же собственный файловый диск, здесь, а, главное, что мы здесь видим, что теперь у нас появилась эта папка, и теперь мы можем, собственно, полноценно смотреть её, а, содержимое, пользоваться стандартными командами поиска. Сейчас, пардон. Аа, и сейчас, секунду. и, собственно, работать с этими файлами точно так же, как с любыми, э, локальными файлами, где бы они там и не находились.

А, ну и да, а теперь подробнее про, пожалуй, самое полезное. А, как я уже сказал, мы не будем тратить часы на настройку и проработку различных сценариев. Тем более, что у каждого из вас есть собственные отдельные источники, а-а, собственный формат работы с ними, ну и так далее и тому подобное. А-а вот. Но при этом, как я сказал, никто не отпустит вас со словами: "Теперь идите, пробуйте новый инструмент". Вместо этого а был подготовлен отдельный репозиторий. Э, вы его можете открыть прямо сейчас по ссылке, но дальше она как бы будет и под видео, и, э-э в комментариях, а, собственно, тоже. Мм, а, сразу говорю, это не готовые как бы формат для синхронизации всех каналов. Это подготовительный контур, а который даёт вам возможность не начинать с чистого лица, а взять готовую, предварительно подготовленную структуру и развить её, используя в качестве фундамента. для себя. Здесь уже есть как бы и локальный workс, и вся необходимая документация, и специальный файл опросником каналов. Сейчас я его покажу вам подробнее. А, ну и, собственно, все дальнейшие необходимые файлы для того, чтобы можно было всё, э, что хочется подключить.

А, собственно, что такое опросник каналов? Это важная процессная история, потому что как раз, как мы говорили раньше, ээ подключать всё и сразу - это далеко не всегда хорошая мысль. Лучше сначала подойти к этому процессу с точки зрения аналитики этих самых процессов и выделить приоритеты, расставить права доступа, чтобы мы могли понимать такую вещь, как стоимость ошибки. Потому что прежде, чем что-то подключать, прежде чем, а, ставить себя перед риском, что наши персональные данные, а, подвергнутся неназванной пока опасности, лучше на берегу оценить, что с этим может быть. Собственно, этот самый опросник и позволит вам это сделать, описав, какие каналы у вас есть, какие вам каналы нужны. И дальше, а, то, что от вас потребуется - это заполнить небольшую табличку, по итогам которой вы как раз и будете понимать, какой канал вам нужен, какие права доступа к этому каналу нужно аа сделать, ээ насколько серьёзны данные, которые там находятся, ну и тому подобное. А особенно как бы вся эта история важна даже не столько для пользовательского уровня, она важна для уровня работы в команде и для корпоративного контекста. А потому что там стоимость ошибок как раз-таки существенно существенно выше.

А вот теперь про то, что как эта штука работает. А, собственно, она предварительно настроена у нас. И в ней есть уже небольшая структура файлов, с которой вы можете работать дальше. В общем, э естественно, когда мы говорим про базу знаний, когда мы говорим про слой контекста, нам, ээ, как бы важен не просто текст, нам из этого текста нужно извлекать дополнительные данные. Нам нужно здесь отдельно положить решение, отдельно сделать так, чтобы наш агент понимал разницу между сущностями, где у нас там человек, где у нас там проект и тому подобное. Аа это всё у нас тоже описано отдельно. Агент это может прочитать и сразу понять, а для чего у нас, а какая папка используется и какие нормализованные данные в неё должны поступить. А, и после того, как мы сможем привести файл к подобной структуре, у нас всё станет гораздо проще, потому что, а, любой факт, который в нашей системе появится, появится в ней не просто так. Если агент пишет нам, что там в проекте X принято решение Y, то сама по себе эта фраза не имеет никакой ценности. Но если у этого утверждения есть там дата, ссылка на конкретное принятие решений и там статус проверки, а это уже получается не просто контент, это получается знание с доказательством, с которым дальше уже можно работать и самое главное, с которым дальше удобно работать непосредственно самому агенту. А-а, да. Мм, секунду. Собственно, да, в чём суть этой структуры, ещё договорю в том, что а она не позволяет переводить сырые данные сразу в проверенные факты. Это такой пайплайн, через который эти данные проходят а-а и как раз-таки нормализуются. И до конца доходит только тот файл, который агенту уже комфортно а потреблять, в котором уже есть все эти ссылки на источники и так далее и тому подобное. Аа дальше, да, собственно, как я уже раньше сказал, дальше мы описываем, как э с этими данными работать. Для этого нужен специальный файл манифеста. Он здесь уже есть предварительно. Собственно, он и описывает, как аа cйка должна с этими э файлами существовать. Вот. А, и самая большая ошибка, которую на этом этапе можно совершить - это как раз-таки ринуться и подключать всё сразу. Мм, в чём проблема, кстати, почему нельзя подключать всё сразу? Потому что у вас в разных каналах могут быть разные э источники данных, которые могут между собой конфликтовать. А до того, как мы пропишем, а каким образом эти конфликты должны разрешаться, а мы не должны загружать данные, где эти конфликты потенциально будут. Именно поэтому аа там лежит опросник, который лучше сначала целиком прогнать, после которого у вас не должно возникать вопросов: "А как с теми или иными данными работать?" Вот.

А и уже подходим к концу. Собственно, как я сказал, просто так, а, отсюда никто не уйдёт. Э, есть не даже не не домашнее задание, а практика, которую полезно пройти. для того, что, ну, если вы видите в этом инструменте для себя потенциальную ценность, если хотите его попробовать, то можете попробовать на заранее, а спроектированном сценарии. Собственно, сценарий видите, а перед собой, и, собственно, последовательно по нему двигаясь, вы сможете, а, сделать свой первый шаг к созданию вот этого, э, контекстного слоя сначала для себя, а дальше созданный по таким правилам, то есть имеющий аа уже просто полноценную как бы базу для дальнейшего расширения, он может стать, в том числе фундаментом и для вашей командной работы, аа, и организации, и, может быть, Э, дальше, а что для нас здесь является как бы сутью? А, сутью, ну, целью. Целью для нас является, э, действие, при котором агент, который будет работать с эти с этими данными, с этой информацией, которую мы таким образом подготовим, аа мог не ломать голову, если он сразу понимает. Почему даже на самом деле не обязательный агент? А даже если человек, который с конечной папкой будет работать, если он понимает не просто о чём этот факт, но и а понимает, откуда он взялся и можно ли ему доверять, то есть есть ли у него достаточное количество там источников аа на которые он ссылается. И если ответ на этот вопрос да, то прекрасно, задача выполнена, ваш контекстный слой начинает потихоньку работать. А если же нет, то по сути мы просто дали модели больше текста и, соответственно, дали ей больше возможностей для ошибок. Вот. А, поэтому всё, что мы делаем, э, ещё раз напомню, э-э, это стараемся сделать так, чтобы агент, у которого неограниченное количество возможностей, э, реализации того или иного плана, и одновременно с этим неограниченное количество возможностей даже не ошибиться, а просто пойти не в ту сторону, куда мы хотим. Вот, по сути, всё, что мы делаем - это стараемся обрезать эти границы, оставляя агента в очень, а, чётко очерченном пространстве без права на критическую ошибку. То есть наша задача сделать так, чтобы он оказался в таких условиях, в таком условном загоне, чтобы у него не оставалось других возможностей, кроме как сделать всё правильно, хорошо и так, как мы того хотим. Если у нас это получилось, значит, а мы достигли своей цели. Вот.

А на этом мой обзор завершён. Дальше я предлагаю вам воспользоваться уже практической частью, которую вы можете скачать по ссылке, скачать на гитхабе. А репозиторий публичный, э доступен прямо сейчас. Если кто не работал с Гитхабом, в чём я уже сильно сомневаюсь, то достаточно нажать на зелёную кнопочку, загрузить а Zipрхив со всем этим содержимым и дальше распаковать его и перекинуть готовую папку в любого агента, с которым вы работаете. А-а, всё, собственно, ээ этого достаточно для того, чтобы начать работу. А, повторюсь, здесь довольно обширная документация, а, написанная не в формате "Возьмём код и просто переделаем", а именно в формате гайда для того, чтобы было удобно работать и удобно ко всему этому подходить. Но повторюсь, самое главное здесь даже не столько сам гайд, сколько отдельный скилл, который мм тоже заранее подготовлен. И, соответственно, можно эту папочку, открыв в агенте, попросить его: "Помоги мне настроить". аэ мираж, после чего агент, заранее обученный всем нужным командам, сможет провести вас за ручку через весь процесс настройки, а этой системы, и в результате вы получите а уже собственные данные и сможете подключить все необходимые реквизиты для этих данных. Он вам сможет объяснить, где эти реквизиты брать. Ну и, э, в результате получить уже полноценную рабочую систему. Вот.

Ну и в завершении повторюсь, что это штука, которая позволяет создать доступ, а создать систему, а настроить обработку этих файлов, э, и создать вот этот базовый контекстный слой. А вот, а, надеюсь, проблем не возникнет. Если же у кого-то есть сложности, то не забывайте, что у нас есть чатик, в который можно добавиться и задать вопросы, ээ, если они у вас будут, и мы будем рады ответить на любые, а, подобные вещи. Но повторюсь, а когда мы работаем с агентами, когда мы работаем с с отдельными файлами, мы можем отдавать работу на откуп агенту, но это не убирает с нас необходимость э самим понимать, в каких рамках эти агенты работают, с какими данными аа и какие, собственно, проблемы могут здесь возникнуть. Какая, повторюсь ещё раз, цена ошибки может быть, если мы будем здесь слишком беспечными. Именно поэтому, мне кажется, наиболее логичный способ погружения в такие вещи - это вот такая вот гибридная система в виде маленькой теоретической затравки и дальнейшей практики, которую вы можете легко пройти сами. И задача здесь, скорее состоит в том, чтобы облегчить именно аа вход в практическую часть. Ну и я буду рад увидеть, а-а, через неделю ваши комментарии, а-а, послушать, насколько такой подход оказался полезным, и, э, от это позволит дальше тогда скорректировать наши форматы, аэ, и вести их, э, туда, где, а, больше пользы для аудитории. Вот на этом у меня всё. Всем большое спасибо. Если у присутствующих есть вопросы, э, поднимайте руку, я с удовольствием на них отвечу. Если вопросов нету, то всем хорошей пятницы, хорошего вечера и до встречи через неделю. Да. Всем большое спасибо. Пока-пока.