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.
165 lines
6.1 KiB
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
|