praisonaiagents 0.0.118__tar.gz → 0.0.119__tar.gz
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-0.0.118 → praisonaiagents-0.0.119}/PKG-INFO +1 -1
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/llm/llm.py +45 -62
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents.egg-info/PKG-INFO +1 -1
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/pyproject.toml +1 -1
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/README.md +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/__init__.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/agent/__init__.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/agent/agent.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/agent/handoff.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/agent/image_agent.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/agents/__init__.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/agents/agents.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/agents/autoagents.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/approval.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/guardrails/__init__.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/guardrails/guardrail_result.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/guardrails/llm_guardrail.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/knowledge/__init__.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/knowledge/chunking.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/knowledge/knowledge.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/llm/__init__.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/llm/openai_client.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/main.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/mcp/__init__.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/mcp/mcp.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/mcp/mcp_sse.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/memory/__init__.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/memory/memory.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/process/__init__.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/process/process.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/session.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/task/__init__.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/task/task.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/telemetry/__init__.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/telemetry/integration.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/telemetry/telemetry.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/tools/README.md +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/tools/__init__.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/tools/arxiv_tools.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/tools/calculator_tools.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/tools/csv_tools.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/tools/duckdb_tools.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/tools/duckduckgo_tools.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/tools/excel_tools.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/tools/file_tools.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/tools/json_tools.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/tools/newspaper_tools.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/tools/pandas_tools.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/tools/python_tools.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/tools/searxng_tools.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/tools/shell_tools.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/tools/spider_tools.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/tools/test.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/tools/tools.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/tools/train/data/generatecot.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/tools/wikipedia_tools.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/tools/xml_tools.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/tools/yaml_tools.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/tools/yfinance_tools.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents.egg-info/SOURCES.txt +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents.egg-info/dependency_links.txt +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents.egg-info/requires.txt +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents.egg-info/top_level.txt +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/setup.cfg +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/tests/test-graph-memory.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/tests/test.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/tests/test_handoff_compatibility.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/tests/test_ollama_async_fix.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/tests/test_ollama_fix.py +0 -0
- {praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/tests/test_posthog_fixed.py +0 -0
@@ -229,6 +229,39 @@ class LLM:
|
|
229
229
|
|
230
230
|
return any(endpoint in base_url or endpoint in api_base for endpoint in ollama_endpoints)
|
231
231
|
|
232
|
+
def _process_stream_delta(self, delta, response_text: str, tool_calls: List[Dict], formatted_tools: Optional[List] = None) -> tuple:
|
233
|
+
"""
|
234
|
+
Process a streaming delta chunk to extract content and tool calls.
|
235
|
+
|
236
|
+
Args:
|
237
|
+
delta: The delta object from a streaming chunk
|
238
|
+
response_text: The accumulated response text so far
|
239
|
+
tool_calls: The accumulated tool calls list so far
|
240
|
+
formatted_tools: Optional list of formatted tools for tool call support check
|
241
|
+
|
242
|
+
Returns:
|
243
|
+
tuple: (updated_response_text, updated_tool_calls)
|
244
|
+
"""
|
245
|
+
# Process content
|
246
|
+
if delta.content:
|
247
|
+
response_text += delta.content
|
248
|
+
|
249
|
+
# Capture tool calls from streaming chunks if provider supports it
|
250
|
+
if formatted_tools and self._supports_streaming_tools() and hasattr(delta, 'tool_calls') and delta.tool_calls:
|
251
|
+
for tc in delta.tool_calls:
|
252
|
+
if tc.index >= len(tool_calls):
|
253
|
+
tool_calls.append({
|
254
|
+
"id": tc.id,
|
255
|
+
"type": "function",
|
256
|
+
"function": {"name": "", "arguments": ""}
|
257
|
+
})
|
258
|
+
if tc.function.name:
|
259
|
+
tool_calls[tc.index]["function"]["name"] = tc.function.name
|
260
|
+
if tc.function.arguments:
|
261
|
+
tool_calls[tc.index]["function"]["arguments"] += tc.function.arguments
|
262
|
+
|
263
|
+
return response_text, tool_calls
|
264
|
+
|
232
265
|
def _parse_tool_call_arguments(self, tool_call: Dict, is_ollama: bool = False) -> tuple:
|
233
266
|
"""
|
234
267
|
Safely parse tool call arguments with proper error handling
|
@@ -651,23 +684,11 @@ class LLM:
|
|
651
684
|
):
|
652
685
|
if chunk and chunk.choices and chunk.choices[0].delta:
|
653
686
|
delta = chunk.choices[0].delta
|
687
|
+
response_text, tool_calls = self._process_stream_delta(
|
688
|
+
delta, response_text, tool_calls, formatted_tools
|
689
|
+
)
|
654
690
|
if delta.content:
|
655
|
-
response_text += delta.content
|
656
691
|
live.update(display_generating(response_text, current_time))
|
657
|
-
|
658
|
-
# Capture tool calls from streaming chunks if provider supports it
|
659
|
-
if formatted_tools and self._supports_streaming_tools() and hasattr(delta, 'tool_calls') and delta.tool_calls:
|
660
|
-
for tc in delta.tool_calls:
|
661
|
-
if tc.index >= len(tool_calls):
|
662
|
-
tool_calls.append({
|
663
|
-
"id": tc.id,
|
664
|
-
"type": "function",
|
665
|
-
"function": {"name": "", "arguments": ""}
|
666
|
-
})
|
667
|
-
if tc.function.name:
|
668
|
-
tool_calls[tc.index]["function"]["name"] = tc.function.name
|
669
|
-
if tc.function.arguments:
|
670
|
-
tool_calls[tc.index]["function"]["arguments"] += tc.function.arguments
|
671
692
|
else:
|
672
693
|
# Non-verbose streaming
|
673
694
|
for chunk in litellm.completion(
|
@@ -681,22 +702,9 @@ class LLM:
|
|
681
702
|
):
|
682
703
|
if chunk and chunk.choices and chunk.choices[0].delta:
|
683
704
|
delta = chunk.choices[0].delta
|
684
|
-
|
685
|
-
response_text
|
686
|
-
|
687
|
-
# Capture tool calls from streaming chunks if provider supports it
|
688
|
-
if formatted_tools and self._supports_streaming_tools() and hasattr(delta, 'tool_calls') and delta.tool_calls:
|
689
|
-
for tc in delta.tool_calls:
|
690
|
-
if tc.index >= len(tool_calls):
|
691
|
-
tool_calls.append({
|
692
|
-
"id": tc.id,
|
693
|
-
"type": "function",
|
694
|
-
"function": {"name": "", "arguments": ""}
|
695
|
-
})
|
696
|
-
if tc.function.name:
|
697
|
-
tool_calls[tc.index]["function"]["name"] = tc.function.name
|
698
|
-
if tc.function.arguments:
|
699
|
-
tool_calls[tc.index]["function"]["arguments"] += tc.function.arguments
|
705
|
+
response_text, tool_calls = self._process_stream_delta(
|
706
|
+
delta, response_text, tool_calls, formatted_tools
|
707
|
+
)
|
700
708
|
|
701
709
|
response_text = response_text.strip()
|
702
710
|
|
@@ -1297,24 +1305,12 @@ Output MUST be JSON with 'reflection' and 'satisfactory'.
|
|
1297
1305
|
):
|
1298
1306
|
if chunk and chunk.choices and chunk.choices[0].delta:
|
1299
1307
|
delta = chunk.choices[0].delta
|
1308
|
+
response_text, tool_calls = self._process_stream_delta(
|
1309
|
+
delta, response_text, tool_calls, formatted_tools
|
1310
|
+
)
|
1300
1311
|
if delta.content:
|
1301
|
-
response_text += delta.content
|
1302
1312
|
print("\033[K", end="\r")
|
1303
1313
|
print(f"Generating... {time.time() - start_time:.1f}s", end="\r")
|
1304
|
-
|
1305
|
-
# Capture tool calls from streaming chunks if provider supports it
|
1306
|
-
if formatted_tools and self._supports_streaming_tools() and hasattr(delta, 'tool_calls') and delta.tool_calls:
|
1307
|
-
for tc in delta.tool_calls:
|
1308
|
-
if tc.index >= len(tool_calls):
|
1309
|
-
tool_calls.append({
|
1310
|
-
"id": tc.id,
|
1311
|
-
"type": "function",
|
1312
|
-
"function": {"name": "", "arguments": ""}
|
1313
|
-
})
|
1314
|
-
if tc.function.name:
|
1315
|
-
tool_calls[tc.index]["function"]["name"] = tc.function.name
|
1316
|
-
if tc.function.arguments:
|
1317
|
-
tool_calls[tc.index]["function"]["arguments"] += tc.function.arguments
|
1318
1314
|
else:
|
1319
1315
|
# Non-verbose streaming
|
1320
1316
|
async for chunk in await litellm.acompletion(
|
@@ -1328,22 +1324,9 @@ Output MUST be JSON with 'reflection' and 'satisfactory'.
|
|
1328
1324
|
):
|
1329
1325
|
if chunk and chunk.choices and chunk.choices[0].delta:
|
1330
1326
|
delta = chunk.choices[0].delta
|
1331
|
-
|
1332
|
-
response_text
|
1333
|
-
|
1334
|
-
# Capture tool calls from streaming chunks if provider supports it
|
1335
|
-
if formatted_tools and self._supports_streaming_tools() and hasattr(delta, 'tool_calls') and delta.tool_calls:
|
1336
|
-
for tc in delta.tool_calls:
|
1337
|
-
if tc.index >= len(tool_calls):
|
1338
|
-
tool_calls.append({
|
1339
|
-
"id": tc.id,
|
1340
|
-
"type": "function",
|
1341
|
-
"function": {"name": "", "arguments": ""}
|
1342
|
-
})
|
1343
|
-
if tc.function.name:
|
1344
|
-
tool_calls[tc.index]["function"]["name"] = tc.function.name
|
1345
|
-
if tc.function.arguments:
|
1346
|
-
tool_calls[tc.index]["function"]["arguments"] += tc.function.arguments
|
1327
|
+
response_text, tool_calls = self._process_stream_delta(
|
1328
|
+
delta, response_text, tool_calls, formatted_tools
|
1329
|
+
)
|
1347
1330
|
|
1348
1331
|
response_text = response_text.strip()
|
1349
1332
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/guardrails/guardrail_result.py
RENAMED
File without changes
|
{praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/guardrails/llm_guardrail.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/telemetry/integration.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/tools/calculator_tools.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/tools/duckduckgo_tools.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/tools/newspaper_tools.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/tools/train/data/generatecot.py
RENAMED
File without changes
|
{praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents/tools/wikipedia_tools.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{praisonaiagents-0.0.118 → praisonaiagents-0.0.119}/praisonaiagents.egg-info/dependency_links.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|