42/60 Вопросов по системному дизайну
Ваш ИИ-агент помнит имя пользователя.
Пользователь просит агента забронировать дешевый рейс в Нью-Йорк. Затем он просит найти отели стоимостью менее 150 долларов за ночь. И просит сравнить общую стоимость поездки.
К третьему шагу агент отправляет 8 000 токенов истории в LLM. В ответ он ведет себя так, будто это первый ход в чате.
Прежде чем выпускать такой продукт, вам нужна архитектура памяти.
Выберите один вариант:
In-context window: храните всю историю в промпте. Это просто. Но этот метод перестает работать после 15 ходов или 8 000 токенов.
Vector memory store: создавайте эмбеддинги прошлых ходов. Извлекайте наиболее подходящие по сходству. Этот метод дает сбой, когда поиск по запросу «рейс в Нью-Йорк» вытягивает воспоминание о старой поездке вместо текущей задачи.
Episodic memory с суммаризацией: сжимайте старые ходы в структурированные резюме. Вставляйте релевантные резюме в каждый запрос. Это сложнее реализовать, но сложнее запутать.
Redis session state: используйте структурированное хранилище «ключ-значение». Агент явно читает и записывает данные. Это детерминированный подход. Агент должен знать, что и когда сохранять.
Один вариант перестает работать после 15 ходов. Другой извлекает неверный контекст в неподходящее время. Третий — правильный выбор для агентов, ориентированных на выполнение задач.
Выберите A, B, C или D. Расскажите, сталкивались ли вы с этим в продакшене.
Полный разбор я оставлю в комментариях.
Источник: https://dev.to/thejoud1997/4260-days-system-design-questions-4018
Опциональное обучающее сообщество: https://t.me/GyaanSetuAi