Spaces:
Running
Running
| import json | |
| import os | |
| from datetime import datetime | |
| # === Путь к файлу памяти === | |
| MEMORY_FILE = "core/memory.json" | |
| def load_memory(): | |
| """Загружает контекст предыдущих запросов""" | |
| if not os.path.exists(MEMORY_FILE): | |
| return [] | |
| try: | |
| with open(MEMORY_FILE, "r", encoding="utf-8") as f: | |
| return json.load(f) | |
| except Exception: | |
| return [] | |
| def save_memory(memory): | |
| """Сохраняет обновлённую память""" | |
| os.makedirs(os.path.dirname(MEMORY_FILE), exist_ok=True) | |
| with open(MEMORY_FILE, "w", encoding="utf-8") as f: | |
| json.dump(memory[-10:], f, ensure_ascii=False, indent=2) # храним только последние 10 | |
| def update_memory(prompt, response): | |
| """Добавляет новый элемент в память""" | |
| memory = load_memory() | |
| memory.append({ | |
| "time": datetime.now().strftime("%Y-%m-%d %H:%M:%S"), | |
| "prompt": prompt, | |
| "response": response[:300] # короткий обзор ответа | |
| }) | |
| save_memory(memory) | |
| def summarize_context(): | |
| """Суммирует контекст (чтобы понять, о чём была беседа)""" | |
| memory = load_memory() | |
| if not memory: | |
| return "Нет контекста" | |
| topics = [m["prompt"] for m in memory[-5:]] | |
| return "Контекст беседы: " + "; ".join(topics) | |