feat: add multi-image vision analysis
This commit is contained in:
+8
-6
@@ -18,15 +18,16 @@ class ModelCapabilityError(AliasResolutionError):
|
||||
|
||||
|
||||
REQUIRED_CAPABILITIES = {
|
||||
ModelAlias.OperationType.TITLE: "text",
|
||||
ModelAlias.OperationType.IMAGE: "image",
|
||||
ModelAlias.OperationType.TITLE: frozenset({"text"}),
|
||||
ModelAlias.OperationType.IMAGE: frozenset({"image"}),
|
||||
ModelAlias.OperationType.VISION: frozenset({"text", "vision"}),
|
||||
}
|
||||
|
||||
|
||||
def resolve_model_alias(operation_type: str, alias: str | None = None) -> ModelAlias:
|
||||
"""Resolve an external capability alias to an active ModelAlias row."""
|
||||
required_capability = REQUIRED_CAPABILITIES.get(operation_type)
|
||||
if required_capability is None:
|
||||
required_capabilities = REQUIRED_CAPABILITIES.get(operation_type)
|
||||
if required_capabilities is None:
|
||||
raise AliasResolutionError(f"unsupported operation_type: {operation_type}")
|
||||
|
||||
queryset = ModelAlias.objects.select_related("ai_model").filter(
|
||||
@@ -47,10 +48,11 @@ def resolve_model_alias(operation_type: str, alias: str | None = None) -> ModelA
|
||||
|
||||
ai_model: AiModel = model_alias.ai_model
|
||||
capabilities = ai_model.capabilities_set()
|
||||
if required_capability not in capabilities:
|
||||
missing_capabilities = required_capabilities - capabilities
|
||||
if missing_capabilities:
|
||||
raise ModelCapabilityError(
|
||||
f"alias {model_alias.alias} maps to model {ai_model.name} without "
|
||||
f"{required_capability} capability"
|
||||
f"{', '.join(sorted(missing_capabilities))} capability"
|
||||
)
|
||||
return model_alias
|
||||
|
||||
|
||||
Reference in New Issue
Block a user