|
|
from typing import Type
|
|
|
|
|
|
from ..config import get_settings
|
|
|
from .base import BaseAttributionService
|
|
|
from .service_anthropic import AnthropicService
|
|
|
from .service_openai import OpenAIService
|
|
|
|
|
|
settings = get_settings()
|
|
|
|
|
|
|
|
|
class AIServiceFactory:
|
|
|
_services = {"openai": OpenAIService, "anthropic": AnthropicService}
|
|
|
|
|
|
@classmethod
|
|
|
def get_service(cls, ai_vendor: str = None) -> BaseAttributionService:
|
|
|
ai_vendor = ai_vendor or settings.DEFAULT_VENDOR
|
|
|
service_class = cls._services.get(ai_vendor.lower())
|
|
|
if not service_class:
|
|
|
raise ValueError(f"Unsupported ai_vendor: {ai_vendor}")
|
|
|
return service_class()
|
|
|
|