1. Overview
OpenAI’s Swarm is an experimental, educational framework designed to explore ergonomic, lightweight multi-agent orchestration. It focuses on making agent coordination and execution lightweight, highly controllable, and easily testable. Swarm is not intended for production use but serves as a valuable educational resource for developers interested in multi-agent systems.
Key features:
- Powered by the Chat Completions API
- Stateless between calls
- Runs primarily on the client-side
- Suitable for scenarios with many independent capabilities and complex instructions
2. Core Concepts
2.1 Agents
Agents are the primary actors in the framework. Each agent encapsulates:
- A set of instructions
- A set of functions (tools)
- The capability to hand off a conversation to another agent
Agents can represent specific workflows, tasks, or personas.
2.2 Handoffs
Handoffs allow seamless transitions between different agents during a conversation, enabling:
- Specialization of agents for specific tasks
- Dynamic routing of user queries
- Escalation to other agents when necessary
2.3 Functions
Functions are tools that agents can use to perform specific tasks. They can:
- Return string values
- Update context variables
- Initiate handoffs to other agents
2.4 Context Variables
Additional data that can be passed to and updated by agents and functions throughout the conversation.
3. Architecture
graph TD User[User] -->|Interacts with| Swarm[Swarm Client] Swarm -->|Manages| Agent1[Agent 1] Swarm -->|Manages| Agent2[Agent 2] Swarm -->|Manages| AgentN[Agent N] Agent1 -->|Executes| Functions1[Functions] Agent2 -->|Executes| Functions2[Functions] AgentN -->|Executes| FunctionsN[Functions] Agent1 -->|Handoff| Agent2 Agent2 -->|Handoff| AgentN AgentN -->|Handoff| Agent1 Swarm -->|Uses| GPT4[GPT-4 Model] Swarm -->|Manages| CV[Context Variables]
4. Key Components
4.1 Swarm Client
The main interface for running conversations and managing agents.
from swarm import Swarm
client = Swarm()
client.run()
Core method for executing conversations:
- Get a completion from the current Agent
- Execute tool calls and append results
- Switch Agent if necessary
- Update context variables, if necessary
- If no new function calls, return
Arguments:
agent
: The initial agent to be called (required)messages
: List of message objects (required)context_variables
: Dictionary of additional context variablesmax_turns
: Maximum number of conversational turns allowedmodel_override
: Optional string to override the agent’s modelexecute_tools
: If False, interrupts execution on function callsstream
: Enables streaming responses if Truedebug
: Enables debug logging if True
Returns a Response
object containing:
messages
: List of generated message objectsagent
: The last agent to handle a messagecontext_variables
: Updated context variables
4.2 Agent
Represents a specific capability or persona in the system.
Fields:
name
: Name of the agentmodel
: The model to be used (default: “gpt-4o”)instructions
: String or function returning instructionsfunctions
: List of callable functionstool_choice
: The tool choice for the agent, if any
4.3 Functions
Python functions that agents can call. They should:
- Usually return a string
- Can return an Agent for handoffs
- Can access context variables if defined as a parameter
4.4 Handoffs
Implemented by returning an Agent object from a function.
4.5 Context Variables
A dictionary of data accessible to agents and functions, which can be updated throughout the conversation.
5. Function Schemas
Swarm automatically converts Python functions into JSON schemas for the Chat Completions API:
- Docstrings become function descriptions
- Parameters without defaults are set as required
- Type hints are mapped to parameter types
6. Streaming
Swarm supports streaming responses, similar to the Chat Completions API, with additional event types:
{"delim":"start"}
and{"delim":"end"}
to signal agent handling{"response": Response}
returning the complete Response object
7. Evaluation
While Swarm doesn’t provide built-in evaluation tools, it encourages developers to implement their own evaluation suites. Examples are provided in the airline
, weather_agent
, and triage_agent
quickstart examples.
8. Utilities
Swarm includes a run_demo_loop
function for testing swarms via a command-line REPL interface.
from swarm.repl import run_demo_loop
run_demo_loop(agent, stream=True)
9. Advantages
- Flexibility: Easily adapt to various conversation flows
- Specialization: Agents can be optimized for specific tasks
- Scalability: New agents and functions can be added as needed
- Lightweight: Minimal overhead in implementation
- Educational: Provides insights into multi-agent system design
10. Limitations
- Experimental: Not intended for production use
- No Built-in State Management: Stateless between calls, unlike the Assistants API
- Limited Official Support: As an educational tool, it doesn’t receive the same level of support as production APIs
By leveraging Swarm’s primitives of Agents and handoffs, developers can create flexible and powerful multi-agent systems for various applications while maintaining a simple and intuitive interface.