- TTS: xtts-v2 integration with voice cloning support
- Document: docling integration for PDF/DOCX/PPTX processing
- Memory Service: added /facts/upsert, /facts/{key}, /facts endpoints
- Added required dependencies (TTS, docling)
7.1 KiB
🧠 Типи пам'яті для агента Helion
Дата: 2026-01-12
Агент: Helion (Energy Union)
📋 Огляд системи пам'яті
Helion використовує Memory Service для збереження та отримання контексту діалогів. Система пам'яті інтегрована через memory_client.py в Gateway сервісі.
🧠 Типи пам'яті
1. Facts (Факти)
Призначення: Довгострокові факти про користувача та команду
Характеристики:
- Зберігаються назавжди (до явного видалення)
- Структуровані дані (ключ-значення)
- Можуть містити JSON дані
- Прив'язані до
user_idта опціонально доteam_id
API:
GET /facts- отримати всі факти користувачаPOST /facts/upsert- створити/оновити фактGET /facts/{fact_key}- отримати конкретний факт
Приклад використання:
# Зберегти факт
await memory_client.upsert_fact(
user_id="user123",
fact_key="preferred_language",
fact_value="uk",
team_id="energy_union"
)
# Отримати факт
fact = await memory_client.get_fact(
user_id="user123",
fact_key="preferred_language"
)
2. Events (Події/Повідомлення)
Призначення: Короткострокова пам'ять про діалоги та взаємодії
Характеристики:
- Зберігаються з
scope(short_term / long_term) - Містять повідомлення користувача та відповіді агента
- Можуть бути фільтровані за
agent_id,channel_id,kind - Обмежені за кількістю (limit параметр)
API:
GET /agents/{agent_id}/memory- отримати події агентаPOST /agents/{agent_id}/memory- зберегти подію
Параметри:
scope:short_term(нещодавні) абоlong_term(архівні)kind:message(повідомлення),action(дії), тощоlimit: кількість останніх подій
Приклад використання:
# Зберегти turn діалогу
await memory_client.save_chat_turn(
agent_id="helion",
team_id="energy_union",
user_id="user123",
message="Яка ціна на токени?",
response="Ціна токенів ENERGY зараз...",
channel_id="telegram_chat_123",
scope="short_term"
)
3. Summaries (Підсумки діалогів)
Призначення: Стислі підсумки довгих діалогів для масштабування контексту
Характеристики:
- Створюються для періодів часу
- Містять стислий опис теми діалогу
- Можуть містити теми (topics) та метадані
- Використовуються для зменшення обсягу контексту
API:
GET /summaries- отримати підсумкиPOST /summaries- створити підсумок
Приклад використання:
# Створити підсумок діалогу
await memory_client.create_dialog_summary(
team_id="energy_union",
channel_id="telegram_chat_123",
agent_id="helion",
user_id="user123",
period_start=datetime(2026, 1, 1, 10, 0),
period_end=datetime(2026, 1, 1, 11, 0),
summary_text="Обговорення токеноміки ENERGY та правил стейкінгу",
message_count=25,
participant_count=2,
topics=["tokenomics", "staking", "energy"]
)
🔄 Контекст пам'яті для діалогу
При обробці повідомлення Gateway автоматично отримує контекст пам'яті:
memory_context = await memory_client.get_context(
user_id="user123",
agent_id="helion",
team_id="energy_union",
channel_id="telegram_chat_123",
limit=10
)
Структура контексту:
{
"facts": [
{"fact_key": "preferred_language", "fact_value": "uk"},
{"fact_key": "user_role", "fact_value": "investor"}
],
"recent_events": [
{
"body_text": "Попереднє повідомлення користувача",
"body_json": {"type": "user_message"},
"created_at": "2026-01-12T10:00:00Z"
}
],
"dialog_summaries": [
{
"summary_text": "Попередній діалог про токеноміку",
"topics": ["tokenomics"],
"period_start": "2026-01-11T09:00:00Z"
}
]
}
Цей контекст передається в Router разом з повідомленням для генерації відповіді.
💾 Backend Storage
Memory Service використовує наступні бази даних:
PostgreSQL
- База:
daarion_memory - Таблиці:
facts- довгострокові фактиagent_memory- події/повідомленняdialog_summaries- підсумки діалогів
Redis (опціонально)
- Кешування контексту (TTL: 5 секунд за замовчанням)
- Швидкий доступ до нещодавніх подій
🔧 Конфігурація
Змінні середовища:
MEMORY_SERVICE_URL- URL Memory Service (за замовчанням:http://memory-service:8000)MEMORY_CONTEXT_CACHE_TTL- TTL кешу контексту в секундах (за замовчанням: 5)
В docker-compose.node1.yml:
environment:
- MEMORY_SERVICE_URL=http://memory-service:8000
📊 Схема роботи
Telegram Message
↓
Gateway (Helion)
↓
1. Отримати контекст пам'яті (facts + events + summaries)
↓
2. Передати повідомлення + контекст в Router
↓
3. Router генерує відповідь з урахуванням контексту
↓
4. Gateway зберігає turn діалогу (message + response)
↓
5. Відправити відповідь в Telegram
⚠️ Важливо
- Memory Service опціональний - якщо він недоступний, Gateway працює без пам'яті
- Кешування - контекст кешується на 5 секунд для оптимізації
- Обмеження - кількість подій обмежена параметром
limit(за замовчанням: 10) - Scope -
short_termдля нещодавніх подій,long_termдля архіву
Оновлено: 2026-01-12