Enzu is a declarative Go framework designed for building sophisticated multi-agent AI systems. It enables LLMs and AI agents to collaborate, execute parallel tasks, and leverage extensible tools while maintaining clear hierarchies and communication patterns.
- Hierarchical Agent Organization: Define agent roles, responsibilities, and relationships
- Dynamic Task Distribution: Automatically route tasks to specialized agents
- Parallel Processing: Execute multiple agent tasks concurrently
- State Management: Track and maintain agent states across interactions
- Declarative Tool Registry: Register and manage tools with clear interfaces
- Inheritance Patterns: Tools can be inherited and shared across agent hierarchies
- Thread-Safe Operations: Concurrent tool access with built-in safety mechanisms
- Custom Tool Creation: Extend functionality through a standardized tool interface
- Synergy-Based Collaboration: Group agents into task-focused collaborative units
- Context Propagation: Share context and state across agent boundaries
- Parallel Task Execution: Optimize performance through concurrent processing
- Error Recovery: Built-in retry mechanisms and error handling patterns
- HTTP Server Integration: Built-in REST API capabilities
- Structured Message Passing: Type-safe communication between agents
- Event System: Publish-subscribe patterns for agent coordination
- Logging System: Comprehensive tracing and debugging capabilities
// Pattern: Distributed Research System
type ResearchRequest struct {
Topic string `json:"topic"`
Subtopics []string `json:"subtopics,omitempty"`
MaxResults int `json:"max_results,omitempty"`
TimeoutSecs int `json:"timeout_secs,omitempty"`
}
// Create specialized research agents
researcher := enzu.NewAgent("Primary Researcher",
"Deep research and fact verification",
llm,
enzu.WithToolLists("ResearchTool"),
enzu.WithParallelExecution(true),
)
analyst := enzu.NewAgent("Data Analyst",
"Process and analyze research results",
llm,
enzu.WithToolLists("AnalysisTool"),
enzu.WithParallelExecution(true),
)
// Pattern: Self-Aware Interactive System
manager := enzu.NewSynergyManager("Self-Aware System", llm, logger)
// Define capability domains
researchSynergy := createDomainSynergy("Research", llm, logger)
analysisSynergy := createDomainSynergy("Analysis", llm, logger)
creativeSynergy := createDomainSynergy("Creative", llm, logger)
// Register domains
manager.AddSynergy(researchSynergy)
manager.AddSynergy(analysisSynergy)
manager.AddSynergy(creativeSynergy)
// Pattern: Extensible Tool System
exaSearchOptions := tools.ExaSearchOptions{
NumResults: 5,
Type: "neural",
Contents: tools.Contents{
Text: true,
},
UseAutoprompt: true,
StartPublishedDate: "2023-01-01T00:00:00.000Z",
}
tools.RegisterTool("ResearchTool", exaSearchOptions)
// Pattern: Multi-Agent API Server
type Server struct {
synergy *enzu.Synergy
logger *enzu.Logger
}
// Initialize server with parallel processing capabilities
func NewServer() (*Server, error) {
// Create research agents with specific roles
researchAgent1 := enzu.NewAgent("Research Agent 1",
"Agent specialized in AI research",
llm,
enzu.WithToolLists("ResearchTool"),
enzu.WithParallelExecution(true),
)
researchAgent2 := enzu.NewAgent("Research Agent 2",
"Agent specialized in startup research",
llm,
enzu.WithToolLists("ResearchTool"),
enzu.WithParallelExecution(true),
)
// Create parallel processing synergy
synergy := enzu.NewSynergy(
"Parallel AI Research",
llm,
enzu.WithAgents(researchAgent1, researchAgent2),
enzu.WithLogger(logger),
)
return &Server{synergy: synergy, logger: logger}, nil
}
// Handle parallel task execution
func (s *Server) handleExecute(w http.ResponseWriter, r *http.Request) {
var request struct {
Tasks []string `json:"tasks"`
}
// Distribute tasks among agents
agents := s.synergy.GetAgents()
for i, taskDescription := range request.Tasks {
agent := agents[i%len(agents)] // Round-robin distribution
tasks = append(tasks, enzu.NewTask(taskDescription, agent))
}
}
- Neural search integration (
ExaSearch
tool) - Multi-agent research coordination
- Parallel information gathering
- Research result synthesis
- Multi-agent task distribution
- Parallel task execution
- Progress tracking
- Result aggregation
- URL content fetching (
FetchURL
tool) - HTML parsing and extraction
- CSS selector-based targeting
- Structured data collection
- Multi-synergy orchestration
- Result synthesis across synergies
- Team-based agent organization
- Cross-team coordination
- Hierarchical task execution
- Role-specialized agents
- Team-based synergies
- Domain-specific agent groups
- Task-team alignment
-
Parallel Task Distribution
- Round-robin task assignment
- Load-balanced processing
- Concurrent execution
- Real-time response handling
-
HTTP Service Integration
- RESTful endpoints
- JSON request/response
- Error handling patterns
- Status monitoring
-
Multi-Agent Coordination
- Role-based agent assignment
- Task synchronization
- Result aggregation
- State management
go get github.com/teilomillet/enzu
/docs
: Architecture and integration guides/docs/tutorials
: Step-by-step implementation patterns/examples
: Reference implementations and use cases
- Research Assistant System (
examples/8_research_assistant_example.go
) - Self-Aware System (
examples/7_manager_mode_example.go
) - Parallel Processing System (
examples/4_parallel_example.go
) - Tool Integration System (
examples/3_tools_example.go
) - API Integration System (
examples/6_api_example.go
)
-
HTTP API Integration
- REST endpoint creation
- Request/Response handling
- Timeout management
- Error recovery
- Round-robin task distribution
- Load balancing strategies
-
Tool Registry Integration
- Tool registration
- Capability inheritance
- Access control
- Resource management
-
Agent Collaboration
- Task distribution
- Result synthesis
- Context sharing
- Error handling