SpreadSheetSwarm Documentation¶
Class Definition¶
Full Path¶
Attributes¶
The SpreadSheetSwarm
class contains several attributes that define its behavior and configuration. These attributes are initialized in the constructor (__init__
method) and are used throughout the class to manage the swarm's operations.
Attribute | Type | Description |
---|---|---|
name |
str |
The name of the swarm. |
description |
str |
A description of the swarm's purpose. |
agents |
Union[Agent, List[Agent]] |
The agents participating in the swarm. Can be a single agent or a list of agents. |
autosave_on |
bool |
Flag indicating whether autosave is enabled. |
save_file_path |
str |
The file path where the swarm data will be saved. |
task_queue |
queue.Queue |
The queue that stores tasks to be processed by the agents. |
lock |
threading.Lock |
A lock used for thread synchronization to prevent race conditions. |
metadata |
SwarmRunMetadata |
Metadata for the swarm run, including start time, end time, tasks completed, and outputs. |
run_all_agents |
bool |
Flag indicating whether to run all agents or just one. |
max_loops |
int |
The number of times to repeat the task. |
workspace_dir |
str |
The directory where the workspace is located, retrieved from environment variables. |
Parameters¶
name
(str
, optional): The name of the swarm. Default is"Spreadsheet-Swarm"
.description
(str
, optional): A brief description of the swarm. Default is"A swarm that processes tasks from a queue using multiple agents on different threads."
.agents
(Union[Agent, List[Agent]]
, optional): The agents participating in the swarm. Default is an empty list.autosave_on
(bool
, optional): A flag to indicate if autosave is enabled. Default isTrue
.save_file_path
(str
, optional): The file path where swarm data will be saved. Default is"spreedsheet_swarm.csv"
.run_all_agents
(bool
, optional): Flag to determine if all agents should run. Default isTrue
.max_loops
(int
, optional): The number of times to repeat the task. Default is1
.workspace_dir
(str
, optional): The directory where the workspace is located. Default is retrieved from environment variableWORKSPACE_DIR
.
Constructor (__init__
)¶
The constructor initializes the SpreadSheetSwarm
with the provided parameters. It sets up the task queue, locks for thread synchronization, and initializes the metadata.
Methods¶
reliability_check
¶
Description¶
The reliability_check
method performs a series of checks to ensure that the swarm is properly configured before it begins processing tasks. It verifies that there are agents available and that a valid file path is provided for saving the swarm's data. If any of these checks fail, an exception is raised.
Raises¶
ValueError
: Raised if no agents are provided or if no save file path is specified.
Example¶
run
¶
Description¶
The run
method starts the task processing using the swarm. Depending on the configuration, it can either run all agents or a specific subset of them. The method tracks the start and end times of the task, executes the task multiple times if specified, and logs the results.
Parameters¶
task
(str
): The task to be executed by the swarm.*args
: Additional positional arguments to pass to the agents.**kwargs
: Additional keyword arguments to pass to the agents.
Example¶
export_to_json
¶
Description¶
The export_to_json
method generates a JSON representation of the swarm's metadata. This can be useful for exporting the results to an external system or for logging purposes.
Returns¶
str
: The JSON representation of the swarm's metadata.
Example¶
data_to_json_file
¶
Description¶
The data_to_json_file
method saves the swarm's metadata as a JSON file in the specified workspace directory. The file name is generated using the swarm's name and run ID.
Example¶
_track_output
¶
Description¶
The _track_output
method is used internally to record the results of tasks executed by the agents. It updates the metadata with the completed tasks and their results.
Parameters¶
agent
(Agent
): The agent that executed the task.task
(str
): The task that was executed.result
(str
): The result of the task execution.
Example¶
_save_to_csv
¶
Description¶
The _save_to_csv
method saves the swarm's metadata to a CSV file. It logs each task and its result before writing them to the file. The file is saved in the location specified by save_file_path
.
Example¶
Usage Examples¶
Example 1: Basic Swarm Initialization¶
import os
from swarms import Agent
from swarm_models import OpenAIChat
from swarms.prompts.finance_agent_sys_prompt import (
FINANCIAL_AGENT_SYS_PROMPT,
)
from swarms.structs.spreadsheet_swarm import SpreadSheetSwarm
# Example usage:
api_key = os.getenv("OPENAI_API_KEY")
# Model
model = OpenAIChat(
openai_api_key=api_key, model_name="gpt-4o-mini", temperature=0.1
)
# Initialize your agents (assuming the Agent class and model are already defined)
agents = [
Agent(
agent_name=f"Financial-Analysis-Agent-spreesheet-swarm:{i}",
system_prompt=FINANCIAL_AGENT_SYS_PROMPT,
llm=model,
max_loops=1,
dynamic_temperature_enabled=True,
saved_state_path="finance_agent.json",
user_name="swarms_corp",
retry_attempts=1,
)
for i in range(10)
]
# Create a Swarm with the list of agents
swarm = SpreadSheetSwarm(
name="Finance-Spreadsheet-Swarm",
description="A swarm that processes tasks from a queue using multiple agents on different threads.",
agents=agents,
autosave_on=True,
save_file_path="financial_spreed_sheet_swarm_demo.csv",
run_all_agents=False,
max_loops=1,
)
# Run the swarm
swarm.run(
task="Analyze the states with the least taxes for LLCs. Provide an overview of all tax rates and add them with a comprehensive analysis"
)
Example 2: QR Code Generator¶
import os
from swarms import Agent
from swarm_models import OpenAIChat
from swarms.structs.spreadsheet_swarm import SpreadSheetSwarm
# Define custom system prompts for QR code generation
QR_CODE_AGENT_1_SYS_PROMPT = """
You are a Python coding expert. Your task is to write a Python script to generate a QR code for the link: https://lu.ma/jjc1b2bo. The code should save the QR code as an image file.
"""
QR_CODE_AGENT_2_SYS_PROMPT = """
You are a Python coding expert. Your task is to write a Python script to generate a QR code for the link: https://github.com/The-Swarm-Corporation/Cookbook. The code should save the QR code as an image file.
"""
# Example usage:
api_key = os.getenv("OPENAI_API_KEY")
# Model
model = OpenAIChat(
openai_api_key=api_key, model_name="gpt-4o-mini", temperature=0.1
)
# Initialize your agents for QR code generation
agents = [
Agent(
agent_name="QR-Code-Generator-Agent-Luma",
system_prompt=QR_CODE_AGENT_1_SYS_PROMPT,
llm=model,
max_loops=1,
dynamic_temperature_enabled=True,
saved_state_path="qr_code_agent_luma.json",
user_name="swarms_corp",
retry_attempts=1,
),
Agent(
agent_name="QR-Code-Generator-Agent-Cookbook",
system_prompt=QR_CODE_AGENT_2_SYS_PROMPT,
llm=model,
max_loops=1,
dynamic_temperature_enabled=True,
saved_state_path="qr_code_agent_cookbook.json",
user_name="swarms_corp",
retry_attempts=1,
),
]
# Create a Swarm with the list of agents
swarm = SpreadSheetSwarm(
name="QR-Code-Generation-Swarm",
description="A swarm that generates Python scripts to create QR codes for specific links.",
agents=agents,
autosave_on=True,
save_file_path="qr_code_generation_results.csv",
run_all_agents=False,
max_loops=1,
)
# Run the swarm
swarm.run(
task="Generate Python scripts to create QR codes for the provided links and save them as image files."
)
Example 3: Social Media Marketing¶
import os
from swarms import Agent
from swarm_models import OpenAIChat
from swarms.structs.spreadsheet_swarm import SpreadSheetSwarm
# Define custom system prompts for each social media platform
TWITTER_AGENT_SYS_PROMPT = """
You are a Twitter marketing expert. Your task is to create engaging, concise tweets and analyze trends to maximize engagement. Consider hashtags, timing, and content relevance.
"""
INSTAGRAM_AGENT_SYS_PROMPT = """
You are an Instagram marketing expert. Your task is to create visually appealing and engaging content, including captions and hashtags, tailored to a specific audience.
"""
FACEBOOK_AGENT_SYS_PROMPT = """
You are a Facebook marketing expert. Your task is to craft posts that are optimized for engagement and reach on Facebook, including using images, links, and targeted messaging.
"""
EMAIL_AGENT_SYS_PROMPT = """
You are an Email marketing expert. Your task is to write compelling email campaigns that drive conversions, focusing on subject lines, personalization, and call-to-action strategies.
"""
# Example usage:
api_key = os.getenv("OPENAI_API_KEY")
# Model
model = OpenAIChat(
openai_api_key=api_key, model_name="gpt-4o-mini", temperature=0.1
)
# Initialize your agents for different social media platforms
agents = [
Agent(
agent_name="Twitter-Marketing-Agent",
system_prompt=TWITTER_AGENT_SYS_PROMPT,
llm=model,
max_loops=1,
dynamic_temperature_enabled=True,
saved_state_path="twitter_agent.json",
user_name="swarms_corp",
retry_attempts=1,
),
Agent(
agent_name="Instagram-Marketing-Agent",
system_prompt=INSTAGRAM_AGENT_SYS_PROMPT,
llm=model,
max_loops=1,
dynamic_temperature_enabled=True,
saved_state_path="instagram_agent.json",
user_name="swarms_corp",
retry_attempts=1,
),
Agent(
agent_name="Facebook-Marketing-Agent",
system_prompt=FACEBOOK_AGENT_SYS_PROMPT,
llm=model,
max_loops=1,
dynamic_temperature_enabled=True,
saved_state_path="facebook_agent.json",
user_name="swarms_corp",
retry_attempts=1,
),
Agent(
agent_name="Email-Marketing-Agent",
system_prompt=EMAIL_AGENT_SYS_PROMPT,
llm=model,
max_loops=1,
dynamic_temperature_enabled=True,
saved_state_path="email_agent.json",
user_name="swarms_corp",
retry_attempts=1,
),
]
# Create a Swarm with the list of agents
swarm = SpreadSheetSwarm(
name="Social-Media-Marketing-Swarm",
description="A swarm that processes social media marketing tasks using multiple agents on different threads.",
agents=agents,
autosave_on=True,
save_file_path="social_media_marketing_spreadsheet.csv",
run_all_agents=False,
max_loops=2,
)
# Run the swarm
swarm.run(
task="Create posts to promote hack nights in miami beach for developers, engineers, and tech enthusiasts. Include relevant hashtags, images, and engaging captions."
)
Additional Information and Tips¶
-
Thread Synchronization: When working with multiple agents in a concurrent environment, it's crucial to ensure that access to shared resources is properly synchronized using locks to avoid race conditions.
-
Autosave Feature: If you enable the
autosave_on
flag, ensure that the file path provided is correct and writable. This feature is handy for long-running tasks where you want to periodically save the state. -
Error Handling
- Implementing proper error handling within your agents can prevent the swarm from crashing during execution. Consider catching exceptions in the
run
method and logging errors appropriately.
- Custom Agents: You can extend the
Agent
class to create custom agents that perform specific tasks tailored to your application's needs.