Fix ImportError caused by removed ModerationResult class. Changes: - Remove ModerationResult from ai/__init__.py exports - Remove unused ContentCategory enum and parse_categories function - Remove unused imports from ai_moderation.py - Clean up NullProvider to only have analyze_image method Fixes bot startup crash.
58 lines
1.4 KiB
Python
58 lines
1.4 KiB
Python
"""Factory for creating AI providers."""
|
|
|
|
import logging
|
|
from typing import Literal
|
|
|
|
from guardden.services.ai.base import AIProvider
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class NullProvider(AIProvider):
|
|
"""Null provider that does nothing (for when AI is disabled)."""
|
|
|
|
async def analyze_image(self, image_url, sensitivity=50):
|
|
from guardden.services.ai.base import ImageAnalysisResult
|
|
|
|
return ImageAnalysisResult()
|
|
|
|
async def close(self):
|
|
pass
|
|
|
|
|
|
def create_ai_provider(
|
|
provider: Literal["anthropic", "openai", "none"],
|
|
api_key: str | None = None,
|
|
) -> AIProvider:
|
|
"""
|
|
Create an AI provider instance.
|
|
|
|
Args:
|
|
provider: The provider type to create
|
|
api_key: API key for the provider
|
|
|
|
Returns:
|
|
AIProvider instance
|
|
|
|
Raises:
|
|
ValueError: If provider is unknown or API key is missing
|
|
"""
|
|
if provider == "none":
|
|
logger.info("AI moderation disabled")
|
|
return NullProvider()
|
|
|
|
if not api_key:
|
|
raise ValueError(f"API key required for {provider} provider")
|
|
|
|
if provider == "anthropic":
|
|
from guardden.services.ai.anthropic_provider import AnthropicProvider
|
|
|
|
return AnthropicProvider(api_key)
|
|
|
|
if provider == "openai":
|
|
from guardden.services.ai.openai_provider import OpenAIProvider
|
|
|
|
return OpenAIProvider(api_key)
|
|
|
|
raise ValueError(f"Unknown AI provider: {provider}")
|