Полу-технический пост больше для любителей, которые делают или хотят делать своих агентов. Остальным будет скорее всего скучно / душно.
Когда я запустил семейство своих агентов, первой и ключевой задачей была организация хранилища данных и контекста.
Наилучшее решение на мой взгляд – создание графа знаний, когда все со всем связано: каждая заметка, человек, описание проекта, файл живут внутри графа в виде отдельной сущности (markdown-файла) со ссылками-связями на другие такие же файлы.
Таким образом, когда я спрашиваю агента «Что там по проектам у менеджера Х», агент стучится в конкретную заметку и далее по этим линкам разматывает все остальные релевантные заметки, не тратя лишних токенов и не сканируя всю базу данных.
Как я к этому подошел:
1. Сформировал озеро данных: заметки, pdf, word, excel-файлы, данные с гугл-драйва. Все это собрано в единое хранилище.
2. Надиктовал в формате аудио контекст по каждому участнику команды, проекту, сущности. Перевел это в текст и также загрузил в базу.
3. Прогнал эти данные через LLM + python-скрипты с целью:
• перевести все в markdown для экономии токенов
• простроить внутри маркдауна ссылки и связи на другие заметки
• добавить к каждой метаданные (проект, исполнители, etc)
• вытащить дополнительный контекст на основе файлов, кто что делал, чем занимался etc
• склеить алиасы: «Ваня», «Иван» и фамилия – один узел графа, а не три разных человека. Без этого граф на реальных данных разваливается.
Получился граф с двумя слоями – контекстные файлы: о проекте, о человеке, о компании, etc и непосредственно проектные файлы (тз, макеты, etc), на которые он ссылается + числовые данные в sqlite базе.
4. Визуализировал граф с помощью obsidian – просто обертка поверх файлов для их отсмотра и редактирования. Суперудобно и дает возможность "увидеть" карту графа.
5. Далее в рамках самого obsidian прошелся по всем ключевым заметкам – люди, проекты этого года, в рамках заметки с меткой (!) надиктовал коррекции, где LLM ошиблась, неправильно связала, сделала некорректные акценты. Прогнал повторно, финализировал. На выходе у меня получается буквально цифровой мозг с сущностями, нейронными связями, их количеством и выраженностью.
Как я настроил обновление графа:
1. В граф с шагом 1 день льются все изменения – новые / измененные проектные файлы, транскрипты встреч, etc. Агент сам мониторит, что изменилось, с какими файлами склеивать данные, где дубляжи, а где что-то новое и существенное. Отдельно он выдергивает из встреч договоренности и приклеивает их к проектам. В него же льются тайминги, таблицы загрузки и репорты сотрудников.
2. Два раза в неделю мне приходит "promotion digest" – набор фактов-претендентов на добавление в контекстный слой, например "Стейкхолдеру Х теперь важно ..., а не ...". Я отсматриваю дайджест (20 минут) и наговариваю, что добавляем, а что галлюцинация. Это позволяет не замусоривать граф.
3. Если во встречах, файлах и пр. встречаются новые сущности / факты (например, новый человек или проект), которые ранее не упоминались, агент определяет эту сущность как "файл-сироту" и требует моих комментариев, к чему его добавить или завести как отдельный элемент.
Что мне это дает:
Для работы с ИИ контекст – это ключ к качеству. Я в любой момент могу "залететь" в систему и спросить – "что обещал мне человек ...?", "какой статус по проекту ...?", "подготовь мне отчет на основе ...". Это мой ассистент, который держит в уме все, что происходило и происходит в моем контексте.
⛔️ Приватность:
Тут в зависимости от специфики работы. Для чувствительных данных – локальная мощная модель (например QWEN), если все более-менее публичное, лежит в гугл-драйвах и проч., не является чувствительным, то я бы рекомендовал последнюю версию chatgpt или claude opus.
Также некоторые куски графа изолированы от некоторых тематических агентов. Например проектные и личные файлы я развел на разные графы.
Enjoy 😘
PARSHIN