feat: add ai provider adapters
This commit is contained in:
+9
-3
@@ -193,16 +193,22 @@ class Provider(Protocol):
|
||||
def capabilities(self) -> set[str]: ... # {"text","image","vision"}
|
||||
def generate_text(self, prompt: str, model: ResolvedModel,
|
||||
image: bytes | None = None,
|
||||
image_mime_type: str = "image/png",
|
||||
resolution: str = "1K",
|
||||
parameters: dict | None = None) -> list[str]: ...
|
||||
def generate_image(self, prompt: str, model: ResolvedModel, image: bytes,
|
||||
parameters: dict | None = None) -> TextGenerationResult: ...
|
||||
def generate_image(self, prompt: str, model: ResolvedModel,
|
||||
image: bytes | None = None,
|
||||
image_mime_type: str = "image/png",
|
||||
image_filename: str = "image.png",
|
||||
resolution: str = "1K", aspect_ratio: str = "1:1",
|
||||
parameters: dict | None = None) -> bytes | str: ...
|
||||
parameters: dict | None = None) -> ImageGenerationResult: ...
|
||||
```
|
||||
|
||||
要点:
|
||||
|
||||
- `ResolvedModel` 来自数据库 AiModel(形状同 `cmbot/config/ai_models.json`,外加 `capabilities`;`api_key` 在库中加密,使用时解密,不落明文)。
|
||||
- T-101 先用 `ResolvedModel` dataclass 承接配置,不建数据库表;T-102 再把它接到 AiModel/ModelAlias。
|
||||
- `TextGenerationResult` 包含 `text`、清洗后的 `titles`、`model_used`、`raw`;`ImageGenerationResult` 包含图片 bytes、`model_used`、`raw`。图片落对象存储并返回 URL 属 T-302 之后的 API 编排职责。
|
||||
- 适配器按 `api_type`(`chat`/`gemini`/`images`/`images_edits`/`auto`)从注册表选取,新增供应商 = 新增一个适配器,不改对外接口。
|
||||
- `parameters` 为供应商特有参数透传;适配器负责把统一入参翻译成各家上游格式。
|
||||
- 配置热生效:每次调用读当前 AiModel/ModelAlias,后台改动及时反映(或带缓存失效)。
|
||||
|
||||
Reference in New Issue
Block a user