praisonaiagents 0.0.93__py3-none-any.whl → 0.0.95__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.
@@ -101,7 +101,11 @@ class Knowledge:
101
101
  }
102
102
  },
103
103
  "version": "v1.1",
104
- "custom_prompt": "Return {{\"facts\": [text]}} where text is the exact input provided and json response"
104
+ "custom_prompt": "Return {{\"facts\": [text]}} where text is the exact input provided and json response",
105
+ "reranker": {
106
+ "enabled": False,
107
+ "default_rerank": False
108
+ }
105
109
  }
106
110
 
107
111
  # If config is provided, merge it with base config
@@ -129,6 +133,10 @@ class Knowledge:
129
133
  # Merge llm config if provided
130
134
  if "llm" in self._config:
131
135
  base_config["llm"] = self._config["llm"]
136
+
137
+ # Merge reranker config if provided
138
+ if "reranker" in self._config:
139
+ base_config["reranker"].update(self._config["reranker"])
132
140
  return base_config
133
141
 
134
142
  @cached_property
@@ -191,9 +199,25 @@ class Knowledge:
191
199
  """Retrieve a specific memory by ID."""
192
200
  return self.memory.get(memory_id)
193
201
 
194
- def search(self, query, user_id=None, agent_id=None, run_id=None):
195
- """Search for memories related to a query."""
196
- return self.memory.search(query, user_id=user_id, agent_id=agent_id, run_id=run_id)
202
+ def search(self, query, user_id=None, agent_id=None, run_id=None, rerank=None, **kwargs):
203
+ """Search for memories related to a query.
204
+
205
+ Args:
206
+ query: The search query string
207
+ user_id: Optional user ID for user-specific search
208
+ agent_id: Optional agent ID for agent-specific search
209
+ run_id: Optional run ID for run-specific search
210
+ rerank: Whether to use Mem0's advanced reranking. If None, uses config default
211
+ **kwargs: Additional search parameters to pass to Mem0 (keyword_search, filter_memories, etc.)
212
+
213
+ Returns:
214
+ List of search results, reranked if rerank=True
215
+ """
216
+ # Use config default if rerank not explicitly specified
217
+ if rerank is None:
218
+ rerank = self.config.get("reranker", {}).get("default_rerank", False)
219
+
220
+ return self.memory.search(query, user_id=user_id, agent_id=agent_id, run_id=run_id, rerank=rerank, **kwargs)
197
221
 
198
222
  def update(self, memory_id, data):
199
223
  """Update a memory."""
@@ -299,7 +299,11 @@ class MCP:
299
299
  required_params.append(name)
300
300
 
301
301
  # Create the function signature
302
- params = []
302
+ # Separate required and optional parameters to ensure proper ordering
303
+ # (required parameters must come before optional parameters)
304
+ required_param_objects = []
305
+ optional_param_objects = []
306
+
303
307
  for name in param_names:
304
308
  is_required = name in required_params
305
309
  param = inspect.Parameter(
@@ -308,7 +312,14 @@ class MCP:
308
312
  default=inspect.Parameter.empty if is_required else None,
309
313
  annotation=param_annotations.get(name, Any)
310
314
  )
311
- params.append(param)
315
+
316
+ if is_required:
317
+ required_param_objects.append(param)
318
+ else:
319
+ optional_param_objects.append(param)
320
+
321
+ # Combine parameters with required first, then optional
322
+ params = required_param_objects + optional_param_objects
312
323
 
313
324
  # Create function template to be properly decorated
314
325
  def template_function(*args, **kwargs):
@@ -262,13 +262,18 @@ class Memory:
262
262
  query: str,
263
263
  limit: int = 5,
264
264
  min_quality: float = 0.0,
265
- relevance_cutoff: float = 0.0
265
+ relevance_cutoff: float = 0.0,
266
+ rerank: bool = False,
267
+ **kwargs
266
268
  ) -> List[Dict[str, Any]]:
267
269
  """Search short-term memory with optional quality filter"""
268
270
  self._log_verbose(f"Searching short memory for: {query}")
269
271
 
270
272
  if self.use_mem0 and hasattr(self, "mem0_client"):
271
- results = self.mem0_client.search(query=query, limit=limit)
273
+ # Pass rerank and other kwargs to Mem0 search
274
+ search_params = {"query": query, "limit": limit, "rerank": rerank}
275
+ search_params.update(kwargs)
276
+ results = self.mem0_client.search(**search_params)
272
277
  filtered = [r for r in results if r.get("score", 1.0) >= relevance_cutoff]
273
278
  return filtered
274
279
 
@@ -439,7 +444,9 @@ class Memory:
439
444
  query: str,
440
445
  limit: int = 5,
441
446
  relevance_cutoff: float = 0.0,
442
- min_quality: float = 0.0
447
+ min_quality: float = 0.0,
448
+ rerank: bool = False,
449
+ **kwargs
443
450
  ) -> List[Dict[str, Any]]:
444
451
  """Search long-term memory with optional quality filter"""
445
452
  self._log_verbose(f"Searching long memory for: {query}")
@@ -448,7 +455,10 @@ class Memory:
448
455
  found = []
449
456
 
450
457
  if self.use_mem0 and hasattr(self, "mem0_client"):
451
- results = self.mem0_client.search(query=query, limit=limit)
458
+ # Pass rerank and other kwargs to Mem0 search
459
+ search_params = {"query": query, "limit": limit, "rerank": rerank}
460
+ search_params.update(kwargs)
461
+ results = self.mem0_client.search(**search_params)
452
462
  # Filter by quality
453
463
  filtered = [r for r in results if r.get("metadata", {}).get("quality", 0.0) >= min_quality]
454
464
  logger.info(f"Found {len(filtered)} results in Mem0")
@@ -595,12 +605,15 @@ class Memory:
595
605
  else:
596
606
  self.store_long_term(text, metadata=meta)
597
607
 
598
- def search_user_memory(self, user_id: str, query: str, limit: int = 5) -> List[Dict[str, Any]]:
608
+ def search_user_memory(self, user_id: str, query: str, limit: int = 5, rerank: bool = False, **kwargs) -> List[Dict[str, Any]]:
599
609
  """
600
610
  If mem0 is used, pass user_id in. Otherwise fallback to local filter on user in metadata.
601
611
  """
602
612
  if self.use_mem0 and hasattr(self, "mem0_client"):
603
- return self.mem0_client.search(query=query, limit=limit, user_id=user_id)
613
+ # Pass rerank and other kwargs to Mem0 search
614
+ search_params = {"query": query, "limit": limit, "user_id": user_id, "rerank": rerank}
615
+ search_params.update(kwargs)
616
+ return self.mem0_client.search(**search_params)
604
617
  else:
605
618
  hits = self.search_long_term(query, limit=20)
606
619
  filtered = []
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: praisonaiagents
3
- Version: 0.0.93
3
+ Version: 0.0.95
4
4
  Summary: Praison AI agents for completing complex tasks with Self Reflection Agents
5
5
  Author: Mervin Praison
6
6
  Requires-Python: >=3.10
@@ -8,13 +8,13 @@ praisonaiagents/agents/agents.py,sha256=-cWRgok0X_4Mk-L7dW6bFdX7JVpxfe7R6aLmukkt
8
8
  praisonaiagents/agents/autoagents.py,sha256=Lc_b9mO2MeefBrsHkHoqFxEr5iRGrYuzDhslyybXwdw,13649
9
9
  praisonaiagents/knowledge/__init__.py,sha256=xL1Eh-a3xsHyIcU4foOWF-JdWYIYBALJH9bge0Ujuto,246
10
10
  praisonaiagents/knowledge/chunking.py,sha256=G6wyHa7_8V0_7VpnrrUXbEmUmptlT16ISJYaxmkSgmU,7678
11
- praisonaiagents/knowledge/knowledge.py,sha256=Po0JZsgjYJrXdNSggmUGOWidZEF0f8xo4nhsZZfh8tY,13217
11
+ praisonaiagents/knowledge/knowledge.py,sha256=7Qk6qvUanapzdM1B_bik645PcorErKlAvADf5iKXrTE,14289
12
12
  praisonaiagents/llm/__init__.py,sha256=ttPQQJQq6Tah-0updoEXDZFKWtJAM93rBWRoIgxRWO8,689
13
13
  praisonaiagents/llm/llm.py,sha256=9wHmf0aGKf4a7YZ4JONmD7Ela8JBYVrkMFF2ei8Ivpk,93400
14
14
  praisonaiagents/mcp/__init__.py,sha256=ibbqe3_7XB7VrIcUcetkZiUZS1fTVvyMy_AqCSFG8qc,240
15
- praisonaiagents/mcp/mcp.py,sha256=-U6md6zHoJZCWF8XFq921Yy5CcSNaGqvjg3aRT737LM,16765
15
+ praisonaiagents/mcp/mcp.py,sha256=_gfp8hrSVT9aPqEDDfU8MiCdg0-3dVQpEQUE6AbrJlo,17243
16
16
  praisonaiagents/mcp/mcp_sse.py,sha256=DLh3F_aoVRM1X-7hgIOWOw4FQ1nGmn9YNbQTesykzn4,6792
17
- praisonaiagents/memory/memory.py,sha256=I8dOTkrl1i-GgQbDcrFOsSruzJ7MiI6Ys37DK27wrUs,35537
17
+ praisonaiagents/memory/memory.py,sha256=XvX2fohxyyP8RihbbtOZYt0g-bIDEyLwzfNCWV2Ayok,36175
18
18
  praisonaiagents/process/__init__.py,sha256=lkYbL7Hn5a0ldvJtkdH23vfIIZLIcanK-65C0MwaorY,52
19
19
  praisonaiagents/process/process.py,sha256=gxhMXG3s4CzaREyuwE5zxCMx2Wp_b_Wd53tDfkj8Qk8,66567
20
20
  praisonaiagents/task/__init__.py,sha256=VL5hXVmyGjINb34AalxpBMl-YW9m5EDcRkMTKkSSl7c,80
@@ -40,7 +40,7 @@ praisonaiagents/tools/xml_tools.py,sha256=iYTMBEk5l3L3ryQ1fkUnNVYK-Nnua2Kx2S0dxN
40
40
  praisonaiagents/tools/yaml_tools.py,sha256=uogAZrhXV9O7xvspAtcTfpKSQYL2nlOTvCQXN94-G9A,14215
41
41
  praisonaiagents/tools/yfinance_tools.py,sha256=s2PBj_1v7oQnOobo2fDbQBACEHl61ftG4beG6Z979ZE,8529
42
42
  praisonaiagents/tools/train/data/generatecot.py,sha256=H6bNh-E2hqL5MW6kX3hqZ05g9ETKN2-kudSjiuU_SD8,19403
43
- praisonaiagents-0.0.93.dist-info/METADATA,sha256=HlnkZm2D8lKJPxXbT6ODUIbyzhJ1LMArMStjh1vCXlY,1273
44
- praisonaiagents-0.0.93.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
45
- praisonaiagents-0.0.93.dist-info/top_level.txt,sha256=_HsRddrJ23iDx5TTqVUVvXG2HeHBL5voshncAMDGjtA,16
46
- praisonaiagents-0.0.93.dist-info/RECORD,,
43
+ praisonaiagents-0.0.95.dist-info/METADATA,sha256=4ayHtPUlxLVFHqskoWgArmU9tjx6koseZBijBFH3M7c,1273
44
+ praisonaiagents-0.0.95.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
45
+ praisonaiagents-0.0.95.dist-info/top_level.txt,sha256=_HsRddrJ23iDx5TTqVUVvXG2HeHBL5voshncAMDGjtA,16
46
+ praisonaiagents-0.0.95.dist-info/RECORD,,