| """Orchestrators package - provides different orchestration strategies. |
| |
| This package implements the Strategy Pattern, allowing the application |
| to switch between different orchestration approaches: |
| |
| - Simple: Basic search-judge loop using pydantic-ai (free tier compatible) |
| - Advanced: Multi-agent coordination using Microsoft Agent Framework |
| - Hierarchical: Sub-iteration middleware with fine-grained control |
| |
| Usage: |
| from src.orchestrators import create_orchestrator, Orchestrator |
| |
| # Auto-detect mode based on available API keys |
| orchestrator = create_orchestrator(search_handler, judge_handler) |
| |
| # Or explicitly specify mode |
| orchestrator = create_orchestrator(mode="advanced", api_key="sk-...") |
| |
| Protocols: |
| from src.orchestrators import SearchHandlerProtocol, JudgeHandlerProtocol, OrchestratorProtocol |
| |
| Design Patterns Applied: |
| - Factory Pattern: create_orchestrator() creates appropriate orchestrator |
| - Strategy Pattern: Different orchestrators implement different strategies |
| - Facade Pattern: This __init__.py provides a clean public API |
| """ |
|
|
| from __future__ import annotations |
|
|
| import warnings |
| from typing import TYPE_CHECKING |
|
|
| |
| from src.orchestrators.base import ( |
| JudgeHandlerProtocol, |
| OrchestratorProtocol, |
| SearchHandlerProtocol, |
| ) |
|
|
| |
| from src.orchestrators.factory import create_orchestrator |
|
|
| |
| from src.orchestrators.simple import Orchestrator |
|
|
| if TYPE_CHECKING: |
| from src.orchestrators.advanced import AdvancedOrchestrator |
| from src.orchestrators.hierarchical import HierarchicalOrchestrator |
|
|
| |
| |
| |
|
|
|
|
| def get_advanced_orchestrator() -> type[AdvancedOrchestrator]: |
| """Get the AdvancedOrchestrator class (requires agent-framework-core). |
| |
| Returns: |
| The AdvancedOrchestrator class |
| |
| Raises: |
| ImportError: If agent-framework-core is not installed |
| """ |
| from src.orchestrators.advanced import AdvancedOrchestrator |
|
|
| return AdvancedOrchestrator |
|
|
|
|
| def get_hierarchical_orchestrator() -> type[HierarchicalOrchestrator]: |
| """Get the HierarchicalOrchestrator class (requires agent-framework-core). |
| |
| Returns: |
| The HierarchicalOrchestrator class |
| |
| Raises: |
| ImportError: If agent-framework-core is not installed |
| """ |
| from src.orchestrators.hierarchical import HierarchicalOrchestrator |
|
|
| return HierarchicalOrchestrator |
|
|
|
|
| def get_magentic_orchestrator() -> type[AdvancedOrchestrator]: |
| """Get the AdvancedOrchestrator class. |
| |
| .. deprecated:: 0.1.0 |
| Use :func:`get_advanced_orchestrator` instead. |
| The name 'magentic' was confusing with the 'magentic' PyPI package. |
| |
| Returns: |
| The AdvancedOrchestrator class |
| """ |
| warnings.warn( |
| "get_magentic_orchestrator() is deprecated, use get_advanced_orchestrator() instead. " |
| "The name 'magentic' was confusing with the 'magentic' PyPI package.", |
| DeprecationWarning, |
| stacklevel=2, |
| ) |
| return get_advanced_orchestrator() |
|
|
|
|
| __all__ = [ |
| "JudgeHandlerProtocol", |
| "Orchestrator", |
| "OrchestratorProtocol", |
| "SearchHandlerProtocol", |
| "create_orchestrator", |
| "get_advanced_orchestrator", |
| "get_hierarchical_orchestrator", |
| "get_magentic_orchestrator", |
| ] |
|
|