enzu
1.0.0
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.
// 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))
}
}
ExaSearch
tool)FetchURL
tool)Parallel Task Distribution
HTTP Service Integration
Multi-Agent Coordination
go get github.com/teilomillet/enzu
/docs
: Architecture and integration guides/docs/tutorials
: Step-by-step implementation patterns/examples
: Reference implementations and use casesexamples/8_research_assistant_example.go
)examples/7_manager_mode_example.go
)examples/4_parallel_example.go
)examples/3_tools_example.go
)examples/6_api_example.go
)HTTP API Integration
Tool Registry Integration
Agent Collaboration