| | """Factory for creating orchestrators.""" |
| |
|
| | from typing import Any, Literal |
| |
|
| | from src.orchestrator import JudgeHandlerProtocol, Orchestrator, SearchHandlerProtocol |
| | from src.utils.models import OrchestratorConfig |
| |
|
| | |
| |
|
| | |
| |
|
| | |
| |
|
| | |
| |
|
| |
|
| | def create_orchestrator( |
| | search_handler: SearchHandlerProtocol, |
| | judge_handler: JudgeHandlerProtocol, |
| | config: OrchestratorConfig | None = None, |
| | mode: Literal["simple", "magentic"] = "simple", |
| | ) -> Any: |
| | """ |
| | Create an orchestrator instance. |
| | |
| | Args: |
| | search_handler: The search handler |
| | judge_handler: The judge handler |
| | config: Optional configuration |
| | mode: "simple" for Phase 4 loop, "magentic" for Phase 5 multi-agent |
| | |
| | Returns: |
| | Orchestrator instance (same interface regardless of mode) |
| | """ |
| | if mode == "magentic": |
| | try: |
| | from src.orchestrator_magentic import MagenticOrchestrator |
| |
|
| | return MagenticOrchestrator( |
| | search_handler=search_handler, |
| | judge_handler=judge_handler, |
| | max_rounds=config.max_iterations if config else 10, |
| | ) |
| | except ImportError: |
| | |
| | pass |
| |
|
| | return Orchestrator( |
| | search_handler=search_handler, |
| | judge_handler=judge_handler, |
| | config=config, |
| | ) |
| |
|