backend / src /schema /models.py
anujjoshi3105's picture
initial
22dcdfd
from enum import StrEnum, auto
from typing import TypeAlias
class Provider(StrEnum):
OPENAI = auto()
OPENAI_COMPATIBLE = auto()
AZURE_OPENAI = auto()
DEEPSEEK = auto()
ANTHROPIC = auto()
GOOGLE = auto()
VERTEXAI = auto()
GROQ = auto()
AWS = auto()
OLLAMA = auto()
OPENROUTER = auto()
FAKE = auto()
class OpenAIModelName(StrEnum):
"""https://platform.openai.com/docs/models/gpt-4o"""
GPT_5_NANO = "gpt-5-nano"
GPT_5_MINI = "gpt-5-mini"
GPT_5_1 = "gpt-5.1"
class AzureOpenAIModelName(StrEnum):
"""Azure OpenAI model names"""
AZURE_GPT_4O = "azure-gpt-4o"
AZURE_GPT_4O_MINI = "azure-gpt-4o-mini"
class OpenAIEmbeddingModelName(StrEnum):
"""https://platform.openai.com/docs/guides/embeddings"""
TEXT_EMBEDDING_3_SMALL = "text-embedding-3-small"
TEXT_EMBEDDING_3_LARGE = "text-embedding-3-large"
TEXT_EMBEDDING_ADA_002 = "text-embedding-ada-002"
class DeepseekModelName(StrEnum):
"""https://api-docs.deepseek.com/quick_start/pricing"""
DEEPSEEK_CHAT = "deepseek-chat"
class AnthropicModelName(StrEnum):
"""https://docs.anthropic.com/en/docs/about-claude/models#model-names"""
HAIKU_45 = "claude-haiku-4-5"
SONNET_45 = "claude-sonnet-4-5"
class GoogleModelName(StrEnum):
"""https://ai.google.dev/gemini-api/docs/models/gemini"""
GEMINI_15_PRO = "gemini-1.5-pro"
GEMINI_20_FLASH = "gemini-2.0-flash"
GEMINI_20_FLASH_LITE = "gemini-2.0-flash-lite"
GEMINI_25_FLASH = "gemini-2.5-flash"
GEMINI_25_PRO = "gemini-2.5-pro"
GEMINI_30_PRO = "gemini-3-pro-preview"
class GoogleEmbeddingModelName(StrEnum):
"""https://ai.google.dev/gemini-api/docs/models/gemini#text-embedding"""
TEXT_EMBEDDING_004 = "text-embedding-004"
class VertexAIModelName(StrEnum):
"""https://cloud.google.com/vertex-ai/generative-ai/docs/models"""
GEMINI_15_PRO = "gemini-1.5-pro"
GEMINI_20_FLASH = "gemini-2.0-flash"
GEMINI_20_FLASH_LITE = "models/gemini-2.0-flash-lite"
GEMINI_25_FLASH = "models/gemini-2.5-flash"
GEMINI_25_PRO = "gemini-2.5-pro"
GEMINI_30_PRO = "gemini-3-pro-preview"
class GroqModelName(StrEnum):
"""https://console.groq.com/docs/models"""
LLAMA_31_8B = "llama-3.1-8b"
LLAMA_33_70B = "llama-3.3-70b"
LLAMA_GUARD_4_12B = "meta-llama/llama-guard-4-12b"
class AWSModelName(StrEnum):
"""https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html"""
BEDROCK_HAIKU = "bedrock-3.5-haiku"
BEDROCK_SONNET = "bedrock-3.5-sonnet"
class OllamaModelName(StrEnum):
"""https://ollama.com/search"""
OLLAMA_GENERIC = "ollama"
class OllamaEmbeddingModelName(StrEnum):
"""Common Ollama embedding models"""
NOMIC_EMBED_TEXT = "nomic-embed-text"
ALL_MINILM = "all-minilm"
class OpenRouterModelName(StrEnum):
"""https://openrouter.ai/models"""
GEMINI_25_FLASH = "google/gemini-2.5-flash"
class OpenAICompatibleName(StrEnum):
"""https://platform.openai.com/docs/guides/text-generation"""
OPENAI_COMPATIBLE = "openai-compatible"
class FakeModelName(StrEnum):
"""Fake model for testing."""
FAKE = "fake"
AllModelEnum: TypeAlias = (
OpenAIModelName
| OpenAICompatibleName
| AzureOpenAIModelName
| DeepseekModelName
| AnthropicModelName
| GoogleModelName
| VertexAIModelName
| GroqModelName
| AWSModelName
| OllamaModelName
| OpenRouterModelName
| FakeModelName
)
AllEmbeddingModelEnum: TypeAlias = (
OpenAIEmbeddingModelName
| GoogleEmbeddingModelName
| OllamaEmbeddingModelName
)