Event-Driven, Async-First, And Yes It's A Whole New API
If you've been living under a rock, Microsoft just shipped AutoGen v0.4 and the internet collectively lost its mind because they rewrote the entire thing. v0.2 was a glorified asyncio.Queue with a manager loop. v0.4 is a real event-driven runtime. The architecture finally makes sense and the API barely resembles the old one.
The Setup
The big idea: agents are independent actors that exchange messages over a runtime. No more "chat manager" doing everything. Each agent has a typed inbox, the runtime handles routing, and you compose teams declaratively.
pip install "autogen-agentchat" "autogen-ext[openai]"The Money Pattern
You define agents, you put them in a team, you call run_stream. The runtime handles turn-taking, termination, and message passing. It's not magic but it's finally not spaghetti.
import asyncio
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_agentchat.conditions import MaxMessageTermination
from autogen_ext.models.openai import OpenAIChatCompletionClient
async def main():
client = OpenAIChatCompletionClient(model="gpt-5")
planner = AssistantAgent("planner", model_client=client,
system_message="Break the task into 3 concrete steps.")
coder = AssistantAgent("coder", model_client=client,
system_message="Write Python for each step.")
team = RoundRobinGroupChat(
[planner, coder],
termination_condition=MaxMessageTermination(6),
)
async for msg in team.run_stream(task="Build a CSV deduper."):
print(msg)
asyncio.run(main())The Catch
Migration from v0.2 is genuinely painful. The class names changed, the lifecycle changed, the imports moved. There's a v0.2 compatibility shim but it's a temporary bridge, not a destination. Docs are still catching up — you'll be reading source half the time. This is fine if you're greenfield. Less fine if you have a production v0.2 system.
The Verdict
AutoGen v0.4 just got a glow-up and it's the first version I'd actually use in production. The event-driven core means you can scale it horizontally and reason about agent behaviour in isolation. If you're starting an agentic project this quarter, start here. If you have v0.2 in prod, schedule a migration sprint and don't @ me when it slips.