Source code for praval.providers.factory

"""
Factory for creating LLM provider instances.

Provides a unified interface for instantiating different LLM providers
with consistent configuration handling.
"""

from typing import Any, Dict
from ..core.exceptions import ProviderError


[docs] class ProviderFactory: """Factory class for creating LLM provider instances."""
[docs] @staticmethod def create_provider(provider_name: str, config: Any): """ Create an LLM provider instance. Args: provider_name: Name of the provider (openai, anthropic, cohere) config: Configuration object for the provider Returns: Provider instance Raises: ProviderError: If provider is not supported or creation fails """ try: if provider_name == "openai": from .openai import OpenAIProvider return OpenAIProvider(config) elif provider_name == "anthropic": from .anthropic import AnthropicProvider return AnthropicProvider(config) elif provider_name == "cohere": from .cohere import CohereProvider return CohereProvider(config) else: raise ProviderError(f"Unsupported provider: {provider_name}") except ImportError as e: raise ProviderError(f"Failed to import provider '{provider_name}': {str(e)}") from e except Exception as e: raise ProviderError(f"Failed to create provider '{provider_name}': {str(e)}") from e