# a_run_swarm

## ``autogen.a_run_swarm`async`[

```
a_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>1119<br>1120<br>1121<br>1122<br>1123<br>1124<br>1125<br>1126<br>1127<br>1128<br>1129<br>1130<br>1131<br>1132<br>1133<br>1134<br>1135<br>1136<br>1137<br>1138<br>1139<br>1140<br>1141<br>1142<br>1143<br>1144<br>1145<br>1146<br>1147<br>1148<br>1149<br>1150<br>1151<br>1152<br>1153<br>1154<br>1155<br>1156<br>1157<br>1158<br>1159<br>1160<br>1161<br>1162<br>1163<br>1164<br>1165<br>1166<br>1167<br>1168<br>1169<br>``` | ```<br>@export_module("autogen")<br>async def a_run_swarm(<br>    initial_agent: ConversableAgent,<br>    messages: list[dict[str, Any]] | str,<br>    agents: list[ConversableAgent],<br>    user_agent: UserProxyAgent | None = None,<br>    swarm_manager_args: dict[str, Any] | None = None,<br>    max_rounds: int = 20,<br>    context_variables: ContextVariables | None = None,<br>    after_work: AfterWorkOption<br>    | Callable[[ConversableAgent, list[dict[str, Any]], GroupChat], AfterWorkOption | ConversableAgent | str]<br>    | None = AfterWorkOption.TERMINATE,<br>    exclude_transit_message: bool = True,<br>) -> AsyncRunResponseProtocol:<br>    iostream = AsyncThreadIOStream()<br>    response = AsyncRunResponse(iostream, agents)  # type: ignore[arg-type]<br>    async def stream_run(<br>        iostream: AsyncThreadIOStream = iostream,<br>        response: AsyncRunResponse = response,<br>    ) -> None:<br>        with IOStream.set_default(iostream):<br>            try:<br>                chat_result, returned_context_variables, last_speaker = await a_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>    task = asyncio.create_task(stream_run())<br>    # prevent the task from being garbage collected<br>    response._task_ref = task  # type: ignore[attr-defined]<br>    return response<br>``` |
