enzu
1.0.0
Enzu es un marco declarativo de Go diseñado para construir sofisticados sistemas de IA multiagente. Permite a los LLM y a los agentes de IA colaborar, ejecutar tareas paralelas y aprovechar herramientas extensibles mientras mantienen jerarquías y patrones de comunicación claros.
// 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
)FetchURL
)Distribución de tareas paralelas
Integración del servicio HTTP
Coordinación multiagente
go get github.com/teilomillet/enzu
/docs
: Guías de arquitectura e integración/docs/tutorials
: Patrones de implementación paso a paso/examples
: implementaciones de referencia y casos de usoexamples/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
)Integración API HTTP
Integración del registro de herramientas
Colaboración del agente