You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
swarms/swarms/schemas/swarms_api_schemas.py

165 lines
6.1 KiB

from pydantic import BaseModel, Field
from typing import Optional, List, Dict, Any, Union, Literal
SwarmType = Literal[
"AgentRearrange",
"MixtureOfAgents",
"SpreadSheetSwarm",
"SequentialWorkflow",
"ConcurrentWorkflow",
"GroupChat",
"MultiAgentRouter",
"AutoSwarmBuilder",
"HiearchicalSwarm",
"auto",
"MajorityVoting",
"MALT",
"DeepResearchSwarm",
"CouncilAsAJudge",
"InteractiveGroupChat",
]
class AgentSpec(BaseModel):
agent_name: Optional[str] = Field(
# default=None,
description="The unique name assigned to the agent, which identifies its role and functionality within the swarm.",
)
description: Optional[str] = Field(
default=None,
description="A detailed explanation of the agent's purpose, capabilities, and any specific tasks it is designed to perform.",
)
system_prompt: Optional[str] = Field(
default=None,
description="The initial instruction or context provided to the agent, guiding its behavior and responses during execution.",
)
model_name: Optional[str] = Field(
default="gpt-4o-mini",
description="The name of the AI model that the agent will utilize for processing tasks and generating outputs. For example: gpt-4o, gpt-4o-mini, openai/o3-mini",
)
auto_generate_prompt: Optional[bool] = Field(
default=False,
description="A flag indicating whether the agent should automatically create prompts based on the task requirements.",
)
max_tokens: Optional[int] = Field(
default=8192,
description="The maximum number of tokens that the agent is allowed to generate in its responses, limiting output length.",
)
temperature: Optional[float] = Field(
default=0.5,
description="A parameter that controls the randomness of the agent's output; lower values result in more deterministic responses.",
)
role: Optional[str] = Field(
default="worker",
description="The designated role of the agent within the swarm, which influences its behavior and interaction with other agents.",
)
max_loops: Optional[int] = Field(
default=1,
description="The maximum number of times the agent is allowed to repeat its task, enabling iterative processing if necessary.",
)
tools_list_dictionary: Optional[List[Dict[Any, Any]]] = Field(
default=None,
description="A dictionary of tools that the agent can use to complete its task.",
)
mcp_url: Optional[str] = Field(
default=None,
description="The URL of the MCP server that the agent can use to complete its task.",
)
class Config:
arbitrary_types_allowed = True
class AgentCompletion(BaseModel):
agent_config: Optional[AgentSpec] = Field(
None,
description="The configuration of the agent to be completed.",
)
task: Optional[str] = Field(
None, description="The task to be completed by the agent."
)
history: Optional[Union[Dict[Any, Any], List[Dict[str, str]]]] = (
Field(
default=None,
description="The history of the agent's previous tasks and responses. Can be either a dictionary or a list of message objects.",
)
)
model_config = {
"arbitrary_types_allowed": True,
"populate_by_name": True,
}
class Agents(BaseModel):
"""Configuration for a collection of agents that work together as a swarm to accomplish tasks."""
agents: List[AgentSpec] = Field(
description="A list containing the specifications of each agent that will participate in the swarm, detailing their roles and functionalities."
)
class SwarmSpec(BaseModel):
name: Optional[str] = Field(
None,
description="The name of the swarm, which serves as an identifier for the group of agents and their collective task.",
max_length=100,
)
description: Optional[str] = Field(
None,
description="A comprehensive description of the swarm's objectives, capabilities, and intended outcomes.",
)
agents: Optional[List[AgentSpec]] = Field(
None,
description="A list of agents or specifications that define the agents participating in the swarm.",
)
max_loops: Optional[int] = Field(
default=1,
description="The maximum number of execution loops allowed for the swarm, enabling repeated processing if needed.",
)
swarm_type: Optional[SwarmType] = Field(
None,
description="The classification of the swarm, indicating its operational style and methodology.",
)
rearrange_flow: Optional[str] = Field(
None,
description="Instructions on how to rearrange the flow of tasks among agents, if applicable.",
)
task: Optional[str] = Field(
None,
description="The specific task or objective that the swarm is designed to accomplish.",
)
img: Optional[str] = Field(
None,
description="An optional image URL that may be associated with the swarm's task or representation.",
)
return_history: Optional[bool] = Field(
True,
description="A flag indicating whether the swarm should return its execution history along with the final output.",
)
rules: Optional[str] = Field(
None,
description="Guidelines or constraints that govern the behavior and interactions of the agents within the swarm.",
)
tasks: Optional[List[str]] = Field(
None,
description="A list of tasks that the swarm should complete.",
)
messages: Optional[
Union[List[Dict[Any, Any]], Dict[Any, Any]]
] = Field(
None,
description="A list of messages that the swarm should complete.",
)
stream: Optional[bool] = Field(
False,
description="A flag indicating whether the swarm should stream its output.",
)
service_tier: Optional[str] = Field(
"standard",
description="The service tier to use for processing. Options: 'standard' (default) or 'flex' for lower cost but slower processing.",
)
class Config:
arbitrary_types_allowed = True