AG2 (AutoGen) — Multi-Agent Conversation Framework
SkillAI & modelsYou are an expert in AG2 (formerly AutoGen), the open-source multi-agent conversation framework. You help developers build systems where multiple AI agents collaborate through structured conversations — with tool use, human-in-the-loop, code execution, group chat orchestration, and nested conversations — for complex tasks like software development, research, and data analysis.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the AG2 (AutoGen) — Multi-Agent Conversation Framework skill
What this skill tells your AI
The instructions your AI receives, as published by terminalskills/skills in skills/ag2/SKILL.md and read by ahel’s review.
You are an expert in AG2 (formerly AutoGen), the open-source multi-agent conversation framework. You help developers build systems where multiple AI agents collaborate through structured conversations — with tool use, human-in-the-loop, code execution, group chat orchestration, and nested conversations — for complex tasks like software development, research, and data analysis.
Core Capabilities
Two-Agent Conversation
from autogen import ConversableAgent, UserProxyAgent
# AI assistant agent
assistant = ConversableAgent(
name="Engineer",
system_message="""You are a senior software engineer.
Write clean, tested Python code. Explain your design decisions.""",
llm_config={"model": "gpt-4o", "temperature": 0.2},
)
# Human proxy (can auto-approve or require human input)
user_proxy = UserProxyAgent(
name="User",
human_input_mode="NEVER", # NEVER / ALWAYS / TERMINATE
max_consecutive_auto_reply=10,
is_termination_msg=lambda msg: "TERMINATE" in msg.get("content", ""),
code_execution_config={
"work_dir": "workspace",
"use_docker": True, # Safe code execution in Docker
},
)
# Start conversation — agents talk until task is complete
result = user_proxy.initiate_chat(
assistant,
message="Create a FastAPI app with user authentication using JWT. Include tests.",
)
# Engineer writes code → User proxy executes → Engineer reviews output → iterates
Group Chat (Multiple Agents)
from autogen import GroupChat, GroupChatManager
# Specialist agents
architect = ConversableAgent(
name="Architect",
system_message="You design system architecture. Focus on scalability, reliability, and clean interfaces.",
llm_config={"model": "gpt-4o"},
)
developer = ConversableAgent(
name="Developer",
system_message="You implement features based on the architect's design. Write production-quality code.",
llm_config={"model": "gpt-4o"},
)
reviewer = ConversableAgent(
name="Reviewer",
system_message="You review code for bugs, security issues, and best practices. Be thorough but constructive.",
llm_config={"model": "gpt-4o"},
)
tester = ConversableAgent(
name="Tester",
system_message="You write comprehensive tests. Cover edge cases and integration scenarios.",
llm_config={"model": "gpt-4o"},
)
# Group chat with round-robin or AI-selected speaker
group_chat = GroupChat(
agents=[user_proxy, architect, developer, reviewer, tester],
messages=[],
max_round=20,
speaker_selection_method="auto", # LLM picks next speaker based on context
)
manager = GroupChatManager(groupchat=group_chat, llm_config={"model": "gpt-4o"})
user_proxy.initiate_chat(
manager,
message="Build a real-time notification service with WebSocket support, Redis pub/sub, and rate limiting.",
)
# Architect designs → Developer implements → Reviewer catches issues → Developer fixes → Tester adds tests
Tool Use
from autogen import register_function
def search_codebase(query: str, file_pattern: str = "*.py") -> str:
"""Search the codebase for specific patterns.
Args:
query: Search query (regex supported)
file_pattern: File glob pattern to search in
"""
import subprocess
result = subprocess.run(["grep", "-rn", query, "--include", file_pattern, "."],
capture_output=True, text=True)
return result.stdout[:2000]
def run_tests(test_path: str = "tests/") -> str:
"""Run pytest on the specified test directory.
Args:
test_path: Path to test files or directory
"""
import subprocess
result = subprocess.run(["python", "-m", "pytest", test_path, "-v", "--tb=short"],
capture_output=True, text=True)
return f"STDOUT:\n{result.stdout}\nSTDERR:\n{result.stderr}"
# Register tools for specific agents
register_function(search_codebase, caller=developer, executor=user_proxy,
description="Search the codebase for code patterns")
register_function(run_tests, caller=tester, executor=user_proxy,
description="Run tests to verify code correctness")
Installation
pip install ag2 # Or: pip install pyautogen
Best Practices
- Clear system messages — Define each agent's role precisely; vague instructions lead to unfocused conversations
- Speaker selection — Use
autofor LLM-selected speakers in group chat;round_robinfor predictable flow - Termination conditions — Set
is_termination_msgandmax_consecutive_auto_reply; prevent infinite loops - Docker for code execution — Enable
use_docker: Truefor safe code execution; agents can run untrusted code - Human-in-the-loop — Use
TERMINATEmode for approval on critical actions;NEVERfor fully autonomous - Tool registration — Register tools with specific caller/executor pairs; not every agent needs every tool
- Nested chats — Use nested conversations for sub-tasks; agent can spawn a side conversation and return results
- Cost control — Set
max_roundandmax_consecutive_auto_reply; monitor token usage in group chats
Signals
- GitHub stars
- 150
- Forks
- 19
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
ag2- Source
- github.com/terminalskills/skills