openvector_dev 0.1.11__tar.gz → 0.1.12__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: openvector_dev
3
- Version: 0.1.11
3
+ Version: 0.1.12
4
4
  Summary:
5
5
  Author: p00ler
6
6
  Author-email: liveitspain@gmail.com
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "openvector_dev"
3
- version = "0.1.11"
3
+ version = "0.1.12"
4
4
  description = ""
5
5
  authors = [
6
6
  {name = "p00ler",email = "liveitspain@gmail.com"}
@@ -32,6 +32,7 @@ class Memory:
32
32
  host: str,
33
33
  port: int,
34
34
  collection: str,
35
+ redis_url: str,
35
36
  vector_size: int = 768,
36
37
  api_key: str | None = None,
37
38
  short_maxlen: int = 20,
@@ -41,12 +42,13 @@ class Memory:
41
42
  :param host: Адрес Qdrant.
42
43
  :param port: Порт Qdrant.
43
44
  :param collection: Название коллекции Qdrant.
45
+ :param redis_url: Ссылка на подключение к Redis
44
46
  :param vector_size: Размерность векторного пространства.
45
47
  :param api_key: Ключ для эмбеддера (если требуется).
46
48
  :param short_maxlen: Максимальная длина окна кратковременной памяти.
47
49
  :returns: Экземпляр Memory с инициализированными зависимостями.
48
50
  """
49
- _redis = aioredis.from_url("redis://localhost:6379", decode_responses=True)
51
+ _redis = aioredis.from_url(redis_url, decode_responses=True)
50
52
  short_mem = RedisShortTermMemory(_redis, maxlen=short_maxlen)
51
53
  embedder = EmbeddingProviderGemini(api_key=api_key)
52
54
  adapter = QdrantAdapter(host, port, collection, vector_size)
@@ -1,48 +0,0 @@
1
- from collections import deque
2
- from datetime import datetime
3
-
4
-
5
- class ShortTermMemory:
6
- def __init__(self, maxlen: int = 10):
7
- self._buffer: deque = deque(maxlen=maxlen)
8
-
9
- def add(
10
- self,
11
- codename: str,
12
- user_id: int,
13
- role: str,
14
- text: str,
15
- ts: datetime | None = None,
16
- **extra
17
- ) -> None:
18
- """Добавить сообщение в память (роль, текст, ts - время, по умолчанию now)."""
19
- if ts is None:
20
- ts = datetime.now()
21
- self._buffer.append({"role": role, "text": text, "ts": ts, **extra})
22
-
23
- def window(self, n: int | None = None) -> list[dict]:
24
- """Получить последние n сообщений (по умолчанию все)."""
25
- if n is None or n > len(self._buffer):
26
- return list(self._buffer)
27
- return list(self._buffer)[-n:]
28
-
29
- def clear(self) -> None:
30
- """Очистить память."""
31
- self._buffer.clear()
32
-
33
- def load(self, history: list[dict]) -> None:
34
- """Инициализировать память списком сообщений."""
35
- self._buffer.clear()
36
- for msg in history[-self._buffer.maxlen :]:
37
- self._buffer.append(msg)
38
-
39
- def to_list(self) -> list[dict]:
40
- """Выгрузить всю память как список."""
41
- return list(self._buffer)
42
-
43
- def chunk_for_vector(self, chunk_size: int = 6) -> list[dict] | None:
44
- """Сформировать чанк для векторной БД — N последних сообщений по хронологии."""
45
- if len(self._buffer) < chunk_size:
46
- return None
47
- # Забираем chunk_size старейших, но не очищаем (внешний код решает)
48
- return list(self._buffer)[-chunk_size:]