Простые хранилища памяти (ключ–значение)
Сохраняйте упомянутые пользователем факты (имя, предпочтения) в хранилище ключ–значение и добавляйте их в системный промпт при каждом ходе диалога.
«Простые хранилища памяти (ключ–значение)» — бесплатный урок AI Agents на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Agents, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Agents содержит 4 уроков всего.
Самая дешёвая долговременная память
До появления векторных БД и эмбеддингов есть простое хранилище ключей и значений. Для хранения фактов о конкретном пользователе (имя, предпочтения, настройки) этого достаточно.
Что хранить
Подходящие кандидаты для памяти KV:
- Имя и язык пользователя
- Предпочтения (единицы измерения, часовой пояс, тон общения)
- Закреплённый контекст (текущий проект, текущая тема)
- Недавние учётные данные инструментов и токены API
Небольшое хранилище в памяти
Для прототипа в одном процессе:
memory = {
'user_name': 'Alice',
'units': 'celsius',
'language': 'tr'
}
def remember(key, value):
memory[key] = value
def recall(key, default=None):
return memory.get(key, default)
remember('city', 'Istanbul')
print("Recalled user_name:", recall('user_name'))
print("Recalled city:", recall('city'))
print("Recalled missing key:", recall('country', 'unknown'))
Добавление в системный промпт
На каждом ходу преобразуйте хранилище KV в содержимое системного промпта:
def build_system_prompt(user_id):
facts = load_facts(user_id)
rendered = '\n'.join(f'- {k}: {v}' for k, v in facts.items())
return f'''
You are AssistantBot.
Known facts about this user:
{rendered}
Use these to personalise replies.
'''Используйте Redis для нескольких пользователей
Для рабочего агента используйте Redis:
import redis
r = redis.Redis()
def remember(user_id, key, value):
r.hset(f'mem:{user_id}', key, json.dumps(value))
def recall_all(user_id):
raw = r.hgetall(f'mem:{user_id}')
return {k.decode(): json.loads(v) for k, v in raw.items()}Или просто Postgres
Postgres тоже подходит — по одному столбцу JSON на пользователя:
CREATE TABLE user_memory (
user_id TEXT PRIMARY KEY,
facts JSONB NOT NULL DEFAULT '{}'
);
-- Update one field:
UPDATE user_memory SET facts = facts || '{"units": "celsius"}' WHERE user_id = $1;Память как инструмент
Предоставьте операции с памятью в виде инструментов, чтобы сам агент мог записывать данные в память:
tools = [
{'name': 'remember', 'description': 'Save a fact about the user', 'parameters': {...}},
{'name': 'forget', 'description': 'Remove a stored fact', 'parameters': {...}}
]
# The agent can call remember('user_name', 'Alice') itself.
for t in tools:
print(f"{t['name']}: {t['description']}")
Предотвращайте разрастание памяти
Ограничьте количество сохранённых ключей для каждого пользователя (50 или 100). Иначе системный промпт будет расти без ограничений.
TTL и затухание
Некоторые воспоминания быстро устаревают. Используйте сроки действия Redis:
r.hset(f'mem:{user_id}', 'last_topic', 'pricing')
r.expire(f'mem:{user_id}', 3600) # 1 hourПамять, редактируемая пользователем
Позвольте пользователям просматривать и редактировать то, что агент о них запоминает, — память ChatGPT работает именно так. Это укрепляет доверие и предотвращает неприятные ошибки.
Конфиденциальность: осторожно с PII
Сохранённые факты часто содержат PII. Шифруйте конфиденциальные поля при хранении, используйте отдельные ключи шифрования для каждого пользователя и удаляйте данные при закрытии аккаунта.
От KV к векторам
KV отлично подходит для структурированных фактов. Для неструктурированных фактов («пользователь предпочитает непринуждённый тон, любит отсылки к аниме, ненавидит эмодзи») лучше использовать векторное хранилище. Мы рассмотрим это в следующем курсе.
Когда использовать память KV
Для какого типа памяти лучше всего подходит простое хранилище ключей и значений?
Итоги
Для 90% сценариев использования персонального ассистента достаточно хранилища KV на Redis или Postgres с добавлением его содержимого в системный промпт.
Часто задаваемые вопросы
Урок «Простые хранилища памяти (ключ–значение)» бесплатный?
Да — полный текст урока «Простые хранилища памяти (ключ–значение)» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Agents, подпишись на CoddyKit PRO. Курс AI Agents содержит 4 уроков всего.
Чему я научусь в уроке «Простые хранилища памяти (ключ–значение)»?
Сохраняйте упомянутые пользователем факты (имя, предпочтения) в хранилище ключ–значение и добавляйте их в системный промпт при каждом ходе диалога. Ты практикуешь AI Agents с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать AI Agents?
Предыдущий опыт не требуется. AI Agents на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Простые хранилища памяти (ключ–значение)»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке AI Agents?
Да. Каждый урок AI Agents включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Кратковременная память в контекстном окне
- Почему длинные контексты не масштабируются
- Суммаризация как сжатие
- Простые хранилища памяти (ключ–значение)