Архитектура AI-ассистента: интеграции и ассистент-помощник

👁 53 IVOL-Service

В первой части я рассказал, как собрал английского бота. Во второй — про четыре уровня памяти.

Теперь — про то, как всё это связать с внешними данными и не разориться на токенах.


Интеграция с LifeTrend

Прикрутил агента к LifeTrend. Дал возможность подгружать мои записи и анализировать их.

Говорю: «Посмотри записи за последние 4-5 дней».

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

Всё это загружается в Redis и каждый раз отправляется заново в агента. И пока не накопится 40 сообщений — всё это висит в памяти.

А я использую Opus 4.5 — для меня эта модель самая оптимальная. Нравится, как она говорит и воспринимает промпт. Но и стоит она дорого. При 200 тысячах токенов на входе стоимость одного запроса получалась около 200 рублей. Или даже больше.


Решение №1: Фильтрация по токенам

Первое решение — сделал дополнительную ветку по подсчёту токенов в самом начале, до ассистента.

Как работает:

  1. Вытаскиваю из Redis память
  2. Считаю, сколько внутри всего токенов
  3. Если токенов больше 100 тысяч — значит внутри очень много таблиц или данных
  4. Ищу, в каком именно сообщении это находится
  5. Обрезаю: оставляю сверху 2000 символов и снизу 3000 символов
  6. Всё, что посередине — удаляю

Это был первый этап. Но даже после этого большое количество данных всё равно держалось в памяти.


Решение №2: Ассистент-помощник

Итоговое решение — сделал отдельного помощника и подключил к нему все инструменты.

Как работает:

  • Пишу «проанализируй мои несколько дней»
  • Запускается ассистент на слабенькой модели
  • Он достаёт все данные, подготавливает их
  • Передаёт основному агенту уже сжатую выжимку

Можно указать в тексте слово, которое запускает помощника. У самого агента тоже есть возможность вызвать его — чтобы не насиловать память основной модели.


Инструменты ассистента

Прикрутил к помощнику кучу инструментов:

  • Perplexity — поиск в интернете
  • RAG с книгами — постоянно добавляю туда то, что мне нравится

Какие книги подключены:

  • По трейдингу
  • По психологии
  • Другие полезные материалы

Могу спросить что-то про эмоциональное состояние — агент идёт в книги по психологии, ищет, анализирует.

Весь доступ есть у ассистента. Основной агент вызывает его без проблем — память не страдает.


Финальная архитектура

Что получилось в итоге:

  1. Основной агент (Opus 4.5) — диалог, анализ, ответы
  2. Ассистент-помощник (слабая модель) — достаёт и готовит данные
  3. Векторная память (Qdrant) — всё общение, полный поиск
  4. Кратковременная память (MySQL) — ключевые факты
  5. Память промта — инструкции, которые агент добавляет сам себе
  6. RAG с книгами — база знаний для глубокого анализа
  7. Perplexity — поиск актуальной информации
  8. Фильтрация — защита от перегруза токенов

Всё поднимается в одном Docker-контейнере. Работает быстро.


Как использую каждый день

Общаюсь с агентом практически ежедневно:

  • Прошу проанализировать сны — ходит по книгам, ищет паттерны
  • Рассказываю про Кирилла
  • Спрашиваю, как что-то будет на английском
  • Прошу посмотреть мои записи за неделю

Вывод

Хотел просто практиковать язык — получил систему, которая помнит всё, анализирует данные и учится на ходу.

Создание английского бота переросло в большого персонального помощника.


Время чтения: 3 мин
Всего слов: 540
Обновлено: