diff --git a/src/promptforge/providers/factory.py b/src/promptforge/providers/factory.py new file mode 100644 index 0000000..9e04515 --- /dev/null +++ b/src/promptforge/providers/factory.py @@ -0,0 +1,26 @@ +from typing import Optional +from .openai import OpenAIProvider +from .anthropic import AnthropicProvider +from .ollama import OllamaProvider +from ..core.exceptions import ProviderError + + +class ProviderFactory: + @staticmethod + def create( + provider_name: str, + model: Optional[str] = None, + temperature: float = 0.7, + api_key: Optional[str] = None, + **kwargs, + ): + provider_name = provider_name.lower() + + if provider_name in ("openai", "gpt-4", "gpt-3.5"): + return OpenAIProvider(api_key=api_key, model=model or "gpt-4", temperature=temperature) + elif provider_name in ("anthropic", "claude"): + return AnthropicProvider(api_key=api_key, model=model or "claude-3-sonnet-20240229", temperature=temperature) + elif provider_name in ("ollama", "local"): + return OllamaProvider(model=model or "llama2", temperature=temperature, **kwargs) + else: + raise ProviderError(f"Unknown provider: {provider_name}") \ No newline at end of file