swarms 7.6.9__py3-none-any.whl → 7.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.
- swarms/prompts/paper_idea_agent.py +31 -0
- swarms/structs/agent.py +166 -116
- swarms/structs/aop.py +557 -0
- swarms/structs/conversation.py +21 -0
- swarms/telemetry/main.py +124 -37
- swarms/tools/mcp_client.py +90 -0
- swarms/utils/history_output_formatter.py +29 -5
- swarms/utils/litellm_wrapper.py +26 -10
- {swarms-7.6.9.dist-info → swarms-7.7.1.dist-info}/METADATA +1 -1
- {swarms-7.6.9.dist-info → swarms-7.7.1.dist-info}/RECORD +13 -10
- {swarms-7.6.9.dist-info → swarms-7.7.1.dist-info}/LICENSE +0 -0
- {swarms-7.6.9.dist-info → swarms-7.7.1.dist-info}/WHEEL +0 -0
- {swarms-7.6.9.dist-info → swarms-7.7.1.dist-info}/entry_points.txt +0 -0
swarms/telemetry/main.py
CHANGED
@@ -1,15 +1,25 @@
|
|
1
|
+
# Add these imports at the top
|
2
|
+
import asyncio
|
3
|
+
|
4
|
+
|
1
5
|
import datetime
|
2
6
|
import hashlib
|
3
7
|
import platform
|
4
8
|
import socket
|
5
9
|
import subprocess
|
6
10
|
import uuid
|
11
|
+
from concurrent.futures import ThreadPoolExecutor
|
12
|
+
from functools import lru_cache
|
13
|
+
from threading import Lock
|
7
14
|
from typing import Dict
|
8
15
|
|
16
|
+
import aiohttp
|
9
17
|
import pkg_resources
|
10
18
|
import psutil
|
11
|
-
import requests
|
12
19
|
import toml
|
20
|
+
from requests import Session
|
21
|
+
from requests.adapters import HTTPAdapter
|
22
|
+
from urllib3.util.retry import Retry
|
13
23
|
|
14
24
|
|
15
25
|
# Helper functions
|
@@ -248,58 +258,135 @@ def capture_system_data() -> Dict[str, str]:
|
|
248
258
|
"architecture": platform.architecture()[0],
|
249
259
|
}
|
250
260
|
|
251
|
-
# Get external IP address
|
252
|
-
try:
|
253
|
-
system_data["external_ip"] = requests.get(
|
254
|
-
"https://api.ipify.org"
|
255
|
-
).text
|
256
|
-
except Exception:
|
257
|
-
system_data["external_ip"] = "N/A"
|
258
|
-
|
259
261
|
return system_data
|
260
262
|
except Exception as e:
|
261
263
|
# logger.error("Failed to capture system data: {}", e)
|
262
264
|
print(f"Failed to capture system data: {e}")
|
263
265
|
|
264
266
|
|
265
|
-
|
266
|
-
|
267
|
-
|
267
|
+
# Global variables
|
268
|
+
_session = None
|
269
|
+
_session_lock = Lock()
|
270
|
+
_executor = ThreadPoolExecutor(max_workers=10)
|
271
|
+
_aiohttp_session = None
|
272
|
+
|
273
|
+
|
274
|
+
def get_session() -> Session:
|
275
|
+
"""Thread-safe session getter with optimized connection pooling"""
|
276
|
+
global _session
|
277
|
+
if _session is None:
|
278
|
+
with _session_lock:
|
279
|
+
if _session is None: # Double-check pattern
|
280
|
+
_session = Session()
|
281
|
+
adapter = HTTPAdapter(
|
282
|
+
pool_connections=1000, # Increased pool size
|
283
|
+
pool_maxsize=1000, # Increased max size
|
284
|
+
max_retries=Retry(
|
285
|
+
total=3,
|
286
|
+
backoff_factor=0.1,
|
287
|
+
status_forcelist=[500, 502, 503, 504],
|
288
|
+
),
|
289
|
+
pool_block=False, # Non-blocking pool
|
290
|
+
)
|
291
|
+
_session.mount("http://", adapter)
|
292
|
+
_session.mount("https://", adapter)
|
293
|
+
_session.headers.update(
|
294
|
+
{
|
295
|
+
"Content-Type": "application/json",
|
296
|
+
"Authorization": "Bearer sk-33979fd9a4e8e6b670090e4900a33dbe7452a15ccc705745f4eca2a70c88ea24",
|
297
|
+
"Connection": "keep-alive", # Enable keep-alive
|
298
|
+
}
|
299
|
+
)
|
300
|
+
return _session
|
268
301
|
|
269
|
-
Args:
|
270
|
-
data_dict (dict): The dictionary containing the agent data to be logged.
|
271
302
|
|
272
|
-
|
273
|
-
|
274
|
-
"""
|
303
|
+
@lru_cache(maxsize=2048, typed=True)
|
304
|
+
def get_user_device_data_cached():
|
305
|
+
"""Cached version with increased cache size"""
|
306
|
+
return get_user_device_data()
|
307
|
+
|
308
|
+
|
309
|
+
async def get_aiohttp_session():
|
310
|
+
"""Get or create aiohttp session for async requests"""
|
311
|
+
global _aiohttp_session
|
312
|
+
if _aiohttp_session is None or _aiohttp_session.closed:
|
313
|
+
timeout = aiohttp.ClientTimeout(total=10)
|
314
|
+
connector = aiohttp.TCPConnector(
|
315
|
+
limit=1000, # Connection limit
|
316
|
+
ttl_dns_cache=300, # DNS cache TTL
|
317
|
+
use_dns_cache=True, # Enable DNS caching
|
318
|
+
keepalive_timeout=60, # Keep-alive timeout
|
319
|
+
)
|
320
|
+
_aiohttp_session = aiohttp.ClientSession(
|
321
|
+
timeout=timeout,
|
322
|
+
connector=connector,
|
323
|
+
headers={
|
324
|
+
"Content-Type": "application/json",
|
325
|
+
"Authorization": "Bearer sk-33979fd9a4e8e6b670090e4900a33dbe7452a15ccc705745f4eca2a70c88ea24",
|
326
|
+
},
|
327
|
+
)
|
328
|
+
return _aiohttp_session
|
329
|
+
|
330
|
+
|
331
|
+
async def log_agent_data_async(data_dict: dict):
|
332
|
+
"""Asynchronous version of log_agent_data"""
|
275
333
|
if not data_dict:
|
276
|
-
return None
|
334
|
+
return None
|
277
335
|
|
278
336
|
url = "https://swarms.world/api/get-agents/log-agents"
|
279
|
-
|
280
|
-
"
|
281
|
-
"
|
337
|
+
payload = {
|
338
|
+
"data": data_dict,
|
339
|
+
"system_data": get_user_device_data_cached(),
|
340
|
+
"timestamp": datetime.datetime.now(
|
341
|
+
datetime.timezone.utc
|
342
|
+
).isoformat(),
|
282
343
|
}
|
283
344
|
|
284
|
-
|
345
|
+
session = await get_aiohttp_session()
|
346
|
+
try:
|
347
|
+
async with session.post(url, json=payload) as response:
|
348
|
+
if response.status == 200:
|
349
|
+
return await response.json()
|
350
|
+
except Exception:
|
351
|
+
return None
|
352
|
+
|
353
|
+
|
354
|
+
def log_agent_data(data_dict: dict):
|
355
|
+
"""
|
356
|
+
Enhanced log_agent_data with both sync and async capabilities
|
357
|
+
"""
|
358
|
+
if not data_dict:
|
359
|
+
return None
|
360
|
+
|
361
|
+
# If running in an event loop, use async version
|
362
|
+
try:
|
363
|
+
loop = asyncio.get_event_loop()
|
364
|
+
if loop.is_running():
|
365
|
+
return asyncio.create_task(
|
366
|
+
log_agent_data_async(data_dict)
|
367
|
+
)
|
368
|
+
except RuntimeError:
|
369
|
+
pass
|
370
|
+
|
371
|
+
# Fallback to optimized sync version
|
372
|
+
url = "https://swarms.world/api/get-agents/log-agents"
|
285
373
|
payload = {
|
286
374
|
"data": data_dict,
|
287
|
-
"system_data":
|
288
|
-
"timestamp": datetime.datetime.now(
|
375
|
+
"system_data": get_user_device_data_cached(),
|
376
|
+
"timestamp": datetime.datetime.now(
|
377
|
+
datetime.timezone.utc
|
378
|
+
).isoformat(),
|
289
379
|
}
|
290
380
|
|
291
381
|
try:
|
292
|
-
|
293
|
-
|
382
|
+
session = get_session()
|
383
|
+
response = session.post(
|
384
|
+
url,
|
385
|
+
json=payload,
|
386
|
+
timeout=10,
|
387
|
+
stream=False, # Disable streaming for faster response
|
294
388
|
)
|
295
|
-
if (
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
response.json()
|
300
|
-
) # Parse and return the JSON response
|
301
|
-
except (
|
302
|
-
requests.exceptions.RequestException,
|
303
|
-
requests.exceptions.JSONDecodeError,
|
304
|
-
):
|
305
|
-
return None # Return None if anything goes wrong
|
389
|
+
if response.ok and response.text.strip():
|
390
|
+
return response.json()
|
391
|
+
except Exception:
|
392
|
+
return None
|
@@ -0,0 +1,90 @@
|
|
1
|
+
import asyncio
|
2
|
+
from typing import Literal, Dict, Any, Union
|
3
|
+
from fastmcp import Client
|
4
|
+
from swarms.utils.any_to_str import any_to_str
|
5
|
+
from swarms.utils.str_to_dict import str_to_dict
|
6
|
+
|
7
|
+
|
8
|
+
def parse_agent_output(
|
9
|
+
dictionary: Union[str, Dict[Any, Any]]
|
10
|
+
) -> tuple[str, Dict[Any, Any]]:
|
11
|
+
if isinstance(dictionary, str):
|
12
|
+
dictionary = str_to_dict(dictionary)
|
13
|
+
|
14
|
+
elif not isinstance(dictionary, dict):
|
15
|
+
raise ValueError("Invalid dictionary")
|
16
|
+
|
17
|
+
# Handle OpenAI function call format
|
18
|
+
if "function_call" in dictionary:
|
19
|
+
name = dictionary["function_call"]["name"]
|
20
|
+
# arguments is a JSON string, so we need to parse it
|
21
|
+
params = str_to_dict(dictionary["function_call"]["arguments"])
|
22
|
+
return name, params
|
23
|
+
|
24
|
+
# Handle OpenAI tool calls format
|
25
|
+
if "tool_calls" in dictionary:
|
26
|
+
# Get the first tool call (or you could handle multiple if needed)
|
27
|
+
tool_call = dictionary["tool_calls"][0]
|
28
|
+
name = tool_call["function"]["name"]
|
29
|
+
params = str_to_dict(tool_call["function"]["arguments"])
|
30
|
+
return name, params
|
31
|
+
|
32
|
+
# Handle regular dictionary format
|
33
|
+
if "name" in dictionary:
|
34
|
+
name = dictionary["name"]
|
35
|
+
params = dictionary.get("arguments", {})
|
36
|
+
return name, params
|
37
|
+
|
38
|
+
raise ValueError("Invalid function call format")
|
39
|
+
|
40
|
+
|
41
|
+
async def _execute_mcp_tool(
|
42
|
+
url: str,
|
43
|
+
method: Literal["stdio", "sse"] = "sse",
|
44
|
+
parameters: Dict[Any, Any] = None,
|
45
|
+
output_type: Literal["str", "dict"] = "str",
|
46
|
+
*args,
|
47
|
+
**kwargs,
|
48
|
+
) -> Dict[Any, Any]:
|
49
|
+
|
50
|
+
if "sse" or "stdio" not in url:
|
51
|
+
raise ValueError("Invalid URL")
|
52
|
+
|
53
|
+
url = f"{url}/{method}"
|
54
|
+
|
55
|
+
name, params = parse_agent_output(parameters)
|
56
|
+
|
57
|
+
if output_type == "str":
|
58
|
+
async with Client(url, *args, **kwargs) as client:
|
59
|
+
out = await client.call_tool(
|
60
|
+
name=name,
|
61
|
+
arguments=params,
|
62
|
+
)
|
63
|
+
return any_to_str(out)
|
64
|
+
elif output_type == "dict":
|
65
|
+
async with Client(url, *args, **kwargs) as client:
|
66
|
+
out = await client.call_tool(
|
67
|
+
name=name,
|
68
|
+
arguments=params,
|
69
|
+
)
|
70
|
+
return out
|
71
|
+
else:
|
72
|
+
raise ValueError(f"Invalid output type: {output_type}")
|
73
|
+
|
74
|
+
|
75
|
+
def execute_mcp_tool(
|
76
|
+
url: str,
|
77
|
+
tool_name: str = None,
|
78
|
+
method: Literal["stdio", "sse"] = "sse",
|
79
|
+
parameters: Dict[Any, Any] = None,
|
80
|
+
output_type: Literal["str", "dict"] = "str",
|
81
|
+
) -> Dict[Any, Any]:
|
82
|
+
return asyncio.run(
|
83
|
+
_execute_mcp_tool(
|
84
|
+
url=url,
|
85
|
+
tool_name=tool_name,
|
86
|
+
method=method,
|
87
|
+
parameters=parameters,
|
88
|
+
output_type=output_type,
|
89
|
+
)
|
90
|
+
)
|
@@ -1,17 +1,35 @@
|
|
1
1
|
import yaml
|
2
2
|
from swarms.structs.conversation import Conversation
|
3
3
|
|
4
|
+
from typing import Literal, Union, List, Dict, Any
|
5
|
+
|
6
|
+
HistoryOutputType = Literal[
|
7
|
+
"list",
|
8
|
+
"dict",
|
9
|
+
"dictionary",
|
10
|
+
"string",
|
11
|
+
"str",
|
12
|
+
"final",
|
13
|
+
"last",
|
14
|
+
"json",
|
15
|
+
"all",
|
16
|
+
"yaml",
|
17
|
+
# "dict-final",
|
18
|
+
"dict-all-except-first",
|
19
|
+
"str-all-except-first",
|
20
|
+
]
|
21
|
+
|
4
22
|
|
5
23
|
def history_output_formatter(
|
6
|
-
conversation: Conversation, type:
|
7
|
-
):
|
24
|
+
conversation: Conversation, type: HistoryOutputType = "list"
|
25
|
+
) -> Union[List[Dict[str, Any]], Dict[str, Any], str]:
|
8
26
|
if type == "list":
|
9
27
|
return conversation.return_messages_as_list()
|
10
|
-
elif type
|
28
|
+
elif type in ["dict", "dictionary"]:
|
11
29
|
return conversation.to_dict()
|
12
|
-
elif type
|
30
|
+
elif type in ["string", "str"]:
|
13
31
|
return conversation.get_str()
|
14
|
-
elif type
|
32
|
+
elif type in ["final", "last"]:
|
15
33
|
return conversation.get_final_message_content()
|
16
34
|
elif type == "json":
|
17
35
|
return conversation.to_json()
|
@@ -19,5 +37,11 @@ def history_output_formatter(
|
|
19
37
|
return conversation.get_str()
|
20
38
|
elif type == "yaml":
|
21
39
|
return yaml.safe_dump(conversation.to_dict(), sort_keys=False)
|
40
|
+
# elif type == "dict-final":
|
41
|
+
# return conversation.to_dict()
|
42
|
+
elif type == "dict-all-except-first":
|
43
|
+
return conversation.return_all_except_first()
|
44
|
+
elif type == "str-all-except-first":
|
45
|
+
return conversation.return_all_except_first_string()
|
22
46
|
else:
|
23
47
|
raise ValueError(f"Invalid type: {type}")
|
swarms/utils/litellm_wrapper.py
CHANGED
@@ -254,16 +254,32 @@ class LiteLLM:
|
|
254
254
|
self.messages
|
255
255
|
) # Use modality-processed messages
|
256
256
|
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
257
|
+
if (
|
258
|
+
self.model_name == "openai/o4-mini"
|
259
|
+
or self.model_name == "openai/o3-2025-04-16"
|
260
|
+
):
|
261
|
+
# Prepare common completion parameters
|
262
|
+
completion_params = {
|
263
|
+
"model": self.model_name,
|
264
|
+
"messages": messages,
|
265
|
+
"stream": self.stream,
|
266
|
+
# "temperature": self.temperature,
|
267
|
+
"max_completion_tokens": self.max_tokens,
|
268
|
+
"caching": self.caching,
|
269
|
+
**kwargs,
|
270
|
+
}
|
271
|
+
|
272
|
+
else:
|
273
|
+
# Prepare common completion parameters
|
274
|
+
completion_params = {
|
275
|
+
"model": self.model_name,
|
276
|
+
"messages": messages,
|
277
|
+
"stream": self.stream,
|
278
|
+
"temperature": self.temperature,
|
279
|
+
"max_tokens": self.max_tokens,
|
280
|
+
"caching": self.caching,
|
281
|
+
**kwargs,
|
282
|
+
}
|
267
283
|
|
268
284
|
# Handle tool-based completion
|
269
285
|
if self.tools_list_dictionary is not None:
|
@@ -51,6 +51,7 @@ swarms/prompts/multi_modal_autonomous_instruction_prompt.py,sha256=SHfaKs5Hj9sV4
|
|
51
51
|
swarms/prompts/multi_modal_prompts.py,sha256=yvE9_RAFTKU1QhN0rNOelrO7jn5fjDARpcKussbBc2c,3511
|
52
52
|
swarms/prompts/multi_modal_visual_prompts.py,sha256=Apv5vqTzB7nBj7nnoMPO0fog3PL9KLrteEjYM_SjaEE,3225
|
53
53
|
swarms/prompts/operations_agent_prompt.py,sha256=7ioHxH-xMVqo7vy-wuwHvs9OXQjx-sDQbHFgExZVobI,3454
|
54
|
+
swarms/prompts/paper_idea_agent.py,sha256=I__fp0Rbpa5yr09C9UWPDZI7_jVRpejt9jrUSqcZHEw,1107
|
54
55
|
swarms/prompts/personal_stylist.py,sha256=_14TSdWdHs6WCnBSK5--1QXcHv5qK466O6A781jif7c,2149
|
55
56
|
swarms/prompts/product_agent_prompt.py,sha256=RN24ZeXA-QEVYWFoobJRtpXzQJ0shPhcUpCbNLkArTc,8333
|
56
57
|
swarms/prompts/programming.py,sha256=Bg_PV5CexJFLqadJjjliU6t89q8IeQTEp2ZyEF9kO0g,10144
|
@@ -82,12 +83,13 @@ swarms/schemas/agent_input_schema.py,sha256=qhPyThMx2on91yG9mzNdP_08GpMh1IRDHDwF
|
|
82
83
|
swarms/schemas/agent_step_schemas.py,sha256=a14gb58vR0xOwB_fwSJQbN6yb9HddEaT30E6hUrzEQA,2573
|
83
84
|
swarms/schemas/base_schemas.py,sha256=UvBLVWg2qRen4tK5GJz50v42SiX95EQ5qK7hfyAHTEU,3267
|
84
85
|
swarms/structs/__init__.py,sha256=gzD4B2KvKsS_WU7OOdJUlOwjAefTdhBPnBgsVz3RYCY,4247
|
85
|
-
swarms/structs/agent.py,sha256=
|
86
|
+
swarms/structs/agent.py,sha256=Qzg2eWwJ5lHgYYGpjeBVV3E2EazTfAWH3Owbi-OHOHo,98868
|
86
87
|
swarms/structs/agent_builder.py,sha256=tYNpfO4_8cgfMHfgA5DAOWffHnt70p6CLt59esqfVCY,12133
|
87
88
|
swarms/structs/agent_registry.py,sha256=il507cO1NF-d4ChyANVLuWrN8bXsEAi8_7bLJ_sTU6A,12112
|
88
89
|
swarms/structs/agent_roles.py,sha256=8XEw6RjOOZelaZaWt4gXaYQm5WMLEhSO7W6Z8sQjmFg,582
|
89
90
|
swarms/structs/agent_router.py,sha256=YZw5AaK2yTvxkOA7ouED_4MoYgn0XZggvo1wrglp-4E,13017
|
90
91
|
swarms/structs/agents_available.py,sha256=SedxDim-0IWgGsNwJZxRIUMfKyAFFXdvXSYeBNu0zGw,2804
|
92
|
+
swarms/structs/aop.py,sha256=hmyxK0W_I1baW3EQ5U27uJjkDqNT4PHfIbWl8bvYW1I,17154
|
91
93
|
swarms/structs/async_workflow.py,sha256=7YWsLPyGY-1-mMxoIXWQ0FnYH6F227nxsS9PFAJoF9Q,26214
|
92
94
|
swarms/structs/auto_swarm_builder.py,sha256=vPM5Kq59D_FvuWJB8hxgHuEvTXsxDxovlBnHGVQsM4o,10938
|
93
95
|
swarms/structs/base_structure.py,sha256=GDu4QJQQmhU7IyuFJHIh9UVThACCva-L7uoMbVD9l4s,15901
|
@@ -95,7 +97,7 @@ swarms/structs/base_swarm.py,sha256=LSGJDPJdyUCcK6698mNtjxoC1OU3s_J2NxC2k_ccGUs,
|
|
95
97
|
swarms/structs/base_workflow.py,sha256=DTfFwX3AdFYxACDYwUDqhsbcDZnITlg5TeEYyxmJBCc,11414
|
96
98
|
swarms/structs/concat.py,sha256=utezSxNyh1mIwXgdf8-dJ803NDPyEy79WE8zJHuooGk,732
|
97
99
|
swarms/structs/concurrent_workflow.py,sha256=d1_slbALpxrdEGzZffUSAcEbONW0kc7fyTpVZTBmzi4,15517
|
98
|
-
swarms/structs/conversation.py,sha256=
|
100
|
+
swarms/structs/conversation.py,sha256=696T1QHhaZozLleQFZyeAHEcecdJpNPRB0aCkUdh6OI,18995
|
99
101
|
swarms/structs/csv_to_agent.py,sha256=ug9JqQFPguXeU9JQpSUXuVtOpHYdJhlpKJUJBovo694,9443
|
100
102
|
swarms/structs/de_hallucination_swarm.py,sha256=9cC0rSSXGwYu6SRDwpeMbCcQ40C1WI1RE9SNapKRLOQ,10309
|
101
103
|
swarms/structs/deep_research_swarm.py,sha256=axhzSK43-TViQJntt2Gz2AUhAc6zoBPzj9weRmQ8yE8,16733
|
@@ -141,7 +143,7 @@ swarms/structs/utils.py,sha256=Mo6wHQYOB8baWZUKnAJN5Dsgubpo81umNwJIEDitb2A,1873
|
|
141
143
|
swarms/structs/various_alt_swarms.py,sha256=qdBuOF31UjatlKRu-9bxwyRQzIjohRhTv_63YoUeYEY,27866
|
142
144
|
swarms/telemetry/__init__.py,sha256=yibtkHEbQRPUv6ir1FhDHlAO_3nwKJPQH4LjzBC2AuQ,661
|
143
145
|
swarms/telemetry/bootup.py,sha256=0leCNCy5rhzL19EsOsqHWSDI85KVcWO6_5hLDS0h4sY,1155
|
144
|
-
swarms/telemetry/main.py,sha256=
|
146
|
+
swarms/telemetry/main.py,sha256=ADJ1daQQKZpMwa9y1sAPFLrzwoY1raPgeb6p8-_3jFo,11205
|
145
147
|
swarms/tools/__init__.py,sha256=pqIMcRQr4gtoNdbyI1N5k4upkYSBMxACJbxfB9yrV4c,1493
|
146
148
|
swarms/tools/base_tool.py,sha256=BiBCFHin8AyZO3FYOGA-n3M2o-F36xUeIBUiybnZYjI,15179
|
147
149
|
swarms/tools/cohere_func_call_schema.py,sha256=XJ6_yBMXCrV9KjN7v9Bk1iFj69TRlGIWYKsUTA1oGiQ,600
|
@@ -151,6 +153,7 @@ swarms/tools/function_util.py,sha256=DAnAPO0Ik__TAqL7IJzFmkukHnhpsW_QtALl3yj837g
|
|
151
153
|
swarms/tools/json_former.py,sha256=4ugLQ_EZpghhuhFsVKsy-ehin9K64pqVE2gLU7BTO_M,14376
|
152
154
|
swarms/tools/json_utils.py,sha256=WKMZjcJ0Vt6lgIjiTBenslcfjgRSLX4UWs4uDkKFMQI,1316
|
153
155
|
swarms/tools/logits_processor.py,sha256=NifZZ5w9yemWGJAJ5nHFrphtZVX1XlyesgvYZTxK1GM,2965
|
156
|
+
swarms/tools/mcp_client.py,sha256=tXlZsh0KKyYw0RIsazlxZ5XsloY569sgQZUlsUdx2bM,2683
|
154
157
|
swarms/tools/mcp_integration.py,sha256=rUXxC9NvXQ3V4B7Lt1AoI4ZYiCl2-T4FW3_689HTRZk,12839
|
155
158
|
swarms/tools/openai_func_calling_schema_pydantic.py,sha256=6BAH9kuaVTvJIbjgSSJ5XvHhWvWszPxgarkfUuE5Ads,978
|
156
159
|
swarms/tools/openai_tool_creator_decorator.py,sha256=SYZjHnARjWvnH9cBdj7Kc_Yy1muvNxMT3RQz8KkA2SE,2578
|
@@ -169,9 +172,9 @@ swarms/utils/disable_logging.py,sha256=KKPKQVfQqLPFgj03uveOoyeHOTlfEJt-yfLc3SA53
|
|
169
172
|
swarms/utils/file_processing.py,sha256=QjQCIPTcwicQlfy656BXBYpIzMR0s2343E7ftnok5Uo,4865
|
170
173
|
swarms/utils/formatter.py,sha256=YykmcuWXkxvQ7a2Vq6OzWuqUDiIwro6VrtSt4ITbXcU,4194
|
171
174
|
swarms/utils/function_caller_model.py,sha256=ZfgCMzOizNnuZipYLclTziECNHszH9p8RQcUq7VNr4Q,4156
|
172
|
-
swarms/utils/history_output_formatter.py,sha256=
|
175
|
+
swarms/utils/history_output_formatter.py,sha256=5Gc-FLUDTkTYfzZVbfq4EL-wAZqPN0mD3K3h62CB71k,1379
|
173
176
|
swarms/utils/litellm_tokenizer.py,sha256=0AAj4NffBe2eHii_3_5SpQAhSiBbunJR8MzaBTIm7hg,484
|
174
|
-
swarms/utils/litellm_wrapper.py,sha256=
|
177
|
+
swarms/utils/litellm_wrapper.py,sha256=xdRRj2MvO-4RtfD1SHOCKoidX1UTKRj__I7CvWxQV3o,15145
|
175
178
|
swarms/utils/loguru_logger.py,sha256=hIoSK3NHLpe7eAmjHRURrEYzNXYC2gbR7_Vv63Yaydk,685
|
176
179
|
swarms/utils/markdown_message.py,sha256=RThHNnMf6ZLTlYK4vKn3yuewChaxWAYAWb0Xm_pTyIU,652
|
177
180
|
swarms/utils/parse_code.py,sha256=XFOLymbdP3HzMZuqsj7pwUyisvUmTm0ev9iThR_ambI,1987
|
@@ -181,8 +184,8 @@ swarms/utils/try_except_wrapper.py,sha256=appEGu9Afy3TmdkNNXUgQ9yU9lj2j0uNkIoW0J
|
|
181
184
|
swarms/utils/visualizer.py,sha256=0ylohEk62MAS6iPRaDOV03m9qo2k5J56tWlKJk_46p4,16927
|
182
185
|
swarms/utils/vllm_wrapper.py,sha256=OIGnU9Vf81vE_hul1FK-xEhChFK8fxqZX6-fhQeW22c,4987
|
183
186
|
swarms/utils/wrapper_clusterop.py,sha256=PMSCVM7ZT1vgj1D_MYAe835RR3SMLYxA-si2JS02yNQ,4220
|
184
|
-
swarms-7.
|
185
|
-
swarms-7.
|
186
|
-
swarms-7.
|
187
|
-
swarms-7.
|
188
|
-
swarms-7.
|
187
|
+
swarms-7.7.1.dist-info/LICENSE,sha256=jwRtEmTWjLrEsvFB6QFdYs2cEeZPRMdj-UMOFkPF8_0,11363
|
188
|
+
swarms-7.7.1.dist-info/METADATA,sha256=_rVOKIek6LO--J4jqcewJ0aRKD2t63raUHk8C9v9GXk,104909
|
189
|
+
swarms-7.7.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
190
|
+
swarms-7.7.1.dist-info/entry_points.txt,sha256=2K0rTtfO1X1WaO-waJlXIKw5Voa_EpAL_yU0HXE2Jgc,47
|
191
|
+
swarms-7.7.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|