MCPcopy Create free account
hub / github.com/HisMax/RedInk / ImageGeneratorFactory

Class ImageGeneratorFactory

backend/generators/factory.py:9–65  ·  view source on GitHub ↗

图片生成器工厂类

Source from the content-addressed store, hash-verified

7
8
9class 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

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected