openvector_dev 0.1.6__py3-none-any.whl → 0.1.7.1__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/api/facade.py CHANGED
@@ -24,6 +24,8 @@ class Memory:
24
24
  self._msg_no: dict[int, int] = {}
25
25
  self.merge_n = merge_n
26
26
 
27
+ self.score_threshold = 0.72
28
+
27
29
  @classmethod
28
30
  async def from_qdrant(
29
31
  cls,
@@ -52,70 +54,6 @@ class Memory:
52
54
  long_mem = MemoryManagerQdrant(adapter, embedder)
53
55
  return cls(short_mem, long_mem, embedder)
54
56
 
55
- async def step_user(
56
- self, *, bot: str, user_id: int, user_msg: str, topk: int = 3, history_n: int = 20
57
- ):
58
- """
59
- :param bot: Идентификатор бота.
60
- :param user_id: Идентификатор пользователя.
61
- :param user_msg: Текст сообщения пользователя.
62
- :param topk: Количество релевантных чанков из долговременной памяти.
63
- :param history_n: Размер окна кратковременной памяти.
64
- :returns: Словарь с short_term и long_term сообщениями.
65
- """
66
- warnings.warn(
67
- "Заменили на низкоуровневые методы",
68
- DeprecationWarning,
69
- stacklevel=2
70
- )
71
- key = (user_id, bot)
72
- curr_no = self._msg_no.get(key, 0) + 1
73
- self._msg_no[key] = curr_no
74
- await self.short.add(
75
- bot=bot,
76
- user_id=user_id,
77
- role="user",
78
- text=user_msg,
79
- extra={"msg_no": curr_no},
80
- )
81
- embedding = await self.embed.get_embedding(user_msg)
82
- long_memories = await self.long.retrieve_by_embedding(
83
- user_id=user_id,
84
- embedding=embedding,
85
- topk=topk,
86
- filter_={"bot": bot},
87
- score_threshold=0.7
88
- )
89
- short_ctx = await self.short.window(user_id, history_n)
90
- return {"short_term": short_ctx, "long_term": long_memories}
91
-
92
- async def step_user_oai(
93
- self,
94
- user_id: int,
95
- user_msg: str,
96
- bot: str,
97
- *,
98
- topk: int = 3,
99
- history_n: int = 20,
100
- ) -> dict:
101
- """
102
- :param user_id: Идентификатор пользователя.
103
- :param user_msg: Текст сообщения пользователя.
104
- :param bot: Идентификатор бота.
105
- :param topk: Количество релевантных чанков из долговременной памяти.
106
- :param history_n: Размер окна кратковременной памяти.
107
- :returns: Данные short_term и long_term в формате OpenAI-совместимого вывода.
108
- """
109
- warnings.warn(
110
- "Заменили на низкоуровневые методы",
111
- DeprecationWarning,
112
- stacklevel=2
113
- )
114
- data = await self.step_user(user_id, bot, user_msg, topk=topk, history_n=history_n)
115
- data["short_term"] = self._to_openai(data["short_term"])
116
- data["long_term"] = self._chunk_texts(data["long_term"])
117
- return data
118
-
119
57
  @staticmethod
120
58
  def _to_openai(msgs: list[dict]) -> list[dict]:
121
59
  """
@@ -193,8 +131,13 @@ class Memory:
193
131
  """
194
132
  # wtf: Добавить фильтр только саммари
195
133
  search_terms = [await self.embed.get_embedding(term) for term in search_terms]
196
- return await self.long.retrieve_by_embeddings(user_id, search_terms, topk,
197
- bot=bot, score_threshold=0.72, filter_={"chunk_type": "type1"})
134
+ return await self.long.retrieve_by_embeddings(
135
+ user_id=user_id,
136
+ bot=bot,
137
+ embeddings=search_terms,
138
+ score_threshold=0.72,
139
+ filter_={"chunk_type": "type1"},
140
+ )
198
141
 
199
142
  async def get_short_memories(self, user_id: int, bot: str, n_memories: int = 20) -> list:
200
143
  """
@@ -207,33 +150,21 @@ class Memory:
207
150
  data = await self.short.window(user_id, bot, n_memories)
208
151
  return self._to_openai(data)
209
152
 
210
- async def _get_long_term(
211
- self, user_id: int, embedding: list[float], topk: int = 3
212
- ) -> list:
213
- """
214
- :param user_id: Идентификатор пользователя.
215
- :param embedding: Вектор эмбеддинга для поиска.
216
- :param topk: Количество возвращаемых чанков.
217
- :returns: Список чанков.
218
- """
219
- return await self.long.retrieve_by_embedding(user_id, embedding, topk)
220
-
221
- async def _add_to_short(self, role: str, text: str) -> None:
153
+ async def add_short_msg(self, user_id: int, bot: str, text: str, *, role: str = "user"):
222
154
  """
223
- :param role: Роль сообщения.
224
- :param text: Текст сообщения.
225
- """
226
- await self.short.add(role, text)
227
-
228
- async def _add_to_long(self, user_id: int, chunk: Chunk) -> None:
229
- """
230
- :param user_id: Идентификатор пользователя.
231
- :param chunk: Экземпляр Chunk для сохранения.
155
+ Добавляет в "короткую память" новое сообщение
156
+ :param user_id: Идентификатор пользователя
157
+ :param bot: Кодовое имя бота
158
+ :param text: Сообщение для записи
159
+ :param role: Роль в диалоге
160
+ :type role: str = "user"
161
+ :return:
232
162
  """
233
- await self.long.upsert_chunk(user_id, chunk)
163
+ await self.short.add(bot=bot, user_id=user_id, role=role, text=text)
234
164
 
235
165
  async def delete_memory(self, user_id: int) -> None:
236
166
  """
167
+ Удаляет
237
168
  :param user_id: Идентификатор пользователя.
238
169
  """
239
170
  await self.long.delete_all(user_id)
@@ -52,10 +52,10 @@ class MemoryManagerQdrant(MemoryManagerABC):
52
52
 
53
53
  async def retrieve_by_embeddings(
54
54
  self,
55
+ bot: str,
55
56
  user_id: int,
56
57
  embeddings: list[list[float]],
57
58
  *,
58
- bot: str,
59
59
  topk: int = 3,
60
60
  filter_: dict[str, Any] | None = None,
61
61
  score_threshold: float | None = None,
@@ -22,11 +22,10 @@ class EmbeddingProviderGemini(EmbeddingProviderABC):
22
22
  async def get_embedding(self, text: str) -> list[float]:
23
23
  # В Gemini SDK обычно нет async, значит — обёртка через run_in_executor:
24
24
  import asyncio
25
-
25
+ if not isinstance(text, str):
26
+ return
26
27
  loop = asyncio.get_running_loop()
27
- # SDK call внутри executor
28
28
  embedding = await loop.run_in_executor(None, lambda: self._genai_embed(text))
29
- # Ответ — dict с 'embedding' или 'values'
30
29
  return embedding.embeddings[0].values
31
30
 
32
31
  async def get_embeddings(self, texts: list[str]) -> list[list[float]]:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: openvector_dev
3
- Version: 0.1.6
3
+ Version: 0.1.7.1
4
4
  Summary:
5
5
  Author: p00ler
6
6
  Author-email: liveitspain@gmail.com
@@ -1,17 +1,17 @@
1
1
  lein_vector/__init__.py,sha256=ieXy65X4eVzUtSHNvlh00s4aMwKReafNni4s2q68z3Q,496
2
2
  lein_vector/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- lein_vector/api/facade.py,sha256=YHBClaBpPjBuR-lxeJ-BSbDZOsXaG4Pw3wV9FckWWfY,11045
3
+ lein_vector/api/facade.py,sha256=URxGEad8QrhYY6QJTrz552mk_9z8TWi7RB1veykyD-4,7886
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=pWuIw_wYlvUlt40jbiE92lWzdYaowZKg3XK0Mq0tQrw,1687
7
- lein_vector/memory_manager_qdrant.py,sha256=gbOyXl3bm3H5EfvStOC6n4sWD85i8zWe97iKp6AvPDw,6175
7
+ lein_vector/memory_manager_qdrant.py,sha256=DFhvtpDl3OxLSpCQiNXnKVSoqQ3475cSDcfE5wF8Njw,6175
8
8
  lein_vector/memory_manager_ram.py,sha256=lUATu6U-cZuRHnR6U1L8aJQB8FNK0Wi40vXsZ5fjDgI,6002
9
9
  lein_vector/qdrant_adapter.py,sha256=uPhYAp0KmYQhY3DF29JMO1JTbM__xDWGlnZZPor3VKI,4193
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=FSUwaFUSZk2ptoxupsdIfj5HYAMnHnu3eBfNpXCUMpM,1195
13
- lein_vector/sentence_transformer.py,sha256=ep6Y9qu8O4_qK4q14BPNxtSe0gBi-mH04xfy1-dhlUE,1898
13
+ lein_vector/sentence_transformer.py,sha256=gbWtkT01QFFA0IR_Ta-xsfBfb6owDzGnZDKY1g9fvBQ,1851
14
14
  lein_vector/short_term.py,sha256=KFot9r26d9TZYLscVT42V0NwufIQUkx-hftOe2p7qLU,1933
15
- openvector_dev-0.1.6.dist-info/METADATA,sha256=alAGaEp-xEOGjej2VH3f9FaxxWkLOaCRxaHFe5gyMMo,3167
16
- openvector_dev-0.1.6.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
17
- openvector_dev-0.1.6.dist-info/RECORD,,
15
+ openvector_dev-0.1.7.1.dist-info/METADATA,sha256=KE8ReRI_WlvHVGKcpAz0grpFK4H4s8SOAAygsVH4jCY,3169
16
+ openvector_dev-0.1.7.1.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
17
+ openvector_dev-0.1.7.1.dist-info/RECORD,,