coerce semantic search model string to enum

Built-in model names (jinav1, jinav2) get converted to the enum, genai provider names that don't match stay as plain strings and follow the existing validation path
This commit is contained in:
Josh Hawkins 2026-03-30 08:13:36 -05:00
parent a911735ccb
commit 31bc7ef003

View File

@ -1,7 +1,7 @@
from enum import Enum
from typing import Dict, List, Optional, Union
from pydantic import ConfigDict, Field
from pydantic import ConfigDict, Field, field_validator
from .base import FrigateBaseModel
@ -178,6 +178,16 @@ class SemanticSearchConfig(FrigateBaseModel):
title="Semantic search model or GenAI provider name",
description="The embeddings model to use for semantic search (for example 'jinav1'), or the name of a GenAI provider with the embeddings role.",
)
@field_validator("model", mode="before")
@classmethod
def coerce_model_enum(cls, v):
if isinstance(v, str):
try:
return SemanticSearchModelEnum(v)
except ValueError:
return v
return v
model_size: str = Field(
default="small",
title="Model size",