Merge pull request #830 from ascender1729/feat/docs-update-concurrent-agents-api

Feat/docs update concurrent agents api
pull/831/head
Kye Gomez 1 week ago committed by GitHub
commit 0948fdff43
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -15,30 +15,14 @@ Swarms aims to be the definitive and most reliable multi-agent LLM framework, of
This example demonstrates a simple financial agent setup that responds to financial questions, such as establishing a ROTH IRA, using OpenAI's GPT-based model. This example demonstrates a simple financial agent setup that responds to financial questions, such as establishing a ROTH IRA, using OpenAI's GPT-based model.
```python ```python
import os from swarms.structs.agent import Agent
from swarms import Agent from swarms.prompts.finance_agent_sys_prompt import FINANCIAL_AGENT_SYS_PROMPT
from swarm_models import OpenAIChat
from swarms.prompts.finance_agent_sys_prompt import (
FINANCIAL_AGENT_SYS_PROMPT,
)
from dotenv import load_dotenv
# Load environment variables
load_dotenv()
# Get OpenAI API key from environment
api_key = os.getenv("OPENAI_API_KEY")
# Initialize OpenAIChat model with desired parameters # Initialize the Financial Analysis Agent with GPT-4o-mini model
model = OpenAIChat(
openai_api_key=api_key, model_name="gpt-4o-mini", temperature=0.1
)
# Initialize the Financial Analysis Agent
agent = Agent( agent = Agent(
agent_name="Financial-Analysis-Agent", agent_name="Financial-Analysis-Agent",
system_prompt=FINANCIAL_AGENT_SYS_PROMPT, system_prompt=FINANCIAL_AGENT_SYS_PROMPT,
llm=model, model_name="gpt-4o-mini",
max_loops=1, max_loops=1,
autosave=True, autosave=True,
dashboard=False, dashboard=False,
@ -56,7 +40,7 @@ out = agent.run(
"How can I establish a ROTH IRA to buy stocks and get a tax break? What are the criteria?" "How can I establish a ROTH IRA to buy stocks and get a tax break? What are the criteria?"
) )
# Output the agent's result # Output the result
print(out) print(out)
``` ```
@ -64,66 +48,60 @@ print(out)
The following example showcases how to use the `AgentRearrange` class to manage a multi-agent system. It sets up a director agent to orchestrate two workers—one to generate a transcript and another to summarize it. The following example showcases how to use the `AgentRearrange` class to manage a multi-agent system. It sets up a director agent to orchestrate two workers—one to generate a transcript and another to summarize it.
```python ```python
from swarms import Agent, AgentRearrange from swarms.structs.agent import Agent
from swarm_models import Anthropic from swarms.structs.rearrange import AgentRearrange
# Initialize the Director agent # Initialize the Director agent using Anthropic model via model_name
director = Agent( director = Agent(
agent_name="Director", agent_name="Director",
system_prompt="Directs the tasks for the workers", system_prompt="You are a Director agent. Your role is to coordinate and direct tasks for worker agents. Break down complex tasks into clear, actionable steps.",
llm=Anthropic(), model_name="claude-3-sonnet-20240229",
max_loops=1, max_loops=1,
dashboard=False, dashboard=False,
streaming_on=True, streaming_on=False,
verbose=True, verbose=True,
stopping_token="<DONE>", stopping_token="<DONE>",
state_save_file_type="json", state_save_file_type="json",
saved_state_path="director.json", saved_state_path="director.json",
) )
# Initialize Worker 1 agent (transcript generation) # Worker 1: transcript generation
worker1 = Agent( worker1 = Agent(
agent_name="Worker1", agent_name="Worker1",
system_prompt="Generates a transcript for a YouTube video on what swarms are", system_prompt="You are a content creator agent. Your role is to generate detailed, engaging transcripts for YouTube videos about technical topics. Focus on clarity and educational value.",
llm=Anthropic(), model_name="claude-3-sonnet-20240229",
max_loops=1, max_loops=1,
dashboard=False, dashboard=False,
streaming_on=True, streaming_on=False,
verbose=True, verbose=True,
stopping_token="<DONE>", stopping_token="<DONE>",
state_save_file_type="json", state_save_file_type="json",
saved_state_path="worker1.json", saved_state_path="worker1.json",
) )
# Initialize Worker 2 agent (summarizes transcript) # Worker 2: summarization
worker2 = Agent( worker2 = Agent(
agent_name="Worker2", agent_name="Worker2",
system_prompt="Summarizes the transcript generated by Worker1", system_prompt="You are a summarization agent. Your role is to create concise, clear summaries of technical content while maintaining key information and insights.",
llm=Anthropic(), model_name="claude-3-sonnet-20240229",
max_loops=1, max_loops=1,
dashboard=False, dashboard=False,
streaming_on=True, streaming_on=False,
verbose=True, verbose=True,
stopping_token="<DONE>", stopping_token="<DONE>",
state_save_file_type="json", state_save_file_type="json",
saved_state_path="worker2.json", saved_state_path="worker2.json",
) )
# Create a list of agents # Orchestrate the agents in sequence
agents = [director, worker1, worker2] agents = [director, worker1, worker2]
# Define the workflow pattern (sequential flow)
flow = "Director -> Worker1 -> Worker2" flow = "Director -> Worker1 -> Worker2"
# Using AgentRearrange to orchestrate the agents
agent_system = AgentRearrange(agents=agents, flow=flow) agent_system = AgentRearrange(agents=agents, flow=flow)
# Running the system with a sample task # Run the workflow
output = agent_system.run( output = agent_system.run(
"Create a format to express and communicate swarms of LLMs in a structured manner for YouTube" "Create a format to express and communicate swarms of LLMs in a structured manner for YouTube"
) )
# Output the result
print(output) print(output)
``` ```
@ -169,4 +147,3 @@ Swarms abstracts the complexity of managing multiple agents with orchestration t
### Conclusion: ### Conclusion:
Swarms is not just another multi-agent framework; it's built specifically for developers who need powerful tools to automate complex, large-scale business operations. With flexible architecture, deep integration capabilities, and developer-friendly APIs, Swarms is the ultimate solution for businesses looking to streamline operations and future-proof their workflows. Swarms is not just another multi-agent framework; it's built specifically for developers who need powerful tools to automate complex, large-scale business operations. With flexible architecture, deep integration capabilities, and developer-friendly APIs, Swarms is the ultimate solution for businesses looking to streamline operations and future-proof their workflows.

@ -70,51 +70,55 @@ The `create_agents_from_yaml` function works by reading agent configurations fro
```yaml ```yaml
agents: agents:
- agent_name: "Financial-Analysis-Agent" - agent_name: "Financial-Analysis-Agent"
model: system_prompt: "You are a financial analysis expert. Analyze market trends and provide investment recommendations."
openai_api_key: "your_openai_api_key" model_name: "claude-3-opus-20240229"
model_name: "gpt-4o-mini"
temperature: 0.1
max_tokens: 2000
system_prompt: "financial_agent_sys_prompt"
max_loops: 1 max_loops: 1
autosave: true autosave: false
dashboard: false dashboard: false
verbose: true verbose: false
dynamic_temperature_enabled: true dynamic_temperature_enabled: false
saved_state_path: "finance_agent.json"
user_name: "swarms_corp" user_name: "swarms_corp"
retry_attempts: 1 retry_attempts: 1
context_length: 200000 context_length: 200000
return_step_meta: false return_step_meta: false
output_type: "str" output_type: "str"
task: "How can I establish a ROTH IRA to buy stocks and get a tax break?" temperature: 0.1
max_tokens: 2000
- agent_name: "Stock-Analysis-Agent" task: "Analyze tech stocks for 2024 investment strategy. Provide detailed analysis and recommendations."
model:
openai_api_key: "your_openai_api_key" - agent_name: "Risk-Analysis-Agent"
model_name: "gpt-4o-mini" system_prompt: "You are a risk analysis expert. Evaluate investment risks and provide mitigation strategies."
temperature: 0.2 model_name: "claude-3-opus-20240229"
max_tokens: 1500 max_loops: 1
system_prompt: "stock_agent_sys_prompt" autosave: false
max_loops: 2
autosave: true
dashboard: false dashboard: false
verbose: true verbose: false
dynamic_temperature_enabled: false dynamic_temperature_enabled: false
saved_state_path: "stock_agent.json" user_name: "swarms_corp"
user_name: "stock_user" retry_attempts: 1
retry_attempts: 3
context_length: 150000 context_length: 150000
return_step_meta: true return_step_meta: false
output_type: "json" output_type: "str"
task: "What is the best strategy for long-term stock investment?" temperature: 0.1
max_tokens: 2000
task: "Conduct a comprehensive risk analysis of the top 5 tech companies in 2024. Include risk factors and mitigation strategies."
swarm_architecture:
name: "Financial Analysis Swarm"
description: "A swarm for comprehensive financial and risk analysis"
max_loops: 1
swarm_type: "SequentialWorkflow"
task: "Analyze tech stocks and their associated risks for 2024 investment strategy"
autosave: false
return_json: true
``` ```
### Key Configuration Fields: ### Key Configuration Fields:
- **agent_name**: Name of the agent. - **agent_name**: Name of the agent.
- **model**: Defines the language model settings (e.g., API key, model name, temperature, and max tokens).
- **system_prompt**: The system prompt used to guide the agent's behavior. - **system_prompt**: The system prompt used to guide the agent's behavior.
- **task**: (Optional) Task for the agent to execute once created. - **model_name**: The language model to use (e.g., claude-3-opus-20240229).
- **task**: Task for the agent to execute.
- **swarm_architecture**: (Optional) Configuration for swarm behavior.
--- ---
@ -124,41 +128,15 @@ Now, create the main Python script that will use the `create_agents_from_yaml` f
### `main.py`: ### `main.py`:
```python ```python
import os from swarms.agents.create_agents_from_yaml import create_agents_from_yaml
from dotenv import load_dotenv
from loguru import logger
from swarm_models import OpenAIChat
from swarms.agents.create_agents_from_yaml import (
create_agents_from_yaml,
)
# Load environment variables
load_dotenv()
# Path to your YAML file # Create agents and get task results
yaml_file = "agents.yaml" task_results = create_agents_from_yaml(
yaml_file="agents_config.yaml",
# Get the OpenAI API key from the environment variable return_type="run_swarm"
api_key = os.getenv("OPENAI_API_KEY")
# Create an instance of the OpenAIChat class
model = OpenAIChat(
openai_api_key=api_key, model_name="gpt-4o-mini", temperature=0.1
) )
print(task_results)
try:
# Create agents and run tasks (using 'both' to return agents and task results)
task_results = create_agents_from_yaml(
model=model, yaml_file=yaml_file, return_type="tasks"
)
logger.info(f"Results from agents: {task_results}")
except Exception as e:
logger.error(f"An error occurred: {e}")
``` ```
### Example Run: ### Example Run:

@ -91,20 +91,19 @@ Runs multiple agents concurrently with timeout limits.
## Usage Examples ## Usage Examples
```python ```python
from swarms import Agent, run_agents_concurrently, run_agents_with_timeout, run_agents_with_different_tasks from swarms.structs.agent import Agent
from swarm_models import OpenAIChat from swarms.structs.multi_agent_exec import (
run_agents_concurrently,
model = OpenAIChat( run_agents_with_timeout,
model_name="gpt-4o-mini", run_agents_with_different_tasks
temperature=0.0
) )
# Initialize agents # Initialize agents using only the built-in model_name parameter
agents = [ agents = [
Agent( Agent(
agent_name=f"Analysis-Agent-{i}", agent_name=f"Analysis-Agent-{i}",
system_prompt="You are a financial analysis expert", system_prompt="You are a financial analysis expert",
llm=model, model_name="gpt-4o-mini",
max_loops=1 max_loops=1
) )
for i in range(5) for i in range(5)

Loading…
Cancel
Save