# a_initiate_group_chat

## `autogen.agentchat.a_initiate_group_chat` async

```python
a_initiate_group_chat(pattern, messages, max_rounds=20)
```

Initialize and run a group chat using a pattern for configuration, asynchronously.

| PARAMETER | DESCRIPTION |
| --- | --- |
| `pattern` | Pattern object that encapsulates the chat configuration.<br>**TYPE:** `Pattern` |
| `messages` | Initial message(s).<br>**TYPE:** `Union[list[dict[str, Any]], str]` |
| `max_rounds` | Maximum number of conversation rounds.<br>**TYPE:** `int` **DEFAULT:** `20` |

| RETURNS | DESCRIPTION |
| --- | --- |
| `ChatResult` | Conversations chat history.<br>**TYPE:** `ChatResult` |
| `ContextVariables` | Updated Context variables.<br>**TYPE:** `ContextVariables` |
| `Agent` | "ConversableAgent": Last speaker. |

Source code in `autogen/agentchat/group/multi_agent_chat.py`

|     |     |
| --- | --- |
| ```<br> 92<br> 93<br> 94<br> 95<br> 96<br> 97<br> 98<br> 99<br>100<br>101<br>102<br>103<br>104<br>105<br>106<br>107<br>108<br>109<br>110<br>111<br>112<br>113<br>114<br>115<br>116<br>117<br>118<br>119<br>120<br>121<br>122<br>123<br>124<br>125<br>126<br>127<br>128<br>129<br>130<br>131<br>132<br>133<br>134<br>135<br>136<br>137<br>138<br>139<br>140<br>141<br>142<br>143<br>144<br>145<br>146<br>147<br>148<br>149<br>150<br>151<br>``` | ```<br>@export_module("autogen.agentchat")<br>async def a_initiate_group_chat(<br>    pattern: "Pattern",<br>    messages: Union[list[dict[str, Any]], str],<br>    max_rounds: int = 20,<br>) -> tuple[ChatResult, ContextVariables, "Agent"]:<br>    """Initialize and run a group chat using a pattern for configuration, asynchronously.<br>    Args:<br>        pattern: Pattern object that encapsulates the chat configuration.<br>        messages: Initial message(s).<br>        max_rounds: Maximum number of conversation rounds.<br>    Returns:<br>        ChatResult:         Conversations chat history.<br>        ContextVariables:   Updated Context variables.<br>        "ConversableAgent":   Last speaker.<br>    """<br>    # Let the pattern prepare the group chat and all its components<br>    # Only passing the necessary parameters that aren't already in the pattern<br>    (<br>        _,  # agents,<br>        _,  # wrapped_agents,<br>        _,  # user_agent,<br>        context_variables,<br>        _,  # initial_agent,<br>        _,  # group_after_work,<br>        _,  # tool_execution,<br>        _,  # groupchat,<br>        manager,<br>        processed_messages,<br>        last_agent,<br>        _,  # group_agent_names,<br>        _,  # temp_user_list,<br>    ) = pattern.prepare_group_chat(<br>        max_rounds=max_rounds,<br>        messages=messages,<br>    )<br>    # Start or resume the conversation<br>    if len(processed_messages) > 1:<br>        last_agent, last_message = await manager.a_resume(messages=processed_messages)<br>        clear_history = False<br>    else:<br>        last_message = processed_messages[0]<br>        clear_history = True<br>    if last_agent is None:<br>        raise ValueError("No agent selected to start the conversation")<br>    chat_result = await last_agent.a_initiate_chat(<br>        manager,<br>        message=last_message,  # type: ignore[arg-type]<br>        clear_history=clear_history,<br>        summary_method=pattern.summary_method,<br>    )<br>    cleanup_temp_user_messages(chat_result)<br>    return chat_result, context_variables, manager.last_speaker<br>```
