swarms 7.9.7__py3-none-any.whl → 7.9.9__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/agents/consistency_agent.py +246 -64
- swarms/agents/reasoning_agents.py +136 -35
- swarms/prompts/collaborative_prompts.py +92 -53
- swarms/prompts/hiearchical_system_prompt.py +159 -0
- swarms/structs/__init__.py +3 -0
- swarms/structs/agent.py +59 -235
- swarms/structs/conversation.py +48 -38
- swarms/structs/hiearchical_swarm.py +553 -523
- swarms/structs/ma_utils.py +34 -14
- swarms/utils/lite_utils.py +5 -0
- swarms/utils/litellm_wrapper.py +154 -82
- {swarms-7.9.7.dist-info → swarms-7.9.9.dist-info}/METADATA +139 -28
- {swarms-7.9.7.dist-info → swarms-7.9.9.dist-info}/RECORD +16 -14
- {swarms-7.9.7.dist-info → swarms-7.9.9.dist-info}/LICENSE +0 -0
- {swarms-7.9.7.dist-info → swarms-7.9.9.dist-info}/WHEEL +0 -0
- {swarms-7.9.7.dist-info → swarms-7.9.9.dist-info}/entry_points.txt +0 -0
swarms/structs/ma_utils.py
CHANGED
@@ -45,19 +45,36 @@ def list_all_agents(
|
|
45
45
|
Description: Second agent description...
|
46
46
|
"""
|
47
47
|
|
48
|
-
# Compile
|
48
|
+
# Compile and describe all agents in the team
|
49
49
|
total_agents = len(agents)
|
50
50
|
|
51
|
-
all_agents =
|
52
|
-
|
53
|
-
f"Team
|
54
|
-
|
51
|
+
all_agents = ""
|
52
|
+
if name:
|
53
|
+
all_agents += f"Team Name: {name}\n"
|
54
|
+
if description:
|
55
|
+
all_agents += f"Team Description: {description}\n"
|
56
|
+
all_agents += "These are the agents in your team. Each agent has a specific role and expertise to contribute to the team's objectives.\n"
|
55
57
|
all_agents += f"Total Agents: {total_agents}\n\n"
|
56
|
-
all_agents += "
|
57
|
-
all_agents += "
|
58
|
-
all_agents += "
|
59
|
-
|
60
|
-
|
58
|
+
all_agents += "Below is a summary of your team members and their primary responsibilities:\n"
|
59
|
+
all_agents += "| Agent Name | Description |\n"
|
60
|
+
all_agents += "|------------|-------------|\n"
|
61
|
+
for agent in agents:
|
62
|
+
agent_name = getattr(
|
63
|
+
agent,
|
64
|
+
"agent_name",
|
65
|
+
getattr(agent, "name", "Unknown Agent"),
|
66
|
+
)
|
67
|
+
# Try to get a meaningful description or fallback to system prompt
|
68
|
+
agent_desc = getattr(agent, "description", None)
|
69
|
+
if not agent_desc:
|
70
|
+
agent_desc = getattr(agent, "system_prompt", "")
|
71
|
+
if len(agent_desc) > 50:
|
72
|
+
agent_desc = agent_desc[:50] + "..."
|
73
|
+
all_agents += f"| {agent_name} | {agent_desc} |\n"
|
74
|
+
|
75
|
+
all_agents += (
|
76
|
+
"\nEach agent is designed to handle tasks within their area of expertise. "
|
77
|
+
"Collaborate effectively by assigning tasks according to these roles."
|
61
78
|
)
|
62
79
|
|
63
80
|
if add_to_conversation:
|
@@ -67,13 +84,16 @@ def list_all_agents(
|
|
67
84
|
content=all_agents,
|
68
85
|
)
|
69
86
|
|
70
|
-
|
71
|
-
|
72
|
-
|
87
|
+
return None
|
88
|
+
|
89
|
+
elif add_collaboration_prompt:
|
90
|
+
all_agents += get_multi_agent_collaboration_prompt_one(
|
91
|
+
agents=all_agents
|
73
92
|
)
|
74
|
-
else:
|
75
93
|
return all_agents
|
76
94
|
|
95
|
+
return all_agents
|
96
|
+
|
77
97
|
|
78
98
|
models = [
|
79
99
|
"anthropic/claude-3-sonnet-20240229",
|
swarms/utils/litellm_wrapper.py
CHANGED
@@ -212,44 +212,62 @@ class LiteLLM:
|
|
212
212
|
Process vision input specifically for Anthropic models.
|
213
213
|
Handles Anthropic's specific image format requirements.
|
214
214
|
"""
|
215
|
-
#
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
]
|
232
|
-
if mime_type not in supported_formats:
|
233
|
-
mime_type = (
|
234
|
-
"image/jpeg" # fallback to jpeg if unsupported
|
215
|
+
# Check if we can use direct URL
|
216
|
+
if self._should_use_direct_url(image):
|
217
|
+
# Use direct URL without base64 conversion
|
218
|
+
messages.append(
|
219
|
+
{
|
220
|
+
"role": "user",
|
221
|
+
"content": [
|
222
|
+
{"type": "text", "text": task},
|
223
|
+
{
|
224
|
+
"type": "image_url",
|
225
|
+
"image_url": {
|
226
|
+
"url": image,
|
227
|
+
},
|
228
|
+
},
|
229
|
+
],
|
230
|
+
}
|
235
231
|
)
|
232
|
+
else:
|
233
|
+
# Fall back to base64 conversion for local files
|
234
|
+
image_url = get_image_base64(image)
|
235
|
+
|
236
|
+
# Extract mime type from the data URI or use default
|
237
|
+
mime_type = "image/jpeg" # default
|
238
|
+
if "data:" in image_url and ";base64," in image_url:
|
239
|
+
mime_type = image_url.split(";base64,")[0].split(
|
240
|
+
"data:"
|
241
|
+
)[1]
|
242
|
+
|
243
|
+
# Ensure mime type is one of the supported formats
|
244
|
+
supported_formats = [
|
245
|
+
"image/jpeg",
|
246
|
+
"image/png",
|
247
|
+
"image/gif",
|
248
|
+
"image/webp",
|
249
|
+
]
|
250
|
+
if mime_type not in supported_formats:
|
251
|
+
mime_type = (
|
252
|
+
"image/jpeg" # fallback to jpeg if unsupported
|
253
|
+
)
|
236
254
|
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
255
|
+
# Construct Anthropic vision message with base64
|
256
|
+
messages.append(
|
257
|
+
{
|
258
|
+
"role": "user",
|
259
|
+
"content": [
|
260
|
+
{"type": "text", "text": task},
|
261
|
+
{
|
262
|
+
"type": "image_url",
|
263
|
+
"image_url": {
|
264
|
+
"url": image_url,
|
265
|
+
"format": mime_type,
|
266
|
+
},
|
248
267
|
},
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
)
|
268
|
+
],
|
269
|
+
}
|
270
|
+
)
|
253
271
|
|
254
272
|
return messages
|
255
273
|
|
@@ -260,21 +278,31 @@ class LiteLLM:
|
|
260
278
|
Process vision input specifically for OpenAI models.
|
261
279
|
Handles OpenAI's specific image format requirements.
|
262
280
|
"""
|
263
|
-
#
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
281
|
+
# Check if we can use direct URL
|
282
|
+
if self._should_use_direct_url(image):
|
283
|
+
# Use direct URL without base64 conversion
|
284
|
+
vision_message = {
|
285
|
+
"type": "image_url",
|
286
|
+
"image_url": {"url": image},
|
287
|
+
}
|
288
|
+
else:
|
289
|
+
# Fall back to base64 conversion for local files
|
290
|
+
image_url = get_image_base64(image)
|
291
|
+
|
292
|
+
# Prepare vision message with base64
|
293
|
+
vision_message = {
|
294
|
+
"type": "image_url",
|
295
|
+
"image_url": {"url": image_url},
|
296
|
+
}
|
297
|
+
|
298
|
+
# Add format for specific models
|
299
|
+
extension = Path(image).suffix.lower()
|
300
|
+
mime_type = (
|
301
|
+
f"image/{extension[1:]}"
|
302
|
+
if extension
|
303
|
+
else "image/jpeg"
|
304
|
+
)
|
305
|
+
vision_message["image_url"]["format"] = mime_type
|
278
306
|
|
279
307
|
# Append vision message
|
280
308
|
messages.append(
|
@@ -289,44 +317,79 @@ class LiteLLM:
|
|
289
317
|
|
290
318
|
return messages
|
291
319
|
|
320
|
+
def _should_use_direct_url(self, image: str) -> bool:
|
321
|
+
"""
|
322
|
+
Determine if we should use direct URL passing instead of base64 conversion.
|
323
|
+
|
324
|
+
Args:
|
325
|
+
image (str): The image source (URL or file path)
|
326
|
+
|
327
|
+
Returns:
|
328
|
+
bool: True if we should use direct URL, False if we need base64 conversion
|
329
|
+
"""
|
330
|
+
# Only use direct URL for HTTP/HTTPS URLs
|
331
|
+
if not image.startswith(("http://", "https://")):
|
332
|
+
return False
|
333
|
+
|
334
|
+
# Check for local/custom models that might not support direct URLs
|
335
|
+
model_lower = self.model_name.lower()
|
336
|
+
local_indicators = [
|
337
|
+
"localhost",
|
338
|
+
"127.0.0.1",
|
339
|
+
"local",
|
340
|
+
"custom",
|
341
|
+
"ollama",
|
342
|
+
"llama-cpp",
|
343
|
+
]
|
344
|
+
|
345
|
+
is_local = any(
|
346
|
+
indicator in model_lower for indicator in local_indicators
|
347
|
+
) or (
|
348
|
+
self.base_url is not None
|
349
|
+
and any(
|
350
|
+
indicator in self.base_url.lower()
|
351
|
+
for indicator in local_indicators
|
352
|
+
)
|
353
|
+
)
|
354
|
+
|
355
|
+
if is_local:
|
356
|
+
return False
|
357
|
+
|
358
|
+
# Use LiteLLM's supports_vision to check if model supports vision and direct URLs
|
359
|
+
try:
|
360
|
+
return supports_vision(model=self.model_name)
|
361
|
+
except Exception:
|
362
|
+
return False
|
363
|
+
|
292
364
|
def vision_processing(
|
293
365
|
self, task: str, image: str, messages: Optional[list] = None
|
294
366
|
):
|
295
367
|
"""
|
296
368
|
Process the image for the given task.
|
297
369
|
Handles different image formats and model requirements.
|
370
|
+
|
371
|
+
This method now intelligently chooses between:
|
372
|
+
1. Direct URL passing (when model supports it and image is a URL)
|
373
|
+
2. Base64 conversion (for local files or unsupported models)
|
374
|
+
|
375
|
+
This approach reduces server load and improves performance by avoiding
|
376
|
+
unnecessary image downloads and base64 conversions when possible.
|
298
377
|
"""
|
299
|
-
|
300
|
-
|
301
|
-
#
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
# extension = Path(image).suffix.lower()
|
315
|
-
# mime_type = f"image/{extension[1:]}" if extension else "image/jpeg"
|
316
|
-
# vision_message["image_url"]["format"] = mime_type
|
317
|
-
|
318
|
-
# # Append vision message
|
319
|
-
# messages.append(
|
320
|
-
# {
|
321
|
-
# "role": "user",
|
322
|
-
# "content": [
|
323
|
-
# {"type": "text", "text": task},
|
324
|
-
# vision_message,
|
325
|
-
# ],
|
326
|
-
# }
|
327
|
-
# )
|
328
|
-
|
329
|
-
# return messages
|
378
|
+
logger.info(f"Processing image for model: {self.model_name}")
|
379
|
+
|
380
|
+
# Log whether we're using direct URL or base64 conversion
|
381
|
+
if self._should_use_direct_url(image):
|
382
|
+
logger.info(
|
383
|
+
f"Using direct URL passing for image: {image[:100]}..."
|
384
|
+
)
|
385
|
+
else:
|
386
|
+
if image.startswith(("http://", "https://")):
|
387
|
+
logger.info(
|
388
|
+
"Converting URL image to base64 (model doesn't support direct URLs)"
|
389
|
+
)
|
390
|
+
else:
|
391
|
+
logger.info("Converting local file to base64")
|
392
|
+
|
330
393
|
if (
|
331
394
|
"anthropic" in self.model_name.lower()
|
332
395
|
or "claude" in self.model_name.lower()
|
@@ -370,7 +433,16 @@ class LiteLLM:
|
|
370
433
|
|
371
434
|
def check_if_model_supports_vision(self, img: str = None):
|
372
435
|
"""
|
373
|
-
Check if the model supports vision.
|
436
|
+
Check if the model supports vision capabilities.
|
437
|
+
|
438
|
+
This method uses LiteLLM's built-in supports_vision function to verify
|
439
|
+
that the model can handle image inputs before processing.
|
440
|
+
|
441
|
+
Args:
|
442
|
+
img (str, optional): Image path/URL to validate against model capabilities
|
443
|
+
|
444
|
+
Raises:
|
445
|
+
ValueError: If the model doesn't support vision and an image is provided
|
374
446
|
"""
|
375
447
|
if img is not None:
|
376
448
|
out = supports_vision(model=self.model_name)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: swarms
|
3
|
-
Version: 7.9.
|
3
|
+
Version: 7.9.9
|
4
4
|
Summary: Swarms - TGSC
|
5
5
|
License: MIT
|
6
6
|
Keywords: artificial intelligence,deep learning,optimizers,Prompt Engineering,swarms,agents,llms,transformers,multi-agent,swarms of agents,Enterprise-Grade Agents,Production-Grade Agents,Agents,Multi-Grade-Agents,Swarms,Transformers,LLMs,Prompt Engineering,Agents,Generative Agents,Generative AI,Agent Marketplace,Agent Store,quant,finance,algorithmic trading,portfolio optimization,risk management,financial modeling,machine learning for finance,natural language processing for finance
|
@@ -268,6 +268,7 @@ print(final_post)
|
|
268
268
|
| **[GroupChat](https://docs.swarms.world/en/latest/swarms/structs/group_chat/)** | Agents collaborate and make decisions through a conversational interface. | Real-time collaborative decision-making, negotiations, brainstorming. |
|
269
269
|
| **[ForestSwarm](https://docs.swarms.world/en/latest/swarms/structs/forest_swarm/)** | Dynamically selects the most suitable agent or tree of agents for a given task. | Task routing, optimizing for expertise, complex decision-making trees. |
|
270
270
|
| **[SpreadSheetSwarm](https://docs.swarms.world/en/latest/swarms/structs/spreadsheet_swarm/)** | Manages thousands of agents concurrently, tracking tasks and outputs in a structured format. | Massive-scale parallel operations, large-scale data generation and analysis. |
|
271
|
+
| **[HierarchicalSwarm](https://docs.swarms.world/en/latest/swarms/structs/hiearchical_swarm/)** | Orchestrates agents with a director that creates plans and distributes tasks to specialized worker agents. | Complex project management, team coordination, hierarchical decision-making with feedback loops. |
|
271
272
|
| **[SwarmRouter](https://docs.swarms.world/en/latest/swarms/structs/swarm_router/)** | Universal orchestrator that provides a single interface to run any type of swarm with dynamic selection. | Simplifying complex workflows, switching between swarm strategies, unified multi-agent management. |
|
272
273
|
|
273
274
|
-----
|
@@ -513,6 +514,66 @@ for message in conversation_history:
|
|
513
514
|
print(f"[{message['agent_name']}]: {message['content']}")
|
514
515
|
```
|
515
516
|
|
517
|
+
----
|
518
|
+
|
519
|
+
### HierarchicalSwarm
|
520
|
+
|
521
|
+
`HierarchicalSwarm` implements a director-worker pattern where a central director agent creates comprehensive plans and distributes specific tasks to specialized worker agents. The director evaluates results and can issue new orders in feedback loops, making it ideal for complex project management and team coordination scenarios.
|
522
|
+
|
523
|
+
```python
|
524
|
+
from swarms import Agent, HierarchicalSwarm
|
525
|
+
|
526
|
+
# Define specialized worker agents
|
527
|
+
content_strategist = Agent(
|
528
|
+
agent_name="Content-Strategist",
|
529
|
+
system_prompt="You are a senior content strategist. Develop comprehensive content strategies, editorial calendars, and content roadmaps.",
|
530
|
+
model_name="gpt-4o-mini"
|
531
|
+
)
|
532
|
+
|
533
|
+
creative_director = Agent(
|
534
|
+
agent_name="Creative-Director",
|
535
|
+
system_prompt="You are a creative director. Develop compelling advertising concepts, visual directions, and campaign creativity.",
|
536
|
+
model_name="gpt-4o-mini"
|
537
|
+
)
|
538
|
+
|
539
|
+
seo_specialist = Agent(
|
540
|
+
agent_name="SEO-Specialist",
|
541
|
+
system_prompt="You are an SEO expert. Conduct keyword research, optimize content, and develop organic growth strategies.",
|
542
|
+
model_name="gpt-4o-mini"
|
543
|
+
)
|
544
|
+
|
545
|
+
brand_strategist = Agent(
|
546
|
+
agent_name="Brand-Strategist",
|
547
|
+
system_prompt="You are a brand strategist. Develop brand positioning, identity systems, and market differentiation strategies.",
|
548
|
+
model_name="gpt-4o-mini"
|
549
|
+
)
|
550
|
+
|
551
|
+
# Create the hierarchical swarm with a director
|
552
|
+
marketing_swarm = HierarchicalSwarm(
|
553
|
+
name="Marketing-Team-Swarm",
|
554
|
+
description="A comprehensive marketing team with specialized agents coordinated by a director",
|
555
|
+
agents=[content_strategist, creative_director, seo_specialist, brand_strategist],
|
556
|
+
max_loops=2, # Allow for feedback and refinement
|
557
|
+
verbose=True
|
558
|
+
)
|
559
|
+
|
560
|
+
# Run the swarm on a complex marketing challenge
|
561
|
+
result = marketing_swarm.run(
|
562
|
+
"Develop a comprehensive marketing strategy for a new SaaS product launch. "
|
563
|
+
"The product is a project management tool targeting small to medium businesses. "
|
564
|
+
"Coordinate the team to create content strategy, creative campaigns, SEO optimization, "
|
565
|
+
"and brand positioning that work together cohesively."
|
566
|
+
)
|
567
|
+
|
568
|
+
print(result)
|
569
|
+
```
|
570
|
+
|
571
|
+
The `HierarchicalSwarm` excels at:
|
572
|
+
- **Complex Project Management**: Breaking down large tasks into specialized subtasks
|
573
|
+
- **Team Coordination**: Ensuring all agents work toward unified goals
|
574
|
+
- **Quality Control**: Director provides feedback and refinement loops
|
575
|
+
- **Scalable Workflows**: Easy to add new specialized agents as needed
|
576
|
+
|
516
577
|
---
|
517
578
|
|
518
579
|
## Documentation
|
@@ -522,44 +583,96 @@ Documentation is located here at: [docs.swarms.world](https://docs.swarms.world)
|
|
522
583
|
|
523
584
|
---
|
524
585
|
|
586
|
+
## Examples
|
525
587
|
|
526
|
-
|
588
|
+
Explore comprehensive examples and tutorials to learn how to use Swarms effectively.
|
527
589
|
|
528
|
-
|
590
|
+
### Basic Examples
|
529
591
|
|
530
|
-
|
|
531
|
-
|
532
|
-
|
|
533
|
-
|
|
534
|
-
| Agent
|
535
|
-
| Agent
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
592
|
+
| Example | Description | Link |
|
593
|
+
|---------|-------------|------|
|
594
|
+
| Basic Agent | Simple agent setup and usage | [Basic Agent](https://docs.swarms.world/en/latest/swarms/examples/basic_agent/) |
|
595
|
+
| Agent with Tools | Using agents with various tools | [Agent with Tools](https://docs.swarms.world/en/latest/swarms/examples/agent_with_tools/) |
|
596
|
+
| Agent with Structured Outputs | Working with structured data outputs | [Structured Outputs](https://docs.swarms.world/en/latest/swarms/examples/agent_structured_outputs/) |
|
597
|
+
| Agent with MCP Integration | Model Context Protocol integration | [MCP Integration](https://docs.swarms.world/en/latest/swarms/examples/agent_with_mcp/) |
|
598
|
+
| Vision Processing | Agents with image processing capabilities | [Vision Processing](https://docs.swarms.world/en/latest/swarms/examples/vision_processing/) |
|
599
|
+
| Multiple Images | Working with multiple images | [Multiple Images](https://docs.swarms.world/en/latest/swarms/examples/multiple_images/) |
|
600
|
+
| Vision and Tools | Combining vision with tool usage | [Vision and Tools](https://docs.swarms.world/en/latest/swarms/examples/vision_tools/) |
|
601
|
+
| Agent Streaming | Real-time agent output streaming | [Agent Streaming](https://docs.swarms.world/en/latest/examples/agent_stream/) |
|
602
|
+
| Agent Output Types | Different output formats and types | [Output Types](https://docs.swarms.world/en/latest/swarms/examples/agent_output_types/) |
|
603
|
+
| Gradio Chat Interface | Building interactive chat interfaces | [Gradio UI](https://docs.swarms.world/en/latest/swarms/ui/main/) |
|
542
604
|
|
605
|
+
### Model Provider Examples
|
543
606
|
|
607
|
+
| Provider | Description | Link |
|
608
|
+
|----------|-------------|------|
|
609
|
+
| Model Providers Overview | Complete guide to supported models | [Model Providers](https://docs.swarms.world/en/latest/swarms/examples/model_providers/) |
|
610
|
+
| OpenAI | OpenAI model integration | [OpenAI Examples](https://docs.swarms.world/en/latest/swarms/examples/openai_example/) |
|
611
|
+
| Anthropic | Claude model integration | [Anthropic Examples](https://docs.swarms.world/en/latest/swarms/examples/claude/) |
|
612
|
+
| Groq | Groq model integration | [Groq Examples](https://docs.swarms.world/en/latest/swarms/examples/groq/) |
|
613
|
+
| Cohere | Cohere model integration | [Cohere Examples](https://docs.swarms.world/en/latest/swarms/examples/cohere/) |
|
614
|
+
| DeepSeek | DeepSeek model integration | [DeepSeek Examples](https://docs.swarms.world/en/latest/swarms/examples/deepseek/) |
|
615
|
+
| Ollama | Local Ollama model integration | [Ollama Examples](https://docs.swarms.world/en/latest/swarms/examples/ollama/) |
|
616
|
+
| OpenRouter | OpenRouter model integration | [OpenRouter Examples](https://docs.swarms.world/en/latest/swarms/examples/openrouter/) |
|
617
|
+
| XAI | XAI model integration | [XAI Examples](https://docs.swarms.world/en/latest/swarms/examples/xai/) |
|
618
|
+
| VLLM | VLLM integration | [VLLM Examples](https://docs.swarms.world/en/latest/swarms/examples/vllm_integration/) |
|
619
|
+
| Llama4 | Llama4 model integration | [Llama4 Examples](https://docs.swarms.world/en/latest/swarms/examples/llama4/) |
|
620
|
+
|
621
|
+
### Multi-Agent Architecture Examples
|
622
|
+
|
623
|
+
| Architecture | Description | Link |
|
624
|
+
|--------------|-------------|------|
|
625
|
+
| HierarchicalSwarm | Hierarchical agent orchestration | [HierarchicalSwarm Examples](https://docs.swarms.world/en/latest/swarms/examples/hierarchical_swarm_example/) |
|
626
|
+
| Hybrid Hierarchical-Cluster Swarm | Advanced hierarchical patterns | [HHCS Examples](https://docs.swarms.world/en/latest/swarms/examples/hhcs_examples/) |
|
627
|
+
| GroupChat | Multi-agent conversations | [GroupChat Examples](https://docs.swarms.world/en/latest/swarms/examples/groupchat_example/) |
|
628
|
+
| Sequential Workflow | Step-by-step agent workflows | [Sequential Examples](https://docs.swarms.world/en/latest/swarms/examples/sequential_example/) |
|
629
|
+
| SwarmRouter | Universal swarm orchestration | [SwarmRouter Examples](https://docs.swarms.world/en/latest/swarms/examples/swarm_router/) |
|
630
|
+
| MultiAgentRouter | Minimal router example | [MultiAgentRouter Examples](https://docs.swarms.world/en/latest/swarms/examples/multi_agent_router_minimal/) |
|
631
|
+
| ConcurrentWorkflow | Parallel agent execution | [Concurrent Examples](https://docs.swarms.world/en/latest/swarms/examples/concurrent_workflow/) |
|
632
|
+
| Mixture of Agents | Expert agent collaboration | [MoA Examples](https://docs.swarms.world/en/latest/swarms/examples/moa_example/) |
|
633
|
+
| Unique Swarms | Specialized swarm patterns | [Unique Swarms](https://docs.swarms.world/en/latest/swarms/examples/unique_swarms/) |
|
634
|
+
| Agents as Tools | Using agents as tools in workflows | [Agents as Tools](https://docs.swarms.world/en/latest/swarms/examples/agents_as_tools/) |
|
635
|
+
| Aggregate Responses | Combining multiple agent outputs | [Aggregate Examples](https://docs.swarms.world/en/latest/swarms/examples/aggregate/) |
|
636
|
+
| Interactive GroupChat | Real-time agent interactions | [Interactive GroupChat](https://docs.swarms.world/en/latest/swarms/examples/igc_example/) |
|
637
|
+
|
638
|
+
### Application Examples
|
639
|
+
|
640
|
+
| Application | Description | Link |
|
641
|
+
|-------------|-------------|------|
|
642
|
+
| Swarms DAO | Decentralized autonomous organization | [Swarms DAO](https://docs.swarms.world/en/latest/swarms/examples/swarms_dao/) |
|
643
|
+
| Browser Agents | Web automation with agents | [Browser Agents](https://docs.swarms.world/en/latest/swarms/examples/swarms_of_browser_agents/) |
|
644
|
+
| VLLM Agents | High-performance model serving | [VLLM Agents](https://docs.swarms.world/en/latest/swarms/examples/vllm/) |
|
645
|
+
| Medical Analysis | Healthcare applications | [Medical Examples](https://docs.swarms.world/en/latest/swarms/examples/swarms_api_medical/) |
|
646
|
+
| Finance Analysis | Financial applications | [Finance Examples](https://docs.swarms.world/en/latest/swarms/examples/swarms_api_finance/) |
|
647
|
+
|
648
|
+
### Cookbook and Templates
|
649
|
+
|
650
|
+
| Resource | Description | Link |
|
651
|
+
|----------|-------------|------|
|
652
|
+
| Examples Overview | Complete examples directory | [Examples Index](https://docs.swarms.world/en/latest/examples/) |
|
653
|
+
| Cookbook Index | Curated example collection | [Cookbook](https://docs.swarms.world/en/latest/examples/cookbook_index/) |
|
654
|
+
| Paper Implementations | Research paper implementations | [Paper Implementations](https://docs.swarms.world/en/latest/examples/paper_implementations/) |
|
655
|
+
| Templates & Applications | Reusable templates | [Templates](https://docs.swarms.world/en/latest/examples/templates/) |
|
544
656
|
|
545
657
|
---
|
546
658
|
|
659
|
+
## Contribute to Swarms
|
547
660
|
|
548
|
-
|
661
|
+
Our mission is to accelerate the transition to a fully autonomous world economy by providing enterprise-grade, production-ready infrastructure that enables seamless deployment and orchestration of millions of autonomous agents. We are creating the operating system for the agent economy, and we need your help to achieve this goal.
|
549
662
|
|
550
|
-
Swarms is built by the community, for the community. We believe that collaborative development is the key to pushing the boundaries of what's possible with multi-agent AI. Your contributions are not only welcome—they are essential to our mission. [Learn more about why you should contribute to
|
663
|
+
Swarms is built by the community, for the community. We believe that collaborative development is the key to pushing the boundaries of what's possible with multi-agent AI. Your contributions are not only welcome—they are essential to our mission. [Learn more about why you should contribute to Swarms](https://docs.swarms.world/en/latest/contributors/main/)
|
551
664
|
|
552
665
|
### Why Contribute?
|
553
666
|
|
554
667
|
By joining us, you have the opportunity to:
|
555
668
|
|
556
|
-
*
|
669
|
+
* **Work on the Frontier of Agents:** Shape the future of autonomous agent technology and help build a production-grade, open-source framework.
|
557
670
|
|
558
|
-
*
|
671
|
+
* **Join a Vibrant Community:** Collaborate with a passionate and growing group of agent developers, researchers, and AI enthusiasts.
|
559
672
|
|
560
|
-
*
|
673
|
+
* **Make a Tangible Impact:** Whether you're fixing a bug, adding a new feature, or improving documentation, your work will be used in real-world applications.
|
561
674
|
|
562
|
-
*
|
675
|
+
* **Learn and Grow:** Gain hands-on experience with advanced AI concepts and strengthen your software engineering skills.
|
563
676
|
|
564
677
|
Discover more about our mission and the benefits of becoming a contributor in our official [**Contributor's Guide**](https://docs.swarms.world/en/latest/contributors/main/).
|
565
678
|
|
@@ -567,13 +680,13 @@ Discover more about our mission and the benefits of becoming a contributor in ou
|
|
567
680
|
|
568
681
|
We've made it easy to start contributing. Here's how you can help:
|
569
682
|
|
570
|
-
1.
|
683
|
+
1. **Find an Issue to Tackle:** The best way to begin is by visiting our [**contributing project board**](https://github.com/users/kyegomez/projects/1). Look for issues tagged with `good first issue`—these are specifically selected for new contributors.
|
571
684
|
|
572
|
-
2.
|
685
|
+
2. **Report a Bug or Request a Feature:** Have a new idea or found something that isn't working right? We'd love to hear from you. Please [**file a Bug Report or Feature Request**](https://github.com/kyegomez/swarms/issues) on our GitHub Issues page.
|
573
686
|
|
574
|
-
3.
|
687
|
+
3. **Understand Our Workflow and Standards:** Before submitting your work, please review our complete [**Contribution Guidelines**](https://github.com/kyegomez/swarms/blob/master/CONTRIBUTING.md). To help maintain code quality, we also encourage you to read our guide on [**Code Cleanliness**](https://docs.swarms.world/en/latest/swarms/framework/code_cleanliness/).
|
575
688
|
|
576
|
-
4.
|
689
|
+
4. **Join the Discussion:** To participate in roadmap discussions and connect with other developers, join our community on [**Discord**](https://discord.gg/jM3Z6M9uMq).
|
577
690
|
|
578
691
|
|
579
692
|
### ✨ Our Valued Contributors
|
@@ -620,7 +733,5 @@ If you use **swarms** in your research, please cite the project by referencing t
|
|
620
733
|
|
621
734
|
# License
|
622
735
|
|
623
|
-
|
624
|
-
|
625
|
-
|
736
|
+
Swarms is licensed under the Apache License 2.0. [Learn more here](./LICENSE)
|
626
737
|
|