0Pricing
AI Agents · Урок

Простые хранилища памяти (ключ–значение)

Сохраняйте упомянутые пользователем факты (имя, предпочтения) в хранилище ключ–значение и добавляйте их в системный промпт при каждом ходе диалога.

«Простые хранилища памяти (ключ–значение)» — бесплатный урок 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 — локальная установка не требуется.

Все уроки этого курса

  1. Кратковременная память в контекстном окне
  2. Почему длинные контексты не масштабируются
  3. Суммаризация как сжатие
  4. Простые хранилища памяти (ключ–значение)
← Назад к AI Agents