openvector_dev 0.1.12__py3-none-any.whl → 0.1.14__py3-none-any.whl

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.
lein_vector/__init__.py CHANGED
@@ -3,14 +3,12 @@ from .memory_manager_qdrant import MemoryManagerQdrant
3
3
  from .qdrant_adapter import QdrantAdapter
4
4
  from .redis_short_term import RedisShortTermMemory
5
5
  from .sentence_transformer import EmbeddingProviderGemini as EmbeddingProvider
6
- from .short_term import ShortTermMemory
7
6
 
8
7
  __all__ = [
9
8
  "EmbeddingProvider",
10
9
  "MemoryManagerQdrant",
11
10
  "QdrantAdapter",
12
11
  "RedisShortTermMemory",
13
- "ShortTermMemory",
14
12
  "api",
15
13
  "bases",
16
14
  "schemas",
lein_vector/api/facade.py CHANGED
@@ -1,6 +1,6 @@
1
+ import random
1
2
  from collections.abc import Sequence
2
3
  from datetime import UTC, datetime
3
- from typing import Optional, Any
4
4
  from uuid import UUID, uuid4
5
5
 
6
6
  import redis.asyncio as aioredis
@@ -24,6 +24,10 @@ class Memory:
24
24
  self._msg_no: dict[int, int] = {}
25
25
  self.merge_n = merge_n
26
26
 
27
+ self._gift_base = 0.02
28
+ self._gift_growth = 1.15
29
+ self._gift_fail: dict[tuple[int, str], int] = {}
30
+
27
31
  self.score_threshold = 0.72
28
32
 
29
33
  @classmethod
@@ -119,7 +123,9 @@ class Memory:
119
123
  await self.long.upsert_chunk_with_vector(new_chunk, vector)
120
124
 
121
125
  if curr_no % (block_size * self.merge_n) == 0:
122
- merged_text, used_ids = await self.long.merge_old_chunks(user_id=user_id, bot=bot, chunk_type="type0", n=self.merge_n)
126
+ merged_text, used_ids = await self.long.merge_old_chunks(
127
+ user_id=user_id, bot=bot, chunk_type="type0", n=self.merge_n
128
+ )
123
129
  return merged_text, used_ids
124
130
  else:
125
131
  return None, None
@@ -159,19 +165,35 @@ class Memory:
159
165
  return self._to_openai(data)
160
166
 
161
167
  async def add_short_msg(
162
- self, user_id: int, bot: str, text: str, *, role: str = "user"
163
- ):
168
+ self,
169
+ user_id: int,
170
+ bot: str,
171
+ text: str,
172
+ *,
173
+ role: str = "user",
174
+ ) -> bool:
164
175
  """
165
- Добавляет в "короткую память" новое сообщение
166
- :param user_id: Идентификатор пользователя
167
- :param bot: Кодовое имя бота
168
- :param text: Сообщение для записи
169
- :param role: Роль в диалоге
170
- :type role: str = "user"
171
- :return:
176
+ Записывает сообщение и возвращает флаг `is_gift_hint`.
177
+ Шанс = min(1, p0 * growth**fails).
172
178
  """
173
179
  await self.short.add(bot=bot, user_id=user_id, role=role, text=text)
174
180
 
181
+ if role != "user":
182
+ return False
183
+
184
+ key = (user_id, bot)
185
+ fails = self._gift_fail.get(key, 0)
186
+
187
+ p0, g = self._gift_base, self._gift_growth
188
+ p = min(1.0, p0 * (g**fails))
189
+
190
+ if random.random() < p:
191
+ self._gift_fail[key] = 0
192
+ return True
193
+ else:
194
+ self._gift_fail[key] = fails + 1
195
+ return False
196
+
175
197
  async def add_summary_chunk(
176
198
  self,
177
199
  user_id: int,
@@ -1,6 +1,6 @@
1
1
  import asyncio
2
2
  from datetime import UTC, datetime
3
- from typing import Any, Tuple, List
3
+ from typing import Any
4
4
  from uuid import UUID
5
5
 
6
6
  from lein_vector.bases.memory_manager_abc import MemoryManagerABC
@@ -95,7 +95,7 @@ class MemoryManagerQdrant(MemoryManagerABC):
95
95
  bot: str,
96
96
  chunk_type: str,
97
97
  n: int = 5,
98
- ) -> Tuple[str | None, List[UUID]]:
98
+ ) -> tuple[str | None, list[UUID]]:
99
99
  """
100
100
  Собрать n старых чанков и вернуть:
101
101
  • merged_text — склеенные сообщения c ролями,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: openvector_dev
3
- Version: 0.1.12
3
+ Version: 0.1.14
4
4
  Summary:
5
5
  Author: p00ler
6
6
  Author-email: liveitspain@gmail.com
@@ -1,16 +1,16 @@
1
- lein_vector/__init__.py,sha256=ieXy65X4eVzUtSHNvlh00s4aMwKReafNni4s2q68z3Q,496
1
+ lein_vector/__init__.py,sha256=48LqJbNqEEpbTFDkXA4BoF7KZ7z8FAKdj9NJ_raKJxk,431
2
2
  lein_vector/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- lein_vector/api/facade.py,sha256=s8tHif2zUJuS3eqGQQ14Zq-6sHjzW73_2V6P1qFne8M,9871
3
+ lein_vector/api/facade.py,sha256=PpzGUEiCOoApLWtXVB4RTYV9I16ajU_R6_-24kJt6Ug,10237
4
4
  lein_vector/bases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  lein_vector/bases/embeding_provider_abc.py,sha256=WBpVC6ra-SYqhJeZs8R8U679wfGebXgwOOVPIii-IvY,265
6
6
  lein_vector/bases/memory_manager_abc.py,sha256=NE13Lz-3aX3RjkRhsd5FsezPNk0xju34fFpO3Fa1n9A,1755
7
- lein_vector/memory_manager_qdrant.py,sha256=jzb04gnESVRH62QSYhnwsl-HpS6Kci721rPA3_6LSDQ,6382
7
+ lein_vector/memory_manager_qdrant.py,sha256=K41sbRYz168-yYO9cb9DOl7XWc7nGfWGFvcEz0iu3KE,6369
8
8
  lein_vector/memory_manager_ram.py,sha256=lUATu6U-cZuRHnR6U1L8aJQB8FNK0Wi40vXsZ5fjDgI,6002
9
9
  lein_vector/qdrant_adapter.py,sha256=CJsGvlDdTf4gGCFZIRzfYDeOT_7pzw8pf4VT_QIYDWg,4466
10
10
  lein_vector/redis_short_term.py,sha256=uCcncjgXAlNAY46b3_Pjvrn_G0NEI16kRRR9hxayzak,3155
11
11
  lein_vector/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
12
  lein_vector/schemas/chunk.py,sha256=qq2J7UM94AhKXKg_gnErac5GQF9DCoaEeEHyxZg_xuk,1202
13
13
  lein_vector/sentence_transformer.py,sha256=SjjIa43Y7JxcU9VkpT2Ml-CVXb8tqmrbMutZN6O_I6s,1853
14
- openvector_dev-0.1.12.dist-info/METADATA,sha256=dNLKK0aun5DoVYmLFUOFne1WSw8PFjKbhm7W0gttB7I,3168
15
- openvector_dev-0.1.12.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
16
- openvector_dev-0.1.12.dist-info/RECORD,,
14
+ openvector_dev-0.1.14.dist-info/METADATA,sha256=oKKk2vWWDCgqs9-MGwgGhsKcrOtMbNRCgPNk02bKIpA,3168
15
+ openvector_dev-0.1.14.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
16
+ openvector_dev-0.1.14.dist-info/RECORD,,