# run_swarm

## `autogen.run_swarm`

```python
run_swarm(initial_agent, messages, agents, user_agent=None, swarm_manager_args=None, max_rounds=20, context_variables=None, after_work=TERMINATE, exclude_transit_message=True)
```

Source code in `autogen/agentchat/contrib/swarm_agent.py`

|     |     |
| --- | --- |
| ```<br> 974<br> 975<br> 976<br> 977<br> 978<br> 979<br> 980<br> 981<br> 982<br> 983<br> 984<br> 985<br> 986<br> 987<br> 988<br> 989<br> 990<br> 991<br> 992<br> 993<br> 994<br> 995<br> 996<br> 997<br> 998<br> 999<br>1000<br>1001<br>1002<br>1003<br>1004<br>1005<br>1006<br>1007<br>1008<br>1009<br>1010<br>1011<br>1012<br>1013<br>1014<br>1015<br>1016<br>1017<br>1018<br>1019<br>1020<br>1021<br>1022<br>1023<br>1024<br>1025<br>1026<br>1027<br>1028<br>1029<br>1030<br>``` | ```<br>@export_module("autogen")<br>def run_swarm(<br>    initial_agent: ConversableAgent,<br>    messages: Union[list[dict[str, Any]], str],<br>    agents: list[ConversableAgent],<br>    user_agent: Optional[UserProxyAgent] = None,<br>    swarm_manager_args: Optional[dict[str, Any]] = None,<br>    max_rounds: int = 20,<br>    context_variables: Optional[ContextVariables] = None,<br>    after_work: Optional[<br>        Union[<br>            AfterWorkOption,<br>            Callable[<br>                [ConversableAgent, list[dict[str, Any]], GroupChat], Union[AfterWorkOption, ConversableAgent, str]<br>            ],<br>        ]<br>    ] = AfterWorkOption.TERMINATE,<br>    exclude_transit_message: bool = True,<br>) -> RunResponseProtocol:<br>    iostream = ThreadIOStream()<br>    response = RunResponse(iostream)<br>    def stream_run(<br>        iostream: ThreadIOStream = iostream,<br>        response: RunResponse = response,<br>    ) -> None:<br>        with IOStream.set_default(iostream):<br>            try:<br>                chat_result, returned_context_variables, last_speaker = initiate_swarm_chat(<br>                    initial_agent=initial_agent,<br>                    messages=messages,<br>                    agents=agents,<br>                    user_agent=user_agent,<br>                    swarm_manager_args=swarm_manager_args,<br>                    max_rounds=max_rounds,<br>                    context_variables=context_variables,<br>                    after_work=after_work,<br>                    exclude_transit_message=exclude_transit_message,<br>                )<br>                IOStream.get_default().send(<br>                    RunCompletionEvent(  # type: ignore[call-arg]<br>                        history=chat_result.chat_history,<br>                        summary=chat_result.summary,<br>                        cost=chat_result.cost,<br>                        last_speaker=last_speaker.name,<br>                        context_variables=returned_context_variables,<br>                    )<br>                )<br>            except Exception as e:<br>                response.iostream.send(ErrorEvent(error=e))  # type: ignore[call-arg]<br>    threading.Thread(<br>        target=stream_run,<br>    ).start()<br>    return response<br>```

Back to top
