# 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>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>1031<br>1032<br>1033<br>1034<br>1035<br>1036<br>1037<br>1038<br>1039<br>1040<br>1041<br>1042<br>1043<br>1044<br>1045<br>1046<br>1047<br>1048<br>1049<br>1050<br>1051<br>1052<br>1053<br>1054<br>1055<br>1056<br>1057<br>1058<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[dict[str, Any]] = 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):  # type: ignore[arg-type]<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>                response._summary = chat_result.summary<br>                response._messages = chat_result.chat_history<br>                response._context_variables = returned_context_variables<br>                response._last_speaker = last_speaker<br>                response.cost = chat_result.cost  # type: ignore[assignment]<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>```
