Files
frigate/frigate/config/camera/genai.py
T

69 lines
2.1 KiB
Python
Raw Normal View History

from enum import Enum
2026-07-06 09:28:02 -08:00
from typing import Any
2025-08-08 16:33:11 -06:00
from pydantic import Field
from ..base import FrigateBaseModel
from ..env import EnvString
__all__ = ["GenAIConfig", "GenAIProviderEnum", "GenAIRoleEnum"]
class GenAIProviderEnum(str, Enum):
openai = "openai"
2024-10-01 14:57:40 -05:00
azure_openai = "azure_openai"
gemini = "gemini"
ollama = "ollama"
2026-01-18 06:34:30 -07:00
llamacpp = "llamacpp"
class GenAIRoleEnum(str, Enum):
2026-04-03 17:13:52 -06:00
chat = "chat"
descriptions = "descriptions"
embeddings = "embeddings"
class GenAIConfig(FrigateBaseModel):
2025-08-08 16:33:11 -06:00
"""Primary GenAI Config to define GenAI Provider."""
2026-07-06 09:28:02 -08:00
api_key: EnvString | None = Field(
default=None,
title="API key",
description="API key required by some providers (can also be set via environment variables).",
)
2026-07-06 09:28:02 -08:00
base_url: str | None = Field(
default=None,
title="Base URL",
description="Base URL for self-hosted or compatible providers (for example an Ollama instance).",
)
model: str = Field(
2026-05-20 09:36:49 -05:00
default="",
title="Model",
description="The model to use from the provider for generating descriptions or summaries.",
)
2026-05-07 08:53:07 -05:00
provider: GenAIProviderEnum = Field(
title="Provider",
description="The GenAI provider to use (for example: ollama, gemini, openai).",
)
roles: list[GenAIRoleEnum] = Field(
default_factory=lambda: [
GenAIRoleEnum.embeddings,
2026-04-03 17:13:52 -06:00
GenAIRoleEnum.descriptions,
GenAIRoleEnum.chat,
],
title="Roles",
2026-04-03 17:13:52 -06:00
description="GenAI roles (chat, descriptions, embeddings); one provider per role.",
)
provider_options: dict[str, Any] = Field(
default={},
title="Provider options",
description="Additional provider-specific options to pass to the GenAI client.",
2026-04-04 07:54:51 -05:00
json_schema_extra={"additionalProperties": {}},
)
runtime_options: dict[str, Any] = Field(
default={},
title="Runtime options",
description="Runtime options passed to the provider for each inference call.",
2026-04-04 07:54:51 -05:00
json_schema_extra={"additionalProperties": {}},
)