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 enum import Enum
from typing import Dict, List, Optional, Union from typing import Dict, List, Optional, Union
from pydantic import ConfigDict, Field from pydantic import ConfigDict, Field, field_validator
from .base import FrigateBaseModel from .base import FrigateBaseModel
@ -178,6 +178,16 @@ class SemanticSearchConfig(FrigateBaseModel):
title="Semantic search model or GenAI provider name", 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.", 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( model_size: str = Field(
default="small", default="small",
title="Model size", title="Model size",