hokusai/bulkgen/providers/__init__.py
Konstantin Fickel 870023865d
feat: add OpenAI as provider for text and image generation
- Add openai_text.py: text generation via OpenAI chat completions API
  (gpt-4o, gpt-4o-mini, gpt-4.1, gpt-4.1-mini, gpt-4.1-nano, o3-mini)
- Add openai_image.py: image generation via OpenAI images API
  (gpt-image-1 with reference image support, dall-e-3, dall-e-2)
- Refactor builder provider dispatch from TargetType to model-name index
  to support multiple providers per target type
- Fix circular import between config.py and providers/__init__.py
  using TYPE_CHECKING guard
- Fix stale default model assertions in tests
- Add openai>=1.0.0 dependency
2026-02-15 13:48:06 +01:00

40 lines
1.1 KiB
Python

"""Provider abstraction for AI generation backends."""
from __future__ import annotations
import abc
from pathlib import Path
from typing import TYPE_CHECKING
from bulkgen.providers.models import ModelInfo
if TYPE_CHECKING:
from bulkgen.config import TargetConfig
class Provider(abc.ABC):
"""Abstract base for generation providers."""
@staticmethod
@abc.abstractmethod
def get_provided_models() -> list[ModelInfo]:
"""Return the models this provider supports."""
@abc.abstractmethod
async def generate(
self,
target_name: str,
target_config: TargetConfig,
resolved_prompt: str,
resolved_model: ModelInfo,
project_dir: Path,
) -> None:
"""Generate the target artifact and write it to *project_dir / target_name*.
Args:
target_name: Output filename (relative to project_dir).
target_config: The parsed target configuration.
resolved_prompt: The fully resolved prompt text.
resolved_model: The resolved model information.
project_dir: The project working directory.
"""