Sub-Agents
Intelligent task delegation with specialized agents working in coordination
Overview#
Sub-Agents enable sophisticated multi-agent coordination where a main agent intelligently delegates tasks to specialized sub-agents. Each sub-agent has its own expertise, capabilities, and role, working together to complete complex workflows that would be challenging for a single agent.
New: Sub-Agents now integrate seamlessly with Graph workflows, enabling hierarchical task distribution across complex workflow orchestration systems.
Creating Sub-Agents#
Sub-agents are created independently and then attached to a main coordinator agent:
import { Agent } from '@astreus-ai/astreus';
// Create specialized sub-agents
const researcher = await Agent.create({
name: 'ResearcherBot',
model: 'gpt-4o',
systemPrompt: 'You are an expert researcher who gathers and analyzes information thoroughly.',
memory: true,
knowledge: true
});
const writer = await Agent.create({
name: 'WriterBot',
model: 'gpt-4o',
systemPrompt: 'You are a skilled content writer who creates engaging, well-structured content.',
vision: true
});
const analyst = await Agent.create({
name: 'AnalystBot',
model: 'gpt-4o',
systemPrompt: 'You are a data analyst who provides insights and recommendations.',
useTools: true
});
// Create main agent with sub-agents
const mainAgent = await Agent.create({
name: 'CoordinatorAgent',
model: 'gpt-4o',
systemPrompt: 'You coordinate complex tasks between specialized sub-agents.',
subAgents: [researcher, writer, analyst]
});Delegation Strategies#
Auto Delegation#
The main agent uses LLM intelligence to analyze tasks and assign them optimally:
const result = await mainAgent.ask(
'Research AI market trends, analyze the data, and write an executive summary',
{
useSubAgents: true,
delegation: 'auto' // AI-powered task distribution
}
);Task Analysis#
Main agent analyzes the complex task using LLM reasoning.
Agent Matching#
Evaluates each sub-agent's capabilities and specializations.
Optimal Assignment#
Creates specific subtasks for the most appropriate agents.
Coordinated Execution#
Manages execution flow and result aggregation.
Manual Delegation#
Explicitly assign specific tasks to specific agents using their IDs:
const result = await mainAgent.ask(
'Complex multi-step project',
{
useSubAgents: true,
delegation: 'manual',
taskAssignment: {
[researcher.id]: 'Research market opportunities in healthcare AI',
[analyst.id]: 'Analyze market size and growth potential',
[writer.id]: 'Create executive summary with recommendations'
}
}
);Sequential Delegation#
Sub-agents work in sequence, building on previous results:
const result = await mainAgent.ask(
'Create a comprehensive business plan for an AI startup',
{
useSubAgents: true,
delegation: 'sequential' // Each agent builds on the previous work
}
);Coordination Patterns#
Parallel Execution#
Sub-agents work simultaneously for maximum efficiency:
const result = await mainAgent.ask(
'Multi-faceted analysis task',
{
useSubAgents: true,
delegation: 'auto',
coordination: 'parallel' // All agents work concurrently
}
);Sequential Execution#
Sub-agents work in order with context passing:
const result = await mainAgent.ask(
'Research → Analyze → Report workflow',
{
useSubAgents: true,
delegation: 'auto',
coordination: 'sequential' // Agents work in dependency order
}
);Sub-Agent Configuration#
Specialized Roles#
Configure sub-agents for specific expertise areas:
// Research Specialist
const researcher = await Agent.create({
name: 'ResearchSpecialist',
systemPrompt: 'You conduct thorough research using multiple sources and methodologies.',
knowledge: true, // Access to knowledge base
memory: true, // Remember research context
useTools: true // Use research tools
});
// Content Creator
const creator = await Agent.create({
name: 'ContentCreator',
systemPrompt: 'You create compelling content across different formats and audiences.',
vision: true, // Process visual content
useTools: true // Use content creation tools
});
// Technical Analyst
const analyst = await Agent.create({
name: 'TechnicalAnalyst',
systemPrompt: 'You analyze technical data and provide actionable insights.',
useTools: true // Use analysis tools
});Graph Integration#
Sub-Agents work seamlessly with Graph workflows for complex orchestration:
import { Agent, Graph } from '@astreus-ai/astreus';
// Create specialized sub-agents
const researcher = await Agent.create({
name: 'ResearchBot',
systemPrompt: 'You conduct thorough research and analysis.',
knowledge: true
});
const writer = await Agent.create({
name: 'WriterBot',
systemPrompt: 'You create compelling content and reports.',
vision: true
});
// Main coordinator with sub-agents
const coordinator = await Agent.create({
name: 'ProjectCoordinator',
systemPrompt: 'You coordinate complex projects using specialized teams.',
subAgents: [researcher, writer]
});
// Create sub-agent aware graph
const projectGraph = new Graph({
name: 'Market Analysis Project',
defaultAgentId: coordinator.id,
subAgentAware: true,
optimizeSubAgentUsage: true
}, coordinator);
// Add tasks with intelligent sub-agent delegation
const researchTask = projectGraph.addTaskNode({
name: 'Market Research',
prompt: 'Research AI healthcare market trends and opportunities',
useSubAgents: true,
subAgentDelegation: 'auto'
});
const reportTask = projectGraph.addTaskNode({
name: 'Executive Report',
prompt: 'Create comprehensive executive report based on research',
dependencies: [researchTask],
useSubAgents: true,
subAgentCoordination: 'sequential'
});
// Execute the graph
const result = await projectGraph.run();Graph Sub-Agent Features#
- Automatic Detection: Graph nodes automatically use sub-agents when beneficial
- Context Passing: Workflow context flows to sub-agents for better coordination
- Performance Optimization: Real-time monitoring and automatic strategy adjustment
- Flexible Configuration: Per-node sub-agent settings with inheritance from graph config
Advanced Examples#
Content Production Pipeline#
const contentPipeline = await Agent.create({
name: 'ContentPipeline',
model: 'gpt-4o',
subAgents: [researcher, writer, analyst]
});
const blogPost = await contentPipeline.ask(
'Create a comprehensive blog post about quantum computing applications in finance',
{
useSubAgents: true,
delegation: 'auto',
coordination: 'sequential'
}
);Market Research Workflow#
const marketResearch = await Agent.create({
name: 'MarketResearchTeam',
model: 'gpt-4o',
subAgents: [researcher, analyst, writer]
});
const report = await marketResearch.ask(
'Analyze the fintech market and create investor presentation',
{
useSubAgents: true,
delegation: 'manual',
coordination: 'parallel',
taskAssignment: {
[researcher.id]: 'Research fintech market trends and competitors',
[analyst.id]: 'Analyze market data and financial projections',
[writer.id]: 'Create compelling investor presentation'
}
}
);Response Types#
Sub-agent methods return different response formats depending on the operation.
Execute With Sub-Agents Response#
Basic sub-agent execution returns the final combined result as a string:
const result = await mainAgent.executeWithSubAgents(
"Research renewable energy and create comprehensive report",
[researchAgent, writerAgent],
{ coordination: 'sequential' }
);
// Response: string
"Research complete: Solar and wind energy show 23% growth year-over-year. Report includes market analysis, technology trends, and investment opportunities across 15 regions."Delegate Task Response#
Task delegation returns the sub-agent's response as a string:
const result = await mainAgent.delegateTask(
"Translate this document to Spanish",
translatorAgent
);
// Response: string
"Documento traducido exitosamente. El contenido ha sido adaptado para audiencia hispanohablante manteniendo el tono profesional original."Coordinate Agents Response#
Coordinating multiple agents returns an array of task-result pairs:
const results = await mainAgent.coordinateAgents([
{ agent: analyzerAgent, prompt: "Analyze Q4 sales data" },
{ agent: reportAgent, prompt: "Create executive summary" },
{ agent: visualizerAgent, prompt: "Generate performance charts" }
], 'sequential');
// Response structure:
[
{
task: {
agent: analyzerAgent, // IAgent object
prompt: "Analyze Q4 sales data"
},
result: "Q4 analysis complete: Revenue increased 18%, top products identified, seasonal trends mapped."
},
{
task: {
agent: reportAgent,
prompt: "Create executive summary"
},
result: "Executive summary created with key findings: 18% growth driven by product line expansion..."
},
{
task: {
agent: visualizerAgent,
prompt: "Generate performance charts"
},
result: "Performance visualizations generated: 5 charts showing revenue trends, product mix, and regional distribution."
}
]Agent.ask() with Sub-Agents Response#
Using agent.ask() with sub-agent options returns the final response string:
const result = await mainAgent.ask(
"Create market analysis presentation",
{
useSubAgents: true,
delegation: 'auto',
coordination: 'parallel'
}
);
// Response: string
"Market analysis presentation completed with 3 specialized teams: Research team gathered competitor data, Analysis team processed financial metrics (showing 12% market growth), and Content team created 25-slide deck with executive summary."Manual Task Assignment Response#
Manual assignment also returns a string with combined results:
const result = await coordinatorAgent.ask(
"Develop comprehensive product launch strategy",
{
useSubAgents: true,
delegation: 'manual',
coordination: 'sequential',
taskAssignment: {
[marketResearcher.id]: "Research target market and competitors",
[strategyAnalyst.id]: "Develop go-to-market strategy",
[contentCreator.id]: "Create launch materials and messaging"
}
}
);
// Response: string
"Product launch strategy complete: Target market identified (tech-savvy professionals 25-40), competitive positioning defined (premium quality, mid-tier pricing), go-to-market plan created with 3-phase rollout, and launch materials prepared including website, social media, and press kit."