Architectures where multiple specialized AI agents collaborate, compete, or coordinate to solve complex problems that exceed a single agent's capability.
A multi-agent system is an architecture where multiple specialized AI agents work together to solve complex problems. Each agent has a specific role, tools, and knowledge, and they coordinate through defined communication patterns.
The idea isn't new — it comes from distributed systems research in the 90s — but LLMs have revitalized it by making agents that communicate in natural language possible.
A main agent delegates tasks to specialized agents:
Orchestrator
├── Research agent
├── Code agent
└── Review agent
Advantage: clear control. Disadvantage: bottleneck at the orchestrator.
Autonomous agents that pass control to each other based on rules:
Agent A → (condition) → Agent B → (condition) → Agent C
Advantage: flexible, decentralized. Disadvantage: hard to debug.
Multiple agents propose solutions and a judge selects the best:
Agent 1 → Proposal
Agent 2 → Proposal → Judge → Best solution
Agent 3 → Proposal
Agents connected in a directed graph with conditional flows:
Input → Classifier → [Route A: Agent 1 → Agent 2]
→ [Route B: Agent 3]
→ Synthesizer → Output
The agents-as-tools pattern turns each specialized agent into a tool the orchestrator can invoke. With Strands Agents:
from strands import Agent
from strands.models.bedrock import BedrockModel
# Specialized agents
researcher = Agent(
model=BedrockModel(model_id="anthropic.claude-sonnet-4-20250514"),
system_prompt="You are a researcher. Find precise technical information.",
tools=[web_search, arxiv_search],
)
reviewer = Agent(
model=BedrockModel(model_id="anthropic.claude-sonnet-4-20250514"),
system_prompt="You are a technical reviewer. Verify claims and detect errors.",
tools=[fact_check],
)
# Orchestrator that uses agents as tools
orchestrator = Agent(
model=BedrockModel(model_id="anthropic.claude-sonnet-4-20250514"),
system_prompt=(
"You coordinate a team of agents. "
"Use 'researcher' to find information and 'reviewer' to verify it."
),
tools=[researcher.as_tool(), reviewer.as_tool()],
)
result = orchestrator("Research prompt caching best practices and verify the data")Each agent maintains its own context and tools. The orchestrator decides when to invoke each one based on the task.
| Framework | Focus | Primary topology |
|---|---|---|
| Strands Agents | Agents-as-tools, graph, swarm | Orchestrator + graph |
| CrewAI | Structured roles and tasks | Orchestrator |
| AutoGen | Multi-agent conversations | Swarm |
| LangGraph | State graphs with agents | Graph |
Multi-agent systems introduce failure modes that don't exist in individual agents:
| Failure | Cause | Recovery |
|---|---|---|
| Error cascade | One agent fails and dependents follow | Circuit breaker per agent, fallback to partial response |
| Deadlock | Two agents waiting for each other's response | Timeouts per interaction, cycle detection |
| Divergence | Agents produce contradictory results | Judge agent that resolves conflicts, majority voting |
| Cost explosion | Agents invoking each other recursively | Depth limit, token budget per task |
| Context drift | Shared context degrades between iterations | Periodic state summary, checkpoints |
Multi-agent system cost grows multiplicatively:
Cost ≈ N_agents × avg_tokens_per_agent × price_per_token × iterations
An orchestrator with 3 specialized agents doing 2 iterations each consumes roughly 6-8x more tokens than a single agent solving the same task. The key question: does the quality improvement justify the additional cost?
Strategies to control costs:
| Criterion | Single agent | Multi-agent |
|---|---|---|
| Homogeneous task | ✓ | Overkill |
| Multiple expertise domains | Insufficient context | ✓ |
| Need for cross-verification | Not possible | ✓ |
| Limited token budget | ✓ | Expensive |
| Independent subtasks | Sequential | ✓ (parallel) |
Multi-agent systems allow decomposing complex tasks into specialized subtasks, where each agent has its own context, tools, and model. But they are not the default solution — a single well-configured agent solves most problems. Multi-agent is justified when the task genuinely requires diverse expertise, cross-verification, or parallel processing of independent subtasks.
Autonomous systems that combine language models with reasoning, memory, and tool use to execute complex multi-step tasks with minimal human intervention.
Open source SDK from AWS for building AI agents with a model-driven approach. Functional agents in a few lines of code, with multi-model support, custom tools, MCP, multi-agent, and built-in observability.
Design patterns where AI agents execute complex multi-step tasks autonomously, combining reasoning, tool use, and iterative decision-making.
Patterns and frameworks for coordinating multiple AI models, tools, and data sources in production pipelines, managing flow between components, memory, and error recovery.
Three-agent system that automates the bilingual MDX content lifecycle: deterministic QA auditing, surgical fixes, and full upgrades — all orchestrated with Strands Agents, Claude Sonnet 4 on Amazon Bedrock, and GitHub Actions with a diamond workflow pattern.