图片生成器工厂类
| 7 | |
| 8 | |
| 9 | class ImageGeneratorFactory: |
| 10 | """图片生成器工厂类""" |
| 11 | |
| 12 | # 注册的生成器类型 |
| 13 | GENERATORS = { |
| 14 | 'google_genai': GoogleGenAIGenerator, |
| 15 | 'openai': OpenAICompatibleGenerator, |
| 16 | 'openai_compatible': OpenAICompatibleGenerator, |
| 17 | 'image_api': ImageApiGenerator, |
| 18 | } |
| 19 | |
| 20 | @classmethod |
| 21 | def create(cls, provider: str, config: Dict[str, Any]) -> ImageGeneratorBase: |
| 22 | """ |
| 23 | 创建图片生成器实例 |
| 24 | |
| 25 | Args: |
| 26 | provider: 服务商类型 ('google_genai', 'openai', 'openai_compatible') |
| 27 | config: 配置字典 |
| 28 | |
| 29 | Returns: |
| 30 | 图片生成器实例 |
| 31 | |
| 32 | Raises: |
| 33 | ValueError: 不支持的服务商类型 |
| 34 | """ |
| 35 | if provider not in cls.GENERATORS: |
| 36 | available = ', '.join(cls.GENERATORS.keys()) |
| 37 | raise ValueError( |
| 38 | f"不支持的图片生成服务商: {provider}\n" |
| 39 | f"支持的服务商类型: {available}\n" |
| 40 | "解决方案:\n" |
| 41 | "1. 检查 image_providers.yaml 中的 active_provider 配置\n" |
| 42 | "2. 确认 provider.type 字段是否正确\n" |
| 43 | "3. 或使用环境变量 IMAGE_PROVIDER 指定服务商" |
| 44 | ) |
| 45 | |
| 46 | generator_class = cls.GENERATORS[provider] |
| 47 | return generator_class(config) |
| 48 | |
| 49 | @classmethod |
| 50 | def register_generator(cls, name: str, generator_class: type): |
| 51 | """ |
| 52 | 注册自定义生成器 |
| 53 | |
| 54 | Args: |
| 55 | name: 生成器名称 |
| 56 | generator_class: 生成器类 |
| 57 | """ |
| 58 | if not issubclass(generator_class, ImageGeneratorBase): |
| 59 | raise TypeError( |
| 60 | f"注册失败:生成器类必须继承自 ImageGeneratorBase。\n" |
| 61 | f"提供的类: {generator_class.__name__}\n" |
| 62 | f"基类: ImageGeneratorBase" |
| 63 | ) |
| 64 | |
| 65 | cls.GENERATORS[name] = generator_class |
nothing calls this directly
no outgoing calls
no test coverage detected