| name | ag2 |
| description | 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. |
| license | Apache-2.0 |
| compatibility | |
| metadata | {"author":"terminal-skills","version":"1.0.0","category":"AI & Machine Learning","tags":["multi-agent","conversation","autogen","microsoft","orchestration","python"]} |
AG2 (AutoGen) — Multi-Agent Conversation Framework
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
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},
)
user_proxy = UserProxyAgent(
name="User",
human_input_mode="NEVER",
max_consecutive_auto_reply=10,
is_termination_msg=lambda msg: "TERMINATE" in msg.get("content", ""),
code_execution_config={
"work_dir": "workspace",
"use_docker": True,
},
)
result = user_proxy.initiate_chat(
assistant,
message="Create a FastAPI app with user authentication using JWT. Include tests.",
)
Group Chat (Multiple Agents)
from autogen import GroupChat, GroupChatManager
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 = GroupChat(
agents=[user_proxy, architect, developer, reviewer, tester],
messages=[],
max_round=20,
speaker_selection_method="auto",
)
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.",
)
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_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
Best Practices
- Clear system messages — Define each agent's role precisely; vague instructions lead to unfocused conversations
- Speaker selection — Use
auto for LLM-selected speakers in group chat; round_robin for predictable flow
- Termination conditions — Set
is_termination_msg and max_consecutive_auto_reply; prevent infinite loops
- Docker for code execution — Enable
use_docker: True for safe code execution; agents can run untrusted code
- Human-in-the-loop — Use
TERMINATE mode for approval on critical actions; NEVER for 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_round and max_consecutive_auto_reply; monitor token usage in group chats