Pick SelectorGroupChat when the next speaker depends on what was just said; RoundRobin is for fixed-order pipelines, Magentic-One is a preset, and a single agent is not a team.
Imagine a small newsroom with a researcher, a writer, and a fact-checker. Round-robin is like passing a microphone in a fixed circle, no matter who actually has something useful to add. Selector mode is a smart host who listens to the room and then says, 'Researcher, you go next, that question needs a source.' Magentic-One is more like ordering a ready-made TV crew, you get a generalist team out of the box but you cannot swap members easily. And a single agent on its own is just one person trying to do every job, which works for simple tasks but stalls when the work has several distinct kinds of thinking.
Concept explanation~2 min read
Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example. Click to expand.
Concept explanation~2 min read
Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example. Click to expand.
AutoGen 0.4 reorganised the framework around a small set of group chat orchestrators. The choice between them is the load bearing architectural decision for any multi agent project on AutoGen, because the orchestrator decides who speaks next on every turn, and the team's behaviour follows from that single primitive.
This question puts four candidates side by side because they represent four distinct routing philosophies. Understanding the difference is the difference between a team that flows and a team that wastes turns.
RoundRobinGroupChat: routing as a fixed cycle
RoundRobinGroupChat is the simplest orchestrator AutoGen ships. It holds a list of agents and rotates through them by index. Turn one is agent zero, turn two is agent one, and so on, wrapping at the end.
This is exactly the right primitive when the interaction shape is known at design time and stable across tasks. A two agent draft and critique loop, where the writer always speaks first and the critic always speaks second, fits RoundRobin perfectly. So does a fixed pipeline of three roles with no branching.
Where it breaks
The failure mode is content insensitive routing. In an analyst team with researcher, writer, and fact checker, every task starts with a research phase, but the length of that phase varies. RoundRobin will hand the second turn to the writer regardless of whether the researcher has gathered enough facts. The writer either drafts from incomplete data or burns a turn saying 'I need more research.'
The cost shape is the cleanest of any orchestrator (no per turn routing inference), which makes RoundRobin the cheapest team when it fits. The trap is reaching for it because of that cheapness when the workflow actually needs adaptive routing.
Situations where this technique stops working.
2–4 min · Everything important, quickly.
from autogen_agentchat.teams import SelectorGroupChat
from autogen_agentchat.agents import AssistantAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient
worker_model = OpenAIChatCompletionClient(model="gpt-5.5")
router_model = OpenAIChatCompletionClient(model="gpt-5-mini")
researcher = AssistantAgent("researcher", model_client=worker_model,
system_message="Gather facts. Cite sources. Stop when you have evidence.")
writer = AssistantAgent("writer", model_client=worker_model,
system_message="Write a 200 word analyst note from the gathered facts.")
reviewer = AssistantAgent("reviewer", model_client=worker_model,
system_message="Critique the note. Return APPROVED or list fixes.")
team = SelectorGroupChat(
[researcher, writer, reviewer],
model_client=router_model,
selector_prompt="Pick the agent whose job matches the current need.",
max_turns=10,
)
await team.run(task="Write a one paragraph note on 2026 frontier model pricing.")| Orchestrator | Routing | Use when |
|---|---|---|
| RoundRobinGroupChat | Fixed index cycle | Order known at design time and stable across tasks |
| SelectorGroupChat | LLM call per turn over transcript | Next speaker depends on what was just said |
| MagenticOneGroupChat | Preset agent team, internal orchestrator | Problem fits the Magentic-One recipe out of the box |
| ChatCompletionAgent | Single agent, no orchestrator | Task fits one agent with tools, no team needed |
Real products, models, and research that use this idea.
- Microsoft Research's AutoGen 0.4 release introduced SelectorGroupChat as the canonical content-aware orchestrator, alongside RoundRobinGroupChat and the Magentic-One preset team for the GAIA benchmark.
- Analyst-team templates shipped in AutoGen Studio 2026 use SelectorGroupChat for the 'researcher and writer and reviewer' starter, exactly because the right next speaker depends on the live message.
What an interviewer would ask next. Try answering before peeking at the approach.
QHow would you make the SelectorGroupChat deterministic for replay in tests?
Replace the selector LLM call with a callable that consults a recorded transcript, or pin the selector model with temperature zero and seed; both eliminate the non determinism that breaks goldens.
Red flags & common mistakes
The phrases that signal junior thinking. Click to expand.
Red flags & common mistakes
The phrases that signal junior thinking. Click to expand.
Defaulting to RoundRobinGroupChat for any analyst-team workflow because it is the simplest orchestrator, then watching the fact-checker speak on turns where there is nothing yet to fact-check.
60 second bullets to scan on the way to the call.
The four AutoGen 0.4 orchestration choices and the routing model each one assumes
What the selector LLM call actually consumes and returns on each turn
Primary sources. Browse if you want the original framing.
Same topic, related formats. Practice these next.