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.
- praisonaiagents/knowledge/knowledge.py +28 -4
- praisonaiagents/mcp/mcp.py +13 -2
- praisonaiagents/memory/memory.py +19 -6
- {praisonaiagents-0.0.93.dist-info → praisonaiagents-0.0.95.dist-info}/METADATA +1 -1
- {praisonaiagents-0.0.93.dist-info → praisonaiagents-0.0.95.dist-info}/RECORD +7 -7
- {praisonaiagents-0.0.93.dist-info → praisonaiagents-0.0.95.dist-info}/WHEEL +0 -0
- {praisonaiagents-0.0.93.dist-info → praisonaiagents-0.0.95.dist-info}/top_level.txt +0 -0
@@ -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
|
-
|
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."""
|
praisonaiagents/mcp/mcp.py
CHANGED
@@ -299,7 +299,11 @@ class MCP:
|
|
299
299
|
required_params.append(name)
|
300
300
|
|
301
301
|
# Create the function signature
|
302
|
-
|
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
|
-
|
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):
|
praisonaiagents/memory/memory.py
CHANGED
@@ -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
|
-
|
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
|
-
|
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
|
-
|
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 = []
|
@@ -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=
|
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
|
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=
|
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.
|
44
|
-
praisonaiagents-0.0.
|
45
|
-
praisonaiagents-0.0.
|
46
|
-
praisonaiagents-0.0.
|
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,,
|
File without changes
|
File without changes
|