| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457 |
- ---
- title: "API Reference"
- description: "Gain a deeper understanding of the core classes and methods available in Agency Swarm."
- icon: "book"
- ---
- ## Agency Class
- The Agency class orchestrates a collection of Agent instances based on entry points and communication flows.
- ```python
- from agency_swarm import Agency, Agent
- class Agency:
- def __init__(
- self,
- *entry_point_agents: Agent,
- communication_flows: list[CommunicationFlowEntry] | None = None,
- name: str | None = None,
- shared_instructions: str | None = None,
- shared_tools: list[Tool] | None = None,
- shared_tools_folder: str | None = None,
- shared_files_folder: str | None = None,
- shared_mcp_servers: list[Any] | None = None,
- send_message_tool_class: type | None = None,
- load_threads_callback: ThreadLoadCallback | None = None,
- save_threads_callback: ThreadSaveCallback | None = None,
- user_context: dict[str, Any] | None = None,
- ):
- """
- Initialize an Agency instance.
- Parameters:
- *entry_point_agents: Agent instances serving as entry points for external interaction
- communication_flows: Flexible communication flow definitions supporting tuples and AgentFlow objects
- name: Optional name for the agency
- shared_instructions: Instruction text or file path applied to every agent
- shared_tools: Tool instances or BaseTool classes to add to all agents (each agent gets independent copies)
- shared_tools_folder: Path to folder containing tool files to load and share with all agents
- shared_files_folder: Path to folder of files to upload and share with all agents via a common vector store
- shared_mcp_servers: MCP server instances to attach to all agents
- send_message_tool_class: Fallback SendMessage tool class when a communication flow does not define its own
- load_threads_callback: Callable used to load persisted conversation threads
- save_threads_callback: Callable used to save conversation threads
- user_context: Initial shared context accessible to all agents
- """
- ```
- > **Note:** `CommunicationFlowEntry` is a type alias defined in `agency_swarm.agency.core`
- > that accepts `(Agent, Agent)` tuples, `AgentFlow` chains, or those accompanied by a
- > custom SendMessage tool class.
- > **Advanced Note:** `Handoff` from `agency_swarm` is the Agency Swarm communication-flow class.
- > `SDKHandoff` exposes the raw OpenAI Agents SDK handoff type for advanced interoperability.
- ### Key Attributes
- - **`agents`** (dict[str, Agent]): Dictionary mapping agent names to their instances
- - **`entry_points`** (list[Agent]): Agents designated as entry points for external interaction
- - **`thread_manager`** (ThreadManager): Manager responsible for handling conversation threads
- - **`event_stream_merger`** (EventStreamMerger): Aggregates streaming events from concurrent agent runs
- - **`persistence_hooks`** (PersistenceHooks | None): Optional hooks for loading/saving thread state
- - **`shared_instructions`** (str | None): Instructions prepended to every agent's system prompt
- - **`shared_tools`** (list[Tool] | None): Tool instances or BaseTool classes shared with all agents
- - **`shared_tools_folder`** (str | None): Path to folder containing shared tool files
- - **`shared_files_folder`** (str | None): Path to folder of files shared via a common vector store
- - **`shared_mcp_servers`** (list[Any] | None): MCP server instances attached to all agents
- - **`user_context`** (dict[str, Any]): Shared user-defined context accessible within MasterContext
- - **`send_message_tool_class`** (type | None): Fallback SendMessage tool when no flow-specific tool is set
- ### Key Methods
- <CodeGroup>
- ```python get_response
- async def get_response(
- self,
- message: str | list[TResponseInputItem],
- recipient_agent: str | Agent | None = None,
- context_override: dict[str, Any] | None = None,
- hooks_override: RunHooks | None = None,
- run_config: RunConfig | None = None,
- file_ids: list[str] | None = None,
- additional_instructions: str | None = None,
- agency_context_override: AgencyContext | None = None,
- **kwargs: Any,
- ) -> RunResult:
- """
- Initiate an interaction with a specified agent within the agency.
- Parameters:
- message: The input message for the agent
- recipient_agent: Target agent instance or name (defaults to first entry point)
- context_override: Additional context to pass to the agent run
- hooks_override: Specific hooks to use for this run, overriding agency defaults
- run_config: Configuration for the agent run
- file_ids: Additional file IDs for the agent run
- additional_instructions: Additional instructions for this run only
- agency_context_override: Run-scoped agency context override (for example, isolated thread history)
- **kwargs: Additional arguments passed to the target agent's get_response
- Returns:
- RunResult: The result of the agent execution chain
- """
- ```
- ```python get_response_sync
- def get_response_sync(
- self,
- message: str | list[TResponseInputItem],
- recipient_agent: str | Agent | None = None,
- context_override: dict[str, Any] | None = None,
- hooks_override: RunHooks | None = None,
- run_config: RunConfig | None = None,
- file_ids: list[str] | None = None,
- additional_instructions: str | None = None,
- agency_context_override: AgencyContext | None = None,
- **kwargs: Any,
- ) -> RunResult:
- """
- Initiate an interaction with a specified agent within the agency.
- Parameters:
- message: The input message for the agent
- recipient_agent: Target agent instance or name (defaults to first entry point)
- context_override: Additional context to pass to the agent run
- hooks_override: Specific hooks to use for this run, overriding agency defaults
- run_config: Configuration for the agent run
- file_ids: Additional file IDs for the agent run
- additional_instructions: Additional instructions for this run only
- agency_context_override: Run-scoped agency context override (for example, isolated thread history)
- **kwargs: Additional arguments passed to the target agent's get_response
- Returns:
- RunResult: The result of the agent execution chain
- """
- ```
- ```python get_response_stream
- def get_response_stream(
- self,
- message: str | list[TResponseInputItem],
- recipient_agent: str | Agent | None = None,
- context_override: dict[str, Any] | None = None,
- hooks_override: RunHooks | None = None,
- run_config_override: RunConfig | None = None,
- file_ids: list[str] | None = None,
- additional_instructions: str | None = None,
- agency_context_override: AgencyContext | None = None,
- **kwargs: Any,
- ) -> StreamingRunResponse:
- """
- Initiate a streaming interaction with a specified agent within the agency.
- Parameters:
- message: The input message for the agent
- recipient_agent: Target agent instance or name (defaults to first entry point)
- context_override: Additional context for the run
- hooks_override: Specific hooks for this run
- run_config_override: Specific run configuration for this run
- file_ids: Additional file IDs for the agent run
- additional_instructions: Additional instructions for this run only
- agency_context_override: Run-scoped agency context override (for example, isolated thread history)
- **kwargs: Additional arguments passed to get_response_stream
- Returns:
- StreamingRunResponse: Wrapper over the streaming agent execution, yielding events
- """
- ```
- ```python run_fastapi
- def run_fastapi(
- self,
- host: str = "0.0.0.0",
- port: int = 8000,
- app_token_env: str = "APP_TOKEN",
- cors_origins: list[str] | None = None,
- enable_agui: bool = False,
- ):
- """
- Serve this agency via the FastAPI integration.
- Parameters:
- host: Host address to bind the server
- port: Port number to bind the server
- app_token_env: Environment variable name for authentication token
- cors_origins: List of allowed CORS origins
- enable_agui: Enable Agency UI interface
- """
- ```
- ```python get_agency_graph
- def get_agency_graph(
- self,
- include_tools: bool = True,
- ) -> dict[str, Any]:
- """
- Returns a ReactFlow-compatible JSON graph representing the agency's organization.
- Parameters:
- include_tools: Whether to include agent tools as separate nodes
- Returns:
- dict: ReactFlow-compatible structure with nodes and edges
- """
- ```
- ```python get_metadata
- def get_metadata(
- self,
- include_tools: bool = True,
- ) -> dict[str, Any]:
- """
- Returns combined graph data and summary metadata for the agency.
- Parameters:
- include_tools: Whether to include agent tools as separate nodes
- Returns:
- dict: Graph data plus metadata fields like agencyName, totalAgents, totalTools, agents, entryPoints.
- Tool entries include inputSchema when available.
- """
- ```
- ```python visualize
- def visualize(
- self,
- output_file: str = "agency_visualization.html",
- include_tools: bool = True,
- open_browser: bool = True,
- ) -> str:
- """
- Create an HTML visualization of the agency structure.
- Parameters:
- output_file: Path to save the HTML file
- include_tools: Whether to include agent tools in visualization
- open_browser: Whether to automatically open in browser
- Returns:
- str: Path to the generated HTML file
- """
- ```
- ```python tui
- def tui(self, show_reasoning: bool | None = None, reload: bool = True) -> None:
- """
- Run the terminal UI for the agency (set reload=False to disable hot reload on file changes).
- """
- ```
- ```python copilot_demo
- def copilot_demo(
- self,
- host: str = "0.0.0.0",
- port: int = 8000,
- frontend_port: int = 3000,
- cors_origins: list[str] | None = None,
- ) -> None:
- """
- Run the bundled copilot demo for the agency.
- """
- ```
- For provisioning and current terminal limitations, see [Agent Swarm TUI](/core-framework/agencies/agent-swarm-cli).
- </CodeGroup>
- ## Agent Class
- The Agent class extends the base `agents.Agent` with capabilities for multi-agent collaboration within an Agency.
- ```python
- from agency_swarm import Agent, ModelSettings
- class Agent(BaseAgent[MasterContext]):
- def __init__(self, **kwargs: Any):
- """
- Initialize an Agency Swarm Agent.
- Parameters:
- name (str): Agent name (**required**)
- instructions (str | Path | None): System prompt text or path
- description (str | None): Optional role description for send_message tools
- files_folder (str | Path | None): Folder for local file management and vector stores
- tools_folder (str | Path | None): Directory for automatic tool discovery
- schemas_folder (str | Path | None): Directory containing OpenAPI schemas for tool generation
- api_headers (dict[str, dict[str, str]] | None): Per-schema HTTP headers for generated tools
- api_params (dict[str, dict[str, Any]] | None): Per-schema default parameters for generated tools
- include_search_results (bool): Include search results in FileSearchTool output (default False)
- include_web_search_sources (bool): Include source URLs for WebSearchTool output (default True)
- validation_attempts (int): Number of retries when output guardrails trigger (default 1)
- raise_input_guardrail_error (bool): Controls input guardrail behavior—False enables non-strict mode (guidance as assistant message), True enables strict mode (raises exceptions). Default: False
- handoff_reminder (str | None): Custom reminder text when handing off to another agent
- model (str | Model | None): Model identifier; defaults to agents SDK configuration
- model_settings (ModelSettings | None): Model configuration overrides
- tools (list[Tool] | None): Explicit tool instances to register
- mcp_servers (list[MCPServer] | None): Model Context Protocol servers to attach
- mcp_config (MCPConfig | None): Configuration for MCP servers
- input_guardrails (list[InputGuardrail] | None): Pre-execution validation hooks
- output_guardrails (list[OutputGuardrail] | None): Post-execution validation hooks
- output_type (type[Any] | AgentOutputSchemaBase | None): Type of final output structure
- hooks (AgentHooks | None): Lifecycle callbacks from the agents SDK
- tool_use_behavior ("run_llm_again" | "stop_on_first_tool" | StopAtTools | dict[str, Any] | Callable):
- Tool execution policy passed through to the agents SDK
- reset_tool_choice (bool | None): Whether to reset tool choice after tool calls
- """
- ```
- ### Key Attributes
- - **`files_folder`** (str | Path | None): Local folder for file management and vector stores
- - **`tools_folder`** (str | Path | None): Directory for automatic tool discovery and loading
- - **`schemas_folder`** (str | Path | None): Folder scanned for OpenAPI schemas to auto-generate tools
- - **`api_headers` / `api_params`** (dict): Per-schema metadata applied when generating tools
- - **`description`** (str | None): Agent role description for dynamic send_message tools
- - **`include_search_results`** (bool): Whether FileSearchTool responses include citation context
- - **`include_web_search_sources`** (bool): Whether WebSearchTool responses include source URLs
- - **`validation_attempts`** (int): Retry count for output guardrail enforcement
- - **`raise_input_guardrail_error`** (bool): Controls input guardrail mode—False for non-strict (guidance as assistant), True for strict (raises exceptions).
- - **`handoff_reminder`** (str | None): Custom reminder appended to handoff prompts
- - **`tool_concurrency_manager`** (ToolConcurrencyManager): Coordinates concurrent tool execution
- ### Core Execution Methods
- <CodeGroup>
- ```python get_response
- async def get_response(
- self,
- message: str | list[TResponseInputItem],
- sender_name: str | None = None,
- context_override: dict[str, Any] | None = None,
- hooks_override: RunHooks | None = None,
- run_config_override: RunConfig | None = None,
- file_ids: list[str] | None = None,
- additional_instructions: str | None = None,
- agency_context: AgencyContext | None = None,
- **kwargs: Any,
- ) -> RunResult:
- """
- Run the agent's turn in the conversation loop.
- Parameters:
- message: Input message as string or structured input items list
- sender_name: Name of sending agent (None for user interactions)
- context_override: Optional context data to override default MasterContext values
- hooks_override: Optional hooks to override default agent hooks
- run_config_override: Optional run configuration settings
- file_ids: List of OpenAI file IDs to attach to the message
- additional_instructions: Additional instructions for this run only
- agency_context: Injected AgencyContext (auto-created when running standalone)
- **kwargs: Additional keyword arguments forwarded to the agents SDK (e.g., max_turns)
- Returns:
- RunResult: The complete execution result from the agents SDK
- """
- ```
- ```python get_response_stream
- def get_response_stream(
- self,
- message: str | list[TResponseInputItem],
- sender_name: str | None = None,
- context_override: dict[str, Any] | None = None,
- hooks_override: RunHooks | None = None,
- run_config_override: RunConfig | None = None,
- file_ids: list[str] | None = None,
- additional_instructions: str | None = None,
- agency_context: AgencyContext | None = None,
- **kwargs: Any,
- ) -> StreamingRunResponse:
- """
- Run the agent's turn in streaming mode.
- Parameters:
- message: Input message or list of message items
- sender_name: Name of sending agent (None for user interactions)
- context_override: Optional context data to override default values
- hooks_override: Optional hooks to override default agent hooks
- run_config_override: Optional run configuration
- file_ids: List of OpenAI file IDs to attach to the message
- additional_instructions: Additional instructions for this run only
- agency_context: Injected AgencyContext (auto-created when running standalone)
- **kwargs: Additional keyword arguments forwarded to the agents SDK
- Returns:
- StreamingRunResponse: Async iterable over streamed events with access to the final result
- """
- ```
- </CodeGroup>
- ### Tool Management
- <CodeGroup>
- ```python add_tool
- def add_tool(self, tool: Tool) -> None:
- """
- Add a Tool instance to the agent's list of tools.
- Parameters:
- tool: The agents.Tool instance to add
- Raises:
- TypeError: If tool is not an instance of agents.Tool
- """
- ```
- ```python register_subagent
- def register_subagent(
- self,
- recipient_agent: "Agent",
- send_message_tool_class: type | None = None,
- runtime_state: AgentRuntimeState | None = None,
- ) -> None:
- """
- Register another agent as a subagent for communication.
- Creates a dynamic `send_message_to_<RecipientName>` tool for inter-agent communication.
- Parameters:
- recipient_agent: The Agent instance to register as a recipient
- send_message_tool_class: Optional custom SendMessage override for this pair
- runtime_state: Optional runtime state container injected by the owning Agency
- Raises:
- TypeError: If recipient_agent is not a valid Agent instance
- ValueError: If attempting to register the agent itself as a subagent
- """
- ```
- </CodeGroup>
- ### File Management
- <CodeGroup>
- ```python upload_file
- def upload_file(self, file_path: str, include_in_vector_store: bool = True) -> str:
- """
- Upload a file using the agent's file manager.
- Parameters:
- file_path: Path to the file to upload
- include_in_vector_store: Whether to add file to vector store
- Returns:
- str: File ID of the uploaded file
- Raises:
- RuntimeError: If the agent has no file manager configured
- """
- ```
- </CodeGroup>
|