В первой части я рассказал, как собрал английского бота. Во второй — про четыре уровня памяти.
Теперь — про то, как всё это связать с внешними данными и не разориться на токенах.
Интеграция с LifeTrend
Прикрутил агента к LifeTrend. Дал возможность подгружать мои записи и анализировать их.
Говорю: «Посмотри записи за последние 4-5 дней».
Проблема: бот подключается к базе данных и берёт не 4-5 записей, а по какой-то причине загружает вообще всю таблицу. А у меня там больше 200 записей. Это больше 200 тысяч токенов.
Всё это загружается в Redis и каждый раз отправляется заново в агента. И пока не накопится 40 сообщений — всё это висит в памяти.
А я использую Opus 4.5 — для меня эта модель самая оптимальная. Нравится, как она говорит и воспринимает промпт. Но и стоит она дорого. При 200 тысячах токенов на входе стоимость одного запроса получалась около 200 рублей. Или даже больше.
Решение №1: Фильтрация по токенам
Первое решение — сделал дополнительную ветку по подсчёту токенов в самом начале, до ассистента.
Как работает:
- Вытаскиваю из Redis память
- Считаю, сколько внутри всего токенов
- Если токенов больше 100 тысяч — значит внутри очень много таблиц или данных
- Ищу, в каком именно сообщении это находится
- Обрезаю: оставляю сверху 2000 символов и снизу 3000 символов
- Всё, что посередине — удаляю
Это был первый этап. Но даже после этого большое количество данных всё равно держалось в памяти.
Решение №2: Ассистент-помощник
Итоговое решение — сделал отдельного помощника и подключил к нему все инструменты.
Как работает:
- Пишу «проанализируй мои несколько дней»
- Запускается ассистент на слабенькой модели
- Он достаёт все данные, подготавливает их
- Передаёт основному агенту уже сжатую выжимку
Можно указать в тексте слово, которое запускает помощника. У самого агента тоже есть возможность вызвать его — чтобы не насиловать память основной модели.
Инструменты ассистента
Прикрутил к помощнику кучу инструментов:
- Perplexity — поиск в интернете
- RAG с книгами — постоянно добавляю туда то, что мне нравится
Какие книги подключены:
- По трейдингу
- По психологии
- Другие полезные материалы
Могу спросить что-то про эмоциональное состояние — агент идёт в книги по психологии, ищет, анализирует.
Весь доступ есть у ассистента. Основной агент вызывает его без проблем — память не страдает.
Финальная архитектура
Что получилось в итоге:
- Основной агент (Opus 4.5) — диалог, анализ, ответы
- Ассистент-помощник (слабая модель) — достаёт и готовит данные
- Векторная память (Qdrant) — всё общение, полный поиск
- Кратковременная память (MySQL) — ключевые факты
- Память промта — инструкции, которые агент добавляет сам себе
- RAG с книгами — база знаний для глубокого анализа
- Perplexity — поиск актуальной информации
- Фильтрация — защита от перегруза токенов
Всё поднимается в одном Docker-контейнере. Работает быстро.
Как использую каждый день
Общаюсь с агентом практически ежедневно:
- Прошу проанализировать сны — ходит по книгам, ищет паттерны
- Рассказываю про Кирилла
- Спрашиваю, как что-то будет на английском
- Прошу посмотреть мои записи за неделю
Вывод
Хотел просто практиковать язык — получил систему, которая помнит всё, анализирует данные и учится на ходу.
Создание английского бота переросло в большого персонального помощника.