praisonaiagents 0.0.37__py3-none-any.whl → 0.0.39__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -4,6 +4,7 @@ import uuid
4
4
  import time
5
5
  from .chunking import Chunking
6
6
  from functools import cached_property
7
+ from rich.progress import Progress, SpinnerColumn, TextColumn, BarColumn, TaskProgressColumn
7
8
 
8
9
  logger = logging.getLogger(__name__)
9
10
 
@@ -43,9 +44,28 @@ class CustomMemory:
43
44
  }]
44
45
 
45
46
  class Knowledge:
46
- def __init__(self, config=None):
47
+ def __init__(self, config=None, verbose=None):
47
48
  self._config = config
49
+ self._verbose = verbose or 0
48
50
  os.environ['ANONYMIZED_TELEMETRY'] = 'False' # Chromadb
51
+
52
+ # Configure logging levels based on verbose setting
53
+ if not self._verbose:
54
+ # Suppress logs from all relevant dependencies
55
+ for logger_name in [
56
+ 'mem0',
57
+ 'chromadb',
58
+ 'local_persistent_hnsw',
59
+ '_client',
60
+ 'main'
61
+ ]:
62
+ logging.getLogger(logger_name).setLevel(logging.WARNING)
63
+
64
+ # Disable OpenAI API request logging
65
+ logging.getLogger('openai').setLevel(logging.WARNING)
66
+
67
+ # Set root logger to warning to catch any uncategorized logs
68
+ logging.getLogger().setLevel(logging.WARNING)
49
69
 
50
70
  @cached_property
51
71
  def _deps(self):
@@ -121,14 +141,17 @@ class Knowledge:
121
141
  chunk_overlap=50
122
142
  )
123
143
 
144
+ def _log(self, message, level=2):
145
+ """Internal logging helper"""
146
+ if self._verbose and self._verbose >= level:
147
+ logger.info(message)
148
+
124
149
  def store(self, content, user_id=None, agent_id=None, run_id=None, metadata=None):
125
150
  """Store a memory."""
126
151
  try:
127
- # Process content to match expected format
128
152
  if isinstance(content, str):
129
- # Check if content is actually a file path
130
153
  if any(content.lower().endswith(ext) for ext in ['.pdf', '.doc', '.docx', '.txt']):
131
- logger.info(f"Content appears to be a file path, processing file: {content}")
154
+ self._log(f"Content appears to be a file path, processing file: {content}")
132
155
  return self.add(content, user_id=user_id, agent_id=agent_id, run_id=run_id, metadata=metadata)
133
156
 
134
157
  content = content.strip()
@@ -136,7 +159,7 @@ class Knowledge:
136
159
  return []
137
160
 
138
161
  result = self.memory.add(content, user_id=user_id, agent_id=agent_id, run_id=run_id, metadata=metadata)
139
- logger.info(f"Store operation result: {result}")
162
+ self._log(f"Store operation result: {result}")
140
163
  return result
141
164
  except Exception as e:
142
165
  logger.error(f"Error storing content: {str(e)}")
@@ -210,8 +233,7 @@ class Knowledge:
210
233
 
211
234
  # Check if input is URL
212
235
  if isinstance(input_path, str) and (input_path.startswith('http://') or input_path.startswith('https://')):
213
- logger.info(f"Processing URL: {input_path}")
214
- # TODO: Implement URL handling
236
+ self._log(f"Processing URL: {input_path}")
215
237
  raise NotImplementedError("URL processing not yet implemented")
216
238
 
217
239
  # Check if input ends with any supported extension
@@ -220,7 +242,7 @@ class Knowledge:
220
242
  for ext in (exts if isinstance(exts, tuple) else (exts,)))
221
243
 
222
244
  if is_supported_file:
223
- logger.info(f"Processing as file path: {input_path}")
245
+ self._log(f"Processing as file path: {input_path}")
224
246
  if not os.path.exists(input_path):
225
247
  logger.error(f"File not found: {input_path}")
226
248
  raise FileNotFoundError(f"File not found: {input_path}")
@@ -253,14 +275,26 @@ class Knowledge:
253
275
  # Treat as raw text content only if no file extension
254
276
  memories = [self.normalize_content(input_path)]
255
277
 
256
- # Store memories
278
+ # Create progress display
279
+ progress = Progress(
280
+ SpinnerColumn(),
281
+ TextColumn("[progress.description]{task.description}"),
282
+ BarColumn(),
283
+ TaskProgressColumn(),
284
+ transient=True
285
+ )
286
+
287
+ # Store memories with progress bar
257
288
  all_results = []
258
- for memory in memories:
259
- if memory:
260
- memory_result = self.store(memory, user_id=user_id, agent_id=agent_id,
261
- run_id=run_id, metadata=metadata)
262
- if memory_result:
263
- all_results.extend(memory_result.get('results', []))
289
+ with progress:
290
+ store_task = progress.add_task(f"Adding to Knowledge from {os.path.basename(input_path)}", total=len(memories))
291
+ for memory in memories:
292
+ if memory:
293
+ memory_result = self.store(memory, user_id=user_id, agent_id=agent_id,
294
+ run_id=run_id, metadata=metadata)
295
+ if memory_result:
296
+ all_results.extend(memory_result.get('results', []))
297
+ progress.advance(store_task)
264
298
 
265
299
  return {'results': all_results, 'relations': []}
266
300
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: praisonaiagents
3
- Version: 0.0.37
3
+ Version: 0.0.39
4
4
  Summary: Praison AI agents for completing complex tasks with Self Reflection Agents
5
5
  Author: Mervin Praison
6
6
  Requires-Dist: pydantic
@@ -7,7 +7,7 @@ praisonaiagents/agents/agents.py,sha256=M-nR53A7Qcz_pJ-gyNc4xgM13Nhof7oM-5hXWzr8
7
7
  praisonaiagents/agents/autoagents.py,sha256=bjC2O5oZmoJItJXIMPTWc2lsp_AJC9tMiTQOal2hwPA,13532
8
8
  praisonaiagents/knowledge/__init__.py,sha256=xL1Eh-a3xsHyIcU4foOWF-JdWYIYBALJH9bge0Ujuto,246
9
9
  praisonaiagents/knowledge/chunking.py,sha256=FzoNY0q8MkvG4gADqk4JcRhmH3lcEHbRdonDgitQa30,6624
10
- praisonaiagents/knowledge/knowledge.py,sha256=fnZMGm8AtlKlaIIbHT5xeQz-dfIPsii8koTdrTPl7H8,10985
10
+ praisonaiagents/knowledge/knowledge.py,sha256=dJd8WuFV3w-zWaSAcT21PcXGRIZZc6YxBsJZDfmZNrk,12358
11
11
  praisonaiagents/memory/memory.py,sha256=ZxqSpOUxk9jeTKGW0ZiTifC0uZtym-EZILP3kuOOKkU,35626
12
12
  praisonaiagents/process/__init__.py,sha256=lkYbL7Hn5a0ldvJtkdH23vfIIZLIcanK-65C0MwaorY,52
13
13
  praisonaiagents/process/process.py,sha256=uSudOFI1ZlGM_nbT8qHD4iIP3y5Ygu8V-izLot2te70,26316
@@ -33,7 +33,7 @@ praisonaiagents/tools/wikipedia_tools.py,sha256=pGko-f33wqXgxJTv8db7TbizY5XnzBQR
33
33
  praisonaiagents/tools/xml_tools.py,sha256=iYTMBEk5l3L3ryQ1fkUnNVYK-Nnua2Kx2S0dxNMMs1A,17122
34
34
  praisonaiagents/tools/yaml_tools.py,sha256=uogAZrhXV9O7xvspAtcTfpKSQYL2nlOTvCQXN94-G9A,14215
35
35
  praisonaiagents/tools/yfinance_tools.py,sha256=s2PBj_1v7oQnOobo2fDbQBACEHl61ftG4beG6Z979ZE,8529
36
- praisonaiagents-0.0.37.dist-info/METADATA,sha256=PVUCq8U4iPXxXah6DsUdfak6fXW5HEmQUEOA229MbTk,664
37
- praisonaiagents-0.0.37.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
38
- praisonaiagents-0.0.37.dist-info/top_level.txt,sha256=_HsRddrJ23iDx5TTqVUVvXG2HeHBL5voshncAMDGjtA,16
39
- praisonaiagents-0.0.37.dist-info/RECORD,,
36
+ praisonaiagents-0.0.39.dist-info/METADATA,sha256=nfUgMS-EXpJn1Aee7bNdYcDq_Oxgkcbe-W3DrcCEWLw,664
37
+ praisonaiagents-0.0.39.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
38
+ praisonaiagents-0.0.39.dist-info/top_level.txt,sha256=_HsRddrJ23iDx5TTqVUVvXG2HeHBL5voshncAMDGjtA,16
39
+ praisonaiagents-0.0.39.dist-info/RECORD,,