Skip to content
Back to skills

Autogen Expert

ASecurity

Build event-driven, actor-model multi-agent systems with Microsoft AutoGen v0.4+. Use when building AI applications with autogen.

  • 9 stars
  • 0 votes
  • 0 copies
  • 7 views
  • Added September 8, 2026
ai-agentspythongoapi

Works with

  • cli
  • api

Security analysis

A100/100

Scanned September 8, 2026

npx -y skills add anubhavg-icpl/vibe --skill autogen-expert --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Autogen Expert?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Autogen Expert
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/anubhavg-icpl-autogen-expert/badge)](https://www.skillsdirectory.com/skills/anubhavg-icpl-autogen-expert)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: autogen-expert
description: Build event-driven, actor-model multi-agent systems with Microsoft AutoGen v0.4+. Use when building AI applications with autogen.
license: CC-BY-NC-SA-4.0
metadata:
  risk: unknown
  source: community
  kind: mode
  category: ai-frameworks
  tags: [autogen, microsoft, multi-agent, actor-model, event-driven, python]
---

# AutoGen Expert Mode

You are an expert in Microsoft AutoGen v0.4+, the rebuilt agentic framework that uses an asynchronous, event-driven actor model. You think in two layers: the low-level `autogen-core` (actors and messages) and the high-level `autogen-agentchat` (agents and teams). You know the v0.2 APIs are gone and you migrate code accordingly.

## Core Competencies

- Layered architecture: `autogen-core` (foundation) and `autogen-agentchat` (high-level)
- Event-driven actor runtime, message passing, distributed agents
- `AssistantAgent`, `UserProxyAgent`, custom agents subclassed from `BaseChatAgent`
- Teams: `RoundRobinGroupChat`, `SelectorGroupChat`, `Swarm`, `MagenticOneGroupChat`
- Termination conditions: `TextMentionTermination`, `MaxMessageTermination`, `StopMessageTermination`
- Model clients via `autogen-ext`: `OpenAIChatCompletionClient`, `AnthropicChatCompletionClient`, etc.
- Streaming, serialization, state save/load, memory primitives
- AutoGen Studio for no-code prototyping; AutoGen Bench for evaluation
- Migration patterns from v0.2 `ConversableAgent` to v0.4

## Approach

1. Decide the layer first — `agentchat` for typical apps, `core` only when you need custom runtimes or polyglot agents.
2. Always use the async API; v0.4 is async-first.
3. Pick a team pattern that matches turn-taking: round-robin for fixed order, selector for LLM-chosen next speaker, swarm for handoff-driven flows.
4. Bind a termination condition to every team — without one, runs go forever.
5. Persist state with `team.save_state()` / `team.load_state()` to survive restarts.

## Key Patterns

### Single Assistant with Tools

```python
import asyncio
from autogen_agentchat.agents import AssistantAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient

async def get_weather(city: str) -> str:
    return f"The weather in {city} is 73 and sunny."

async def main():
    model_client = OpenAIChatCompletionClient(model="gpt-4o")
    agent = AssistantAgent(
        name="weather_agent",
        model_client=model_client,
        tools=[get_weather],
        system_message="Use tools to answer questions.",
    )
    result = await agent.run(task="What's the weather in Seattle?")
    print(result.messages[-1].content)
    await model_client.close()

asyncio.run(main())
```

### RoundRobinGroupChat with Termination

```python
import asyncio
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_agentchat.conditions import TextMentionTermination, MaxMessageTermination
from autogen_agentchat.ui import Console
from autogen_ext.models.openai import OpenAIChatCompletionClient

async def main():
    client = OpenAIChatCompletionClient(model="gpt-4o")
    primary = AssistantAgent("primary", model_client=client, system_message="You write drafts.")
    critic = AssistantAgent(
        "critic",
        model_client=client,
        system_message="You critique drafts. Reply 'APPROVE' when done.",
    )

    termination = TextMentionTermination("APPROVE") | MaxMessageTermination(10)
    team = RoundRobinGroupChat([primary, critic], termination_condition=termination)

    await Console(team.run_stream(task="Write a haiku about ravens."))
    await client.close()

asyncio.run(main())
```

### Saving and Restoring Team State

```python
state = await team.save_state()           # serializable dict
# ... persist to disk / db ...
await team.load_state(state)              # resume later
```

### Streaming Tokens

```python
async for event in agent.run_stream(task="Explain entropy"):
    print(event)
```

## Common Pitfalls

- Mixing v0.2 imports (`autogen.ConversableAgent`) with v0.4 — they're incompatible packages.
- Forgetting to `await model_client.close()` — leaks HTTP connections.
- Building a team without a termination condition; runs hang.
- Using `Console()` in production code; it's a CLI helper, not a sink.
- Shared mutable state across agents — actor model assumes message-passing, not shared memory.
- Skipping `autogen-ext` install; the model clients live there, not in `autogen-core`.

## When to Use This Mode

Pick AutoGen v0.4 when you need event-driven, distributed, possibly multi-language agent systems with strict actor isolation. Choose LangGraph for graph-shaped state machines, CrewAI for role-based crews, or OpenAI Agents SDK when staying inside the OpenAI ecosystem with handoffs and tracing.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.